ニューラルネットワーク
前回ご説明したように、ディープラーニングは脳の神経細胞をモデルとして、ある神経細胞から次の神経細胞に情報(刺激)が伝達される様子をシミュレートすることで、これを人工知能に応用しようというものです。このモデルをニューラルネットワークと呼びますが、その基本的な考え方は、図1に示すようにごく単純なものです。
ディープラーニングのモデルとその実装
ディープラーニングではニューラルネットワークモデルを使って、情報の伝わり方をシミュレーションしますが、そのためにはノードに伝えられた入力信号を元に、次のノードへの出力信号の大きさを決定する必要があり、その作業をコンピューターで処理できるように数式の形で表したモデルを作成します。図2はその様子を模式的に表したものです。
Y = h(XW + B)
ここで、Wは入力信号に対応する係数を要素に持つn行m列の行列
のように、行列を使った計算式を使って出力信号の値を算出します。
これで1つの層からの出力信号が求まり、それを次の層の入力信号として同様の計算を数珠つなぎに行ってゆくことで最終的な出力信号(結果)が求まることになります。つまり、ディープラーニングによる推論は、図3のように巨大な行列の計算をニューラルネットワークの層の数だけ繰り返し行う計算業務と見ることができます。

ディープラーニング用サーバーとGPU
現在ディープラーニング用サーバーとして販売されているコンピューターの多くはGPU(Graphics Processing Unit)を搭載しています。GPUは、その名前が示すように本来は画像処理用に開発された装置です。それがなぜディープラーニングと関係するのでしょうか。 先に述べたように、ディープラーニングでは大量の行列計算を行う必要があります。このため、ディープラーニング用のサーバーには非常に高い処理能力が求められます。これを通常のCPUで賄おうとするとCPUのコア数を大幅に増やす必要があり、サーバーのコストが大幅に上がってしまうという課題があります。 これに対して、画像処理のように高速でデータを並列処理することを目的に設計されたGPUは、ディープラーニングで多用される行列計算に適したプロセッサーと言えます。実際、行列計算では、GPUはCPUの10倍以上の処理能力を発揮することが知られています。 たとえば、10層程度のニューラルネットワークの場合、約10億個のパラメーターのチューニングが必要になると言われていますが、この計算を従来のCPUで処理しようとすると1年ぐらいの時間がかかってしまいますが、この処理をGPUで行うと、30日程度で完了することができます。 CPUと比較的安価なGPUを組み合わせ、ディープラーニングで必要な行列計算はGPUで実行し、GPUが苦手とする分岐処理やメモリーをランダムにアクセスするような処理をCPUで実行することで、コストパフォーマンスの高いディープラーニング用サーバーを構成することができます。現に、GPU Technology Conference 2016の基調講演で、IBMのチーフ・テクノジー・オフィサーであるロブ・ハイ氏はGPUを利用することでWatsonの学習速度が8.5倍向上したことを明らかにしています。CPU-GPU混成サーバーの考慮点
一般的なディープラーニング用サーバーにおけるCPUとGPUの接続概念図を図4に示します。
筆者
笠毛 知徳
日本アイ・ビー・エム株式会社
サーバー・システム事業部
データ・セントリック・コンピューティング営業部長
<バックナンバー>
第1回 [入門編] いまさら聞けないディープラーニング、機械学習