2019年10月11日金曜日

MATLABの強化学習Toolboxと自作Javaで簡単なGrid World探索

【要旨】MATLAB(R2019a以降)には、強化学習用のToolboxがある。それを使った簡単なGrid Worldの強化学習例題を試行した。同時に、自作Javaプログラムでも同じ例題を実行して理解を深めた。

 前回の強化学習の記事では、参考文献[1]に従って、行動価値関数を計算するためのQ学習を、Javaプログラムを自作して、3x3の簡単なグリッドに対して行いました。そのプログラムを、もう少し複雑な例題に適用してみたいと思っていました。それに最適な例題が、最近アナウンスされたMATLABのReinforcement Toolboxの解説に載っていました。それをやってみました。

 その例題の概要は図1のとおりです。詳細は、参考文献[2]をご参照下さい。5x5のグリッドワールドで、開始状態から終了状態までの、累積報酬が最大になる経路を学習させるものです。可能行動は、東西南北の4方向。障害物があり、また、special jump(ワープ)が設定されています。どの動きも次の状態で-1の報酬を得ます。罰としてです。例外は2つです。最終状態に達した場合は+10の報酬、また、特定の状態に到達した場合のみ、無条件に特定の状態にワープし報酬+5が動的に得られます。



これをQ学習で解くMATLABプログラムの主要部は図2のとおりです。Reinforcement Toolboxを使っているのが特徴です。詳細は、ここには書けませんが、これはPythonがMATLABになり、KerasがReinforcement Toolboxになったような感じです。


 これを学習(training)させた結果が図3です。結論として、赤丸の軌跡が最適経路であることを学習できました。そして、その経路で得られた累積報酬額は、+11です。これが可能な累積報酬の最大値であることは明らかです。


 今回の記事の本題は、実は、上に示した自作Javaプログラムでこの例題を解くことでした。結論を述べますと、自作プログラムでも同じ結果が得られて、ひと安心というところです。その結果が図4です。図4の右側は、各状態での行動価値関数を示しています。すなわち、赤い矢印は、その状態で、4方向の行動のうち、最大の行動価値(複数個あり得る)があることを示しています。したがって、赤い→をたどると最適経路となります。この学習の行動選択においては、ε-Greedy(単純なランダムではなく)を採用してみました。


 最初に述べたとおり、今回は、自作Javaプログラムの動作を確認するのが主な目的であり、MATLABのReinforcement Toolkitの最も簡単な例題を対象としたに過ぎません。このToolkitは、もっと複雑で規模が大きい問題において、その真価を発揮しそうです。記述の簡便さだけでなく、高性能CPU/GPUや、Hadoopのような分散並列機構もバックで利用できるようになっているようです。

 上記のようなグリッドワールドの問題でも、規模が大きくなると行動状態価値関数(Q値)の計算は次第に困難になることは明らかです。したがって実問題では、「関数近似法」が必要となります。関数近似のひとつとして、deep neural networkを利用するのが深層強化学習(DQN: Deep Q-Network 等)であり、これが現代の主流となっているようです。これについても、調べて書いて行く予定です。

【参考文献】
[1] 大内東、川村秀憲、山本雅人:マルチエージェントシステムの基礎と応用―複雑系工学の計算パラダイム、コロナ社、2002.(特に、3.2 強化学習、pp.70-90)
[2] 以下は、MATLAB(R2019a, R2019b)の強化学習用ツールボックスの説明
・Reinforcement Learning Toolbox
https://jp.mathworks.com/help/reinforcement-learning/index.html?s_tid=CRUX_lftnav
・Train Reinforcement Learning Agent in Basic Grid World
https://jp.mathworks.com/help/reinforcement-learning/ug/train-q-learning-agent-to-solve-basic-grid-world.html
・Create Custom Grid World Environments
https://jp.mathworks.com/help/reinforcement-learning/ug/create-custom-grid-world-environments.html
・Load Predefined Grid World Environments
https://jp.mathworks.com/help/reinforcement-learning/ug/create-custom-grid-world-environments.html


0 件のコメント:

コメントを投稿