Open akarimoon opened 4 years ago
今回提案されたアルゴリズムは3つのモジュールに分解できる。
まず、プログラム文を読み取るProgram Interpreter。これは学習するモジュールではなく、単にコードをparseして木構造に直すやつ。葉ノードが行動する部分になり、if文などが葉ノードでない部分になる。このif文などをqueryにして次のモジュールに入れる。
生成されたqueryはPerception Moduleへインプットされる。Perception Moduleはif文などの内容のquery(そこに木があるか、など)と環境情報に対してqueryの答えをYes/No (1/0)のアウトプットを返す。
最終的にYes/Noの結果と環境情報、および目標を元にPolicyモジュールが行動を決定する。
Perception Moduleはこんな感じ。queryはOHEされて全結合層へ、マップ情報はCNNへ、インベントリ情報は全結合層へ。最後それらがもう数段の全結合層に入っていって最終的にYes/Noの確率(多分)が出力される。
Policyも独自の改良をしていて、ConcatやEncoderを使わず、全結合層とCNNの組み合わせで環境上とゴールから行動を出力している。実際、性能比較は下の図な感じ。
エージェントがいる空間は2次元グリッド空間。プログラム文の内容をクリアしたら+1の報酬が得られる仕組み。
4500ほどのtraining setと500ほどのtest set+test setに長さと複雑度を増したtest-complexで汎化性能を見た。
結果、LSTMなどを使った場合と比べて断然性能が良い。test-complexに対する性能もやや落ちたもののよい性能なのでは。
疑問点
論文リンク
https://openreview.net/pdf?id=BkxUvnEYDH
公開日
09/26/2019
Summary
ICLR2020のSpotlight Paperに選ばれた論文。RLにおいて、エージェントに動作を指示する際に今まで文章を与えてそれを実行させる、という手法が研究されていたがなかなか精度を出せなかった。今回の提案された手法はその指示内容をプログラム文を用いて表すというもの。