ISC 2016においてドイツのフラウンフォーファー研究所のJanis Keuper氏が、「Deep Learning goes HPC」と題して発表を行った。ディープラーニングの処理とその並列化を理解する上で分かりやすいと思うので紹介する。

ISCにてDeep Learning goes HPCを発表するKeuper氏(左端)

ディープラーニングは、基本的には、(画像の場合)入力イメージから特徴を抽出し、入力イメージをN次元の多次元空間の点にマッピングし、それを学習して、コーヒーマグとそれ以外が区別できるN-1次元(図では2次元に分布した点と1次元の分離線)の平面を見つけることである。しかし、数学的に安定な特徴量の抽出は非常に難しく、この部分はエキスパートの人間が行っているという。

入力画像から特徴を抽出し、それをN次元空間の点で表現する。この点の分布をコーヒーマグとそれ以外を分離する線(実際はN-1次元平面)を学習で見つける (以下の図は、すべてISC 2016におけるJanis Keuper氏の発表スライドである)

そして、Feature ExtractionとLearningの部分は、多層のニューラルネットワークを最適化することで実現されている。

次の図に示す、顔の認識の例では、第1層ではエッジを検出し、第2層では特徴的なパーツを認識し、第3層ではオブジェクトを認識しており、この部分が特徴の抽出を行っている。そして、その後は全対全接続のネットワークでイメージのクラス分けを行っている。

前半の層では、エッジからパーツ、オブジェクトのように、順次、高次の特徴を抽出して行く。後半は全対全接続のネットワークでイメージをクラス分けして出力を生成する

同じものを意味する入力(例えば犬)の中での個々犬の入力に違いがあっても、犬と安定に認識できるように学習するためには、大量の入力データが必要となる。そして、大量のデータを学習するには強力なコンピュータが必要となる。

例えば、犬といっても、そのイメージには大きなばらつきがある。それらすべてを犬と認識するには大量のデータを使った学習が必要になる

ディープニューラルネットワークの形態としては、畳み込み(Convolution)型のネットワーク、ループを含んだRNN(Recurrent Neural Network)やLSTM(Long short-term memory)などがある。これらのループを含んだネットワークは、スピーチなどの時系列のデータの理解に使われている。

ニューラルネットワークは、ニューロン、フィルタ、正規化などの計算ブロックからなる層を重ねた多層構造で作られ、個々の入力に対する認識誤差を出力から入力側へと逆方向に伝えながら誤差が小さくなるように各層のニューロンの入力の重みを調整して行く。このプロセスは、Back-Propagationと呼ばれる。

画像認識などを行うCNN、スピーチなどの時系列データを扱うRNNやLSTMなどが使われている

このようなニューラルネットワークの記述と学習の記述を容易にするフレームワークが作られている。代表的なフレームワークとしては、Caffe、Torch、Theanoなどの大学が開発したものやGoogleのTensor Flow、IntelのIDLF、AmazonのDSSTNE、(なぜかMicrosoftのCNTKが入っていない)などがある。

フレームワークを動かすために、一般的に使われるハードウェアはワークステーションやブレードサーバで、2台~8台のハイエンドGPUを装備したものである。残念ながら、学習に使われる確率的勾配降下法(Stochastic Gradient Descent:SDG)は、本質的にシーケンシャルな処理で、多数のサーバを使って高速化することができない。

現状では、ソフトウェアとしては、大学や先進企業が開発した各種フレームワークが使われており、ハードウェアとしては2~8GPUを使うというのが一般的である