「Hindsight Experience Replayを用いたNEAT」
NEAT with Hindsight Experience Replay
数週間前にUnityでNEATを実装した後、その性能を向上させる方法を考えてみました。
以前、強化学習アルゴリズムで使用される新しいテクニックであるHindsight Experience Replayについて読んだことを思い出しました。このテクニックでは、エージェントが到達した失敗状態も、成功したかのように追跡して学習します。
最初はあまり重要視していませんでした。NEATが採用している種分化の方法により、1つの集団は多くの異なる方向でドメインを探索することができます。つまり、1つの種がドメインの特定の領域を探索して収集した経験は、その種の外のゲノムには適用されないということです。しかし、その時に考えたのは、各種が別々の経験のリストを維持するとどうなるか、ということでした。
私はすぐに自分のアイデアをテストするために行動に移しました。
テスト環境
環境は次のように設定されます:
エージェントは左下に生成され、左上の星に到達する必要があります。エージェントは下の2つのプラットフォームに着地するための十分な高さまでジャンプすることができます。
エージェントは次のように見えます。
入力として、エージェントは次を受け取ります(正規化されています):
ゴールの位置とエージェントの位置の差
エージェントの位置
エージェントのy軸速度
エージェントが地面にいてジャンプできるかどうか
エージェントの周りの円状に配置された16本のレイキャストの結果。レイキャストは最も近いプラットフォームまでの距離を返します。
出力として、エージェントは次を与えます:
左に移動するかどうかを示す出力(<0.5)
ジャンプするかどうかを示す出力(>0.5)
設定
各世代の25%は単為生殖によって作成されました。交差で生成される世代の一部には35%の突然変異の確率がありました。各種の最良の2つのゲノムは変更されず、異種間の交差の確率は5%でした。初期世代には2000個のゲノムがあり、最初のプラットフォームを登る能力を持つメンバーが十分にいましたが、その後の世代では500個のゲノムのみとなりました。500世代以内に星に到達するエージェントが見つからない場合、集団は失敗と見なされます。
Hindsight Experience ReplayはNEATとの互換性を確保するために少し調整が必要でしたが、最終的には次のような戦略に落ち着きました:
各世代の終わりに、次の基準を満たす各ゲノムから目標/経験(ゴールの位置が空中に浮いていないことを確認するため)をサンプリングします:
- サンプルは開始地点よりも少し上にジャンプするため、下部でサンプルが行われないようにします。
- サンプルはサンプリングされた他のゴールから一定の距離離れていること。
目標は各ゲノムの種に追加され、各種は別々の目標のリストを維持します。
新しい世代が作成されると、各種に対してゴールリストから2つの目標を割り当てます。ただし、成功率が最も高いゴールが最も割り当てられにくいようにします。なお、新しくサンプリングされた目標は成功率0%と見なされます。各世代は実際の目標に対して1回、サンプリングされた目標に対して2回評価されます。
フィットネスは次の2つの値で計算されます:
(開始距離-最も近い距離)/開始距離
目標に近づいたエージェントを報酬するため
(開始距離-終了距離)/終了距離
目標に近く停留するエージェントを報酬するため
エージェントが長時間底にとどまる場合は、シミュレーションから削除され、ペナルティが与えられます。これは主に評価を加速させるためです。
NEAT with HERでは、報酬は立方され、良い解と悪い解の差を増幅します。これらの値は、エージェントがゴールから遠ざかる場合には負になる可能性があります。
結果
距離報酬のみを使用した標準的なNEATは、この問題で6回中6回失敗しました。NEATは、問題を解決するためには偶発的な突然変異の連鎖が初期段階で重要であるという点で非常に頼りにしています。しかし、それができない場合、左側のプラットフォームを登っても先に進むことができません。
標準的なNEATは一向に高くならない
一方、HERを使用したNEATは比較的うまく機能します。中央値で問題を解決するために149世代(標準偏差:90)がかかり、一度も失敗しませんが、最悪の試行では415世代がかかりました。興味深いことに、HERを使用したNEATは新奇性探索のように展開されました:割り当て方法により、より早期のサンプルが稀になるとエージェントは環境の新しく到達しにくい領域を探索する必要がありました。重要なことは、目標のゴールが偶然に見つかったようですが、さらなるトレーニングでエージェントにステップのシーケンスを覚えずに環境の任意のポイントに到達する方法を教えることができるかもしれません。
サンプルされた目標は探索を促進し、早期収束の可能性を減らします。
ただし、この成果を過大評価しないことが重要です。エージェントのy値に基づいて報酬を与える報酬関数を使用すると、標準的なNEATは中央値で94世代(標準偏差:36)で解決し、評価時間も少なくなりますが、一度失敗します。
結論
HERを使用したNEATは、フィットネス関数を手動で操作せずに一般化と難しい問題の成功を控えめに促進することができます。ただし、これには評価時間の増加と収束の遅さのコストがかかります。興味深いことに、明示的な目標なしでこの方法でエージェントを訓練することも可能かもしれません。もちろん、各種にはトレーニングするために少なくとも1つのサンプル目標が必要ですが、それ以上に、サンプリングと割り当ての戦略は、明示的な目標の有無に関係なく、ドメインの探索を促進します。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles