問題:
グリッドの世界で簡単なタスクを実行するようにエージェントをトレーニングしました(障害物にぶつからずにグリッドの一番上に移動します)が、次の状況が常に発生するようです。それは状態空間の簡単な部分(障害物なし)にあるため、強力な正の強化信号を継続的に取得します。次に、それ自体が状態空間の難しい部分(2つの障害物の隣にくさび)であることがわかった場合、以前と同じアクションを選択するだけで、効果はありません(上昇して障害物にぶつかります)。最終的に、この値のQ値は負の報酬と一致しますが、この時点で、他のアクションのQ値は、状態空間の簡単な部分で役に立たないため、さらに低くなります。そのため、エラー信号はゼロになり、誤ったアクションは常に発生します。選ばれました。
どうすればこれを防ぐことができますか?私はいくつかの解決策を考えましたが、どれも実行可能ではないようです:
- 常に探索が重いポリシーを使用してください。障害物は回避するために最大5つのアクションを実行するため、1つのランダムなアクションは時々効果がないように見えます。
- 悪い行動が繰り返されると悪化するように報酬機能を作ります。これにより、報酬関数はマルコフ性を破ります。これは悪いことではないかもしれませんが、私には手がかりがありません。
- タスクを完了したことに対してのみエージェントに報酬を与えます。タスクは完了するために1000以上のアクションを必要とするため、トレーニング信号は非常に弱くなります。
タスクの背景:
そこで、RLアルゴリズムを試すための小さなテストベッドを作成しました。これは、サットンの本で説明されているグリッドワールドのより複雑なバージョンのようなものです。世界は、0を背景にランダムなサイズの長方形の形で1が配置された大きなバイナリグリッド(300 x 1000)です。1のバンドが世界の端を囲んでいます。
エージェントは、この世界の1つのスペースと、その周囲の固定ウィンドウ(エージェントが中央にある41 x 41ウィンドウ)のみを占有します。エージェントのアクションは、4つの基本的な方向のいずれかに1スペース移動することで構成されます。エージェントは0でマークされたスペースのみを移動できます。1は通行できません。
この環境で実行される現在のタスクは、下部に沿ったランダムな位置から開始して、グリッドの世界の上部に到達することです。上に移動すると、+1の報酬が与えられます。障害物や世界の端にぶつかる動きには、-1の報酬が与えられます。他のすべての州は0の報酬を受け取ります。
エージェントは、ニューラルネット値関数近似器を備えた基本的なSARSAアルゴリズムを使用します(Suttonの本で説明されています)。ポリシーの決定については、e-greedyとsoftmaxの両方を試しました。