自ら学習する人工知能
人工知能(AI) というものを実現する上で、古くから厄介な問題とされていきたのが、基本的に人工知能は、最初に入力された知識以上の性能を発揮できないということ。
「人工知能の基礎知識」ロボットとの違い。基礎理論。思考プロセスの問題点まで
もちろんそうであったとしても、あらかじめ大量の知識を仕入れておく事で、高い能力を実現できる。
しかし、現実に存在する様々なパターンに対応できるものを実現するために必要な知識(データ)量はあまりにも多すぎる。
そこで、『機械学習(Machine learning)』が考え出された。
機械学習とはその名の通り、人工知能のプログラム自身が学習する仕組みである。
学習は個々の選択の組み合わせ
機械学習という分野が大いに発展した背景には、 広範囲の不特定多数の人達が、様々な情報を共有する、Web技術の発展がある。
「ネットワークの仕組みの基礎知識」OSI参照モデル、IPアドレスとは何か 「ブラウザ」WEB表示の仕組み。レンダリングはいかにして行われるか?
よくよく考えてみれば、世界のあらゆる事は、選択問題として考えられる。
例えば一つのリンゴを見た時。
それは赤いのか、赤くないのか。
それは食べれるものなのか、食べれないものなのか。
それを美味しいと感じる人は、多いのか、少ないのか。
学習というものの根本は、そのような選択処理にあると考えられている。
だから、物事の一つ一つの選択の正解率を上げる事ができるなら、それは学習しているも同じ。
どんな選択においても、正解(最良)を選び続けれる者を、人は賢いというのだ。
大量のデータを参考に、その選択の正解率を高めていく、という方法こそが、機械学習である。
教師あり学習。教師なし学習
一般的に機械学習は、『教師あり学習』と『教師なし学習』に分類される。
教師あり学習は、「入力」と、その入力に対して「正しい出力」がセットになった訓練データを使う。
入力に対し、正しい出力ができるように、学習させる方法である。
例えば様々な文章を用意して、その文の内容が、生物学関連か、物理学関連か、オカルト関連か、と言ったカテゴリーを正しく分けれるよう、大量のデータを繰り返し選択させていく。
教師なし学習は、入力用のデータのみから、それらのデータの構造を把握、処理させる。
複数のデータの、内部のパターンを探しだす方法でもある。
つまり『クラスタリング』、つまりデータ内から、いくつかの共通ステータスを持つクラスタ(団体)を分けたりする。
例えば、クラスタリングを用いて、あるゲームの売り上げのデータから、そのゲームが男性に人気なのか、女性に人気なのか、子供に人気なのか、大人に人気なのか、というような情報を探りだしたりできる。
いかにしてカテゴリーを分けるか
人工知能でなくても、分けるという行為を考える時、それは幾何学的に(ようするに形で)表現することができる。
例えば様々な本を、「科学」、「遊戯」、「魔術書」に分類したいとする。
その分類を人工知能に学習させる場合、例えばまず各ジャンルの本の中で頻出する単語を100ほど選び、それらを、平面空間に配置して、ジャンルの線引きをしていく。
そうすると、三つのジャンルそれぞれの空間が作られる訳だが、そこで新しくデータ(本)を入力。
その本が科学の本で、科学の空間に分類されたならば、機械学習は成功したということになる。
例えば、生物、宇宙、コンピューターといった単語が多ければ、科学。
ゲーム、レベル、ターンといった単語が多ければ、遊戯。
錬金術、カバラ、ヨーガといった単語が多ければ、魔術書。
という感じである。
五つの方法
問題は、分ける、という行為である。
いわば、空間に置かれた様々な本の線引き。
空間に置かれた本同士の位置関係を、いかに解釈し、分けていくか。
その代表的な分類の方法として、『最近傍法(Nearest neighbor)』、『ナイーブベイズ法』、『決定木』、『サポートベクターマシン』、『ニューラルネットワーク』の五つがある。
最近傍法
線を引くというのでなく、ともかく、先に置かれてあるデータの中の、一番近いものと、同じカテゴリーとみなすというもの。
最も単純な方法とされていて、シンプルゆえに欠点もわかりやすい。
ようするに、ノイズ(間違った事前データ)の影響を受けやすい。
例えば、本来は遊びに分類されるべき本が、科学の空間範囲に置かれてあったとする。
偶然その近くに置かれた新たな本は、やはり遊びに分類されてしまう。
ひとつ間違った分類のされたデータが、周囲の全てを間違えさせてしまう、というわけだ。
ナイーブベイズ法
確率、統計の分野の「ベイズの定理」というのに基づいている。
例えば新たな本に「細胞」という単語が使われてて、それがもっとも使われてるのが、科学のカテゴリだとする。
その時、科学カテゴリーにおいて細胞が使われる確率と、全てのカテゴリーで、細胞が使われる確率の、比率を計算する。
その比率が極端なほど、そのカテゴリーに点数を設定。
例えば細胞という単語に関して、「科学カテゴリー:全カテゴリー = 10:1」なら、科学に1点という感じである。
同じようなことを、もっと様々な単語で試し、 最終的に最も合計得点が高くなったカテゴリーに、その新たな本を分類する。
決定木
特定の属性が、必要条件以上入ってるかどうかで、選択決定していく方法。
例えば、物理という単語が入ってる集合と、入ってない集合を作る。
さらに、化学という単語が入ってる集合と、入ってない集合を作る。
どちらの集合にも属している本があるなら、それは科学として分類するというような方法。
ようするに、条件分岐のツリーを作っていくわけである。
ただしこの方法は、わかりやすくはあるが、あまり精度は高くないと考えられている。
サポートベクターマシン
これはわりとあっさりした分け方であるが、精度は高いとされる。
空間に置かれた本は、大量の点として区別できる。
その中でも、科学に分類されてる点、 遊びに分類されている点、魔術に分類されてる点の中で、最も離れた点同士の、中間に線引きするという方法。
しかしこの方法は、大きなデータを対象とする際、計算に時間がかかるのが欠点とされる。
ニューラルネットワーク
これはニューロン(神経細胞)と、シナプス(神経細胞同士の情報を受け渡しするための繋がり)で構成された、神経ネットワーク。
つまり、人間の脳神経回路を真似たもの。
神経ネットワークにおいて、あるニューロンは、他のニューロンとシナプスで繋がり、電気信号をやりとりする。
ニューラルネットワークでは、ネットワークの各『ノード(中継ポイント。ネットワーク同士の接点)』が、シナプスを模している。
下層の人工ニューロンから受け取った値(0か1)を、かけ合わせて、その和を、『シグモイド関数』という関数式に当てはめる。
一応説明しておくと、上記の式のeはネイピア数。
aはゲインと呼ばれ、問題内で統一されてればなんでもよい数(普通は1が使われる)。
シグモイド関数は、数学的に場合分けしやすくしてくれる。
あるいは、神経ネットワークのよりリアルな再現として、必要な処理過程とされる。
機械学習の弱点。特徴量の選択
機械学習最大の弱点は、『特徴量(Feature value)』とされる。
特徴量とは名の通り機械学習の入力に使う、学習する対象の特徴を量的に表した変数である。
どのような機械学習においても、何らかの特徴量を利用し、その対象について学習する。
だが、その特徴量に何を選ぶかで、学習の精度は大きく変わってくる。
「ディープラーニング。深層学習」 画像認識する仕組み、原理
例えば何らかの形を見たときに、その形が何と呼ばれるものかを判断するような人工知能を作りたいとする。
その学習に使う特徴量として、様々な物質の色や、化学組成などの数値を使ったとしても、まったく望むような性能には成長しないと考えられる。
適切な特徴量が与えられた時、機械学習は大いに成果を発揮する場合もあるが、問題はその適切な特徴量というのを、最初っからコンピューター自身が選ぶことが難しいこと。
むしろ我々は、どうやって選んでいるのだろうか。
親や先生から、適切な特徴量を与えられている、と考えることもできるが、なら最初の誰かは、どうやって学んだのだろう。