「人工知能(AI:Artificial Intelligence)」は、1950年代にはパーセプトロンが考案されてブームになったが、できることが限定されていることから下火になった。その後も1980年代にはエキスパートシステムのブームが起こり、わが国では第5世代プロジェクトが推進された。しかし、エキスパートシステムは開発が難しく、適用性が限定されているという問題があり再び下火となった。

第3次のブームは、IBMのDeep Blueが人間のチェスチャンピオンを破った1997年ころからである。その後、2005年にはDARPAのロボットカーチャレンジで、スタンフォード大学の車が砂漠のコースの無人走行に成功した。これらは、ある意味で、特定の目的のために作られた人工知能システムであったが、2011年にはIBMのWatsonがJeopardy!で人間のチャンピオンを破り、広い範囲の問題に対する人工知能の可能性を示した。2012年には、画像認識の分野でトロント大学のHinton教授のグループが素晴らしい成績を上げて、「ディープラーニング」が注目されることになった。

ディープラーニングとはいかなるものかを、2015年に開催された「NVIDIA GTC」におけるGoogleのJeff Dean氏の基調講演とそのスライドを基にして説明する。

ディープラーニングとはどのようなシステムか

ディープラーニングのシステムは、人間の脳についての知識を利用して階層的に認識を行うシステムである。

次の図の正方形の中に描かれている●や○は神経細胞のような働きをする。猫の画像を第1層の神経細胞に入力して処理を行い、その出力を第2層の神経細胞に入力して処理するという多層構造になっており、脳がそれぞれの場所でだんだんと高次の抽象性を持った情報を抽出するのと似たような処理を行い、後の層になるほど抽象度の高い情報を抽出する。

ディープラーニングシステムは、脳を構造の知識を利用して、多層の神経細胞でデータを処理する。後の層になるほど高次の抽象性を持つ情報を抽出する

次の図の上側のニューロンは、下のx1、x2、x3と書かれたニューロンからの信号にそれぞれ、w1、w2、w3という重みを掛けて、それらの総和を取り、総和を非線形の関数(ここでは、正の入力はそのままで、負の入力は0にするmax(0,x))を通して出力を作る。また、単に総和だけではなく、定数のバイアスを加えるというケースも多い。

重みは正の値とは限らず、負の値を持つ場合もある。ここでは図を書く都合で入力は3つしか描かれていないが、実際にはもっと多数の入力を持ったニューロンが使われる。また、max poolingと呼ぶ、小領域のデータの最大値を選択する演算が追加されることが多い。

ここで最初の層のxiは入力画像のピクセルで、単純な数値ではなく、RGBの値などを持っている。2層目以降の出力は、ネットワークの設計に依存し、もっと複雑な情報を持つ場合が多いが、最終出力では0~1の範囲の1つの数値という場合もある。

ニューロンは、それぞれの入力xiに重みwiを掛けて、それらの総和をとり、さらに非線形の関数を通した値を出力する。この図には描かれていないが少領域の出力の最大値を選択するMax Poolingがこの後に加えられることが多い

そして、このようなニューロンからなる層を重ねたニューラルネットワークを構成する。通常、この図のように、一番下の層が入力層で、一番上の層が出力層として描かれる。そして、中間の層は隠れ層と呼ばれる。

この図ではニューロンの数が少ないが、実際には各層のニューロン数はもっと多いし、層数も多いネットワークが使われる。

ニューラルネットワークは、ニューロンの層を重ねて作る。一番下が入力層、一番上が出力層で、中間の層は隠れ層と呼ばれる

このニューラルネットワークが、猫の画像を見て、猫と認識できるかどうかは、学習に掛かっている。最初は、まったく認識出来ないのであるが、猫の画像の場合は、出力層が猫と出力すれば正解と教え、猫でない画像の場合に猫と出力すれば誤りと教えてやる。

なお、猫であるかどうかだけを認識するシステムなら、出力は1つで猫らしさを示す値だけを出力すれば良い。手書きの郵便番号認識システムでは出力は10本あり、それぞれの出力は0~9の数字らしさを示す数値を出力する。

学習は、例えば、次の図でxは入力画像で、yは猫らしさの正解の値である。1つの画像を選び、xを入力して、ネットワークのニューロンの出力を順に計算して出力を得る。この値が正しくない場合は、出力が正解yに近づくよう重みを変更する。これを多数の猫の画像を使って行う。

一般的に猫を認識するには、いろいろな種類の猫のいろいろな姿勢で、背景もいろいろな種類の画像を用いて学習させる必要がある。インターネットから多数の画像が集められるようになったことが、ディープラーニングの認識精度が向上した大きな理由の1つである。また、多数の画像で学習を行うので、計算量は膨大であるが、コンピュータが速くなり、最近ではGPUを使って、さらに高速に学習を行えるようになったことが貢献している。

学習では、1つの入力画像xに対して、ニューラルネットワークの出力を計算し、正解yと比較し、出力がyに近づくよう重みwiを変更する