人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習、Deep Learning、Kerasに関する記事が多いです。



ニューラルネットの並列化

強化学習の並列化を行っている研究(昨日の)はテーブル形式の状態行動空間(Qテーブル)を各プロセッサに分割する方法が取られている。しかし、状態行動空間が巨大な場合はテーブル形式で表すことはできずニューラルネットなどを用いて状態を汎化する方法がとられる(関数近似)。そのようなわけで、ニューラルネットを用いた強化学習の並列化はどうすればよいか気になっていた。

ニューラルネットの並列化はどうやるか?という点がそもそも疑問。ニューラルネットはPDP(Parallel Distributed Processing:並列分散処理)とも呼ばれそれ自身で並列分散計算を行っているが、並列計算機への実装という観点からはどうか?

あるデータ群Aで正しく出力するように学習したニューラルネットAとそれとは別のあるデータ群Bで正しく出力するように学習したニューラルネットBがあるとする。このとき、AとB両方のデータ群を入力したとき正しく出力するニューラルネットCを再学習することなしに得られるのかが疑問だった。もしこれができるならAとBを並列に独立して学習させその結果をあわせてCを作れば学習は速くなるだろう。

調査した結果、次の2つの論文が答えを与えてくれた。

この論文では、ニューラルネットワークの学習方である誤差逆伝播法を分散メモリ型の並列計算機上に実装する3つの方法を議論している。その中で学習セット並列モデルというのがそれっぽい。

△w = ...            (5)   誤差逆伝播法で重みの修正量を求める式(略)
w(t) = w(t-1) + △w  (6)   重みの更新式

学習セット並列モデル 式(6) からわかるように、ネットワークの新しい重みが学習前の重みと誤差修正量の線形和であることを利用し、学習セットを分割して並列学習を行う手法を学習セット並列モデルと呼ぶ。バックプロパゲーション学習においては、複数の学習パターンを何度もネットワークに提示して重みを修正していくが、学習パターン数 P を p1, p2, ... , pn の n 個の部分に分割し、n 個のPE(Processing Element)で式(5)により重みの修正量を並列計算するモデルである。

要するに個々の学習データで並列に n個のニューラルネットを求め、最後に各ニューラルネットの重みを足し合わせれば、全学習データを学習したニューラルネットが1つできるってことらしい(重みは1を越えたりしないのか?)。今度実験してみようと思う。