ディープラーニング入門

中学の数学で、次のような直線の方程式を習いました。

y = ax + b

変数xとyがあり、aは直線の傾きを表す定数で、bはy切片(y軸との交点)を表す定数です。

a = 2、b = 1とすると、

y = 2x + 1

となり、図1のように表されます。


図1.y = 2x + 1

そして、xとyを正の整数とした上で、yの値を不明とし、xに様々な値を代入することでyの値を当てるゲームを考えます。

すると、

x = 1のとき、y = 3
x = 2 のとき、y = 5
x = 3のとき、y = 7
and so on.

このようにして、正解となるyの値が得られるまで計算が繰り返されます。

このゲームで行われていることは、yの値が正解になるまでxの値を調整することです。

この変数の値の調整が、人工知能の学習に相当します。

以上のシンプルな考え方を脳の仕組みを模倣することで応用したものが、1943年にアメリカの神経生理学者Warren Sturgis McCullochと数学者Walter J. Pittsが提案したartificial neuronです。

artificial neuronは、図2に示されるように、n個の入力変数x(1),x(2),…,x(n)に対して、それぞれ重み付け変数w(1),w(2),…,w(n)を掛け、それらの和を計算し、閾値θを超えた場合に出力変数yが1となり、それ以外の場合にyは0となる関数です。


図2.Artificial Neuron

artificial neuronの学習では、各x(i)に対してw(i)とθを調整します。

例えば、画像が猫かどうかを判定する場合、各x(i)に画素(ピクセル)を代入します。

そして、画像が猫の時にy=1、猫ではない時にy=0となるように、各w(i)とθを調整します。

しかしながら、artificial neuronではyの値は閾値を超えるかどうかで決定される、つまり、直線を引いてそのどちら側に存在するかという線形分離可能な問題しか扱えないため、学習には適していません。

そこで、1958年にアメリカの心理学者・計算機科学者Frank Rosenblatがartificial neuronを組み合わせたperceptronを提案しました。

perceptronは、図3に示されるような入力層と中間層と出力層からなる3層構造のニューラルネットワークで、3階層以上のニューラルネットワークでは線形分離不可能な問題を解くことができます。


図3.Perceptron

人工知能の分野では長年の間、perceptronが主要な人工知能の中の一つと見なされてきました。

ところが、2012年に開催された画像認識コンテストILSVRC(Imagenet Large Scale Visual Recognition Competition)において、カナダのトロント大学のGeoffrey Everest Hinton教授らが開発したSuperVisionが他を引き離して勝利し、SuperVisionに採用されたディープラーニングが注目されるようになりました。

※Googleは2013年にGeoffrey Everest Hinton教授らが立ち上げたカナダの人工知能ベンチャー企業DNNresearchを買収し、翌年イギリスの人工知能ベンチャー企業DeepMind Technologiesを買収しました。

ディープラーニングは多階層のニューラルネットワークですが、従来のニューラルネットワークとは根本的に異なる構造となっています。

従来のニューラルネットワークでは、猫の画像の入力に対して、猫の画像であるという出力を返しますが、ディープラーニングでは猫の画像の入力に対して出力も猫の画像とした入力と出力が同一のオートエンコーダー(autoencoder; 自己符号化器)を用います。

オートエンコーダーでは、図4に示されるように、x(i) = y(i)となるようにw(i)とθを調整しますが、中間層のニューロンの個数を入力や出力のニューロンの個数よりも少なくすることでデータが圧縮され、データの特徴が中間層のw(i)やθによって表されるようになります。


図4.オートエンコーダー

従来のニューラルネットワークでは、猫の画像の入力に対して、猫であるという出力を与える、すなわち、入力画像の一つ一つに対して猫であるかどうかを教える必要があり、このような学習法を教師あり学習と言います。

一方、オートエンコーダーでは入力と出力が同一であるため、入力画像を与えさえすればよく、それがどのような画像であるかを教える必要がないため、これを教師なし学習と言います。

したがって、オートエンコーダーでは多くの画像を与えるだけで学習を進めていくことができます。

さて、ディープラーニングでは、データの特徴を表すオートエンコーダーの中間層を次の層の入力データとします。

つまり、図5に示されるように、1層目のオートエンコーダーの中間層を2層目のオートエンコーダーの入力とし、2層目のオートエンコーダーの中間層を3層目のオートエンコーダーの入力とする、といったように多段階にオートエンコーダーの中間層を接続し、データの特徴をより濃密にしていきます。


図5.オートエンコーダーの多層化

そして、図6に示すように深く何段にも重ねていくことでディープラーニングとなります。


図6.ディープラーニング

ディープラーニングを実際に用いる際には、まずオートエンコーダーによってデータの特徴の教師なし学習を行い、十分に学習が済んだ後で、学習したデータの特徴が何であるかを教師あり学習で記憶させます。

こうすることで、コンピュータがまるで人間のように自然に物事を覚えていくようになります。