ニューラルネットの例 - AlexNet
次の図9-2は、2012年のILSVRC(International Large Scale Visual Recognition Challenge)で優勝した「AlexNet」の構造を示すものである。AlexNet以前は、ILSVRCでは、画像認識の専門家が設計した画像処理プロセサなどが使われてきたが、ディープラーニングを使うAlexNetが抜群の成績で優勝し、画像認識の研究者に大きな衝撃を与えた。このため、それ以降のILSVRCでは大部分の出場者がディープラーニングを使うように切り替わってしまった。
この図の見方であるが、左が入力層で、224×224×3の画像が入力される。そしてここから11×11ピクセルの領域を取り出して次の層の入力とする。したがって、第2層の各ニューロンは11×11×3=363入力となる。第2層のニューロンは、この363の入力ごとに異なる重みを掛け、それらの和を取る。
入力層からの11×11ピクセルの取り出しは4ピクセルずつ位置をスライドして行う。このため、第1層は55×55点となる。そして、第1層の各点は48個のニューロンを持つ。なお、これで計算すると、第1層のニューロンの個数は290,400となるが、論文には253,440と書かれており、図から計算した値と少し異なっている。
第1層のニューロンの出力は、値が負の場合はゼロにするReLU処理を行い、さらに3×3の領域の出力の最大値を取るMax poolingという処理を行う。
第1層の1つのニューロンは363入力のそれぞれに独立の重みを掛けて合計を取るので、363回の積和演算を行う。それが55×55×2×48ニューロンあるので、第1層だけで約105M積和演算、あるいは積と和を2演算と数えると約210MOPs(Mega OPerations)という膨大な計算となる。なお、×2となっているのはAlexNetでは2個のGPUを使って計算を分担させており、図の上側の半分はGPU1での計算、下の半分はGPU2での計算の部分である。ニューロンの接続は同じであるが、入力の重みはGPU1とGPU2では異なっているので、同じ処理を2重に行っているわけではない。
第2層は第1層の出力の5×5点の領域の25×48信号を入力とし、各点には128個のニューロンがある。そして、第2層の出力にもMax poolingが付いている。第3層は13×13点で、各点には192個のニューロンがある。第3層は、第2層の3×3点の9入力×128ニューロンの出力を入力として使っている。第4層は第3層と同じ13×13点で192ニューロンという構成である。第5層は13×13点で128ニューロンとなっている。
これらの畳み込み層は、2層と3層の間の接続では、GPU1とGPU2の間の接続があるが、その他の層では、GPUをまたぐ接続を無くして、GPU間のデータ転送を減らす設計となっている。
第6層から8層は、全対全で繋がっている密結合ネットワークである。最後の第8層は出力を作る層で、ILSVRCのルールである1000個の認識カテゴリに対応して出力が出てくるようになっている。この数値が高い出力が正解の確率が高いと認識されたものである。
ディープラーニングによる推論の使い方は、色々とある。GoogleのAlphaGoは盤面の白黒の石の位置を入力して、次の着手を求めるという推論である。Webサービスでは、写真を認識してキャプションを付けるというような使い方が多い。また、ドワンゴのニコニコ動画では、リアルタイムでユーザから多くのコメントが寄せられるが、不適切なコメントは削除しなければならない。人間による作業を軽減するため、コメントが入力として、不適切かどうかを判定するニューラルネットを開発している。これも推論である。このように実用化の局面では、推論の使用が多くなるとみられる。
このため、NVIDIAは高いエネルギー効率で推論を実行できるGPUとして、Tesla P4を提供している。