共有メモリ型並列計算機上での強化学習
今日は、共有メモリ型並列計算機で強化学習を実装する前段階としてスレッドを使って逐次計算機上で実装してみた。
構想しているのは下の図のような感じ。共有メモリ上にQテーブルがある。異なるプロセッサ(PE:Processing Elementと表記)上で動いているエージェントが非同期にQテーブルを更新する。各エージェントは「共有された」Qテーブルに基づいて行動決定する。
各エージェントの初期状態を変えることによってQテーブルの状態行動空間全体を効率よく探索できるだろう。しかもエージェントごとに方策(行動決定の方針)を変えることによって何かいい効果が出てくるのではと期待中。また並列計算機上で実装すれば状態行動空間の探索時間が早くなり学習が高速化されるはず。
結果だがスレッドで逐次計算機上なので実行時間の短縮はもちろんできなかった。しかし、エージェントの数を増やすことによって収束までのエピソード数が短くなることが確認できた。同期を取らずにQテーブルを各エージェントがばらばらに更新しても学習はちゃんと収束していたのでよかった。
こんなのやるまでもなく自明かも・・・