Unity ML-Agentsでは、エピソードの完了を定義することで、エージェントがどのタイミングで学習をリセットするかを制御できます。
エピソードは次の2つの主な方法で完了します。
EndEpisode() 関数は、エージェントが特定の条件を満たした場合にエピソードを終了させたいときに使用します。
例えば、エージェントが目標に到達したり、衝突した場合に呼び出されます。以下は、エージェントが特定の条件を満たした際にエピソードを終了するサンプルコードです。
public override void OnActionReceived(ActionBuffers actions)
{
// 行動が評価されるたびに呼ばれる
if (goalReached)
{
SetReward(1.0f); // ゴールに到達した場合の報酬
EndEpisode(); // エピソード終了
}
else if (hitObstacle)
{
SetReward(-1.0f); // 障害物にぶつかった場合のペナルティ
EndEpisode(); // エピソード終了
}
}
このように、エージェントが特定の目標に到達したり、障害物にぶつかるなどの事象が発生したときにエピソードを終了させることが可能です。
Unity ML-Agentsでは、MaxStep プロパティを使用して、1つのエピソードが最大何ステップまで続くかを定義することができます。
この設定により、エージェントが定められたステップ数に到達すると、自動的にエピソードが終了します。エージェントが目標を達成できない場合でも、学習が止まらずに進行するために有効です。
以下は MaxStep の設定例です。
エージェントが最大ステップ数(例では10000ステップ)に到達した場合、自動的にエピソードが終了し、次のエピソードが開始されます。
これらの機能を適切に活用することで、エージェントの学習プロセスを効率的に制御することができます。
関連記事:
【Unity】Unityで親オブジェクトにアクセスする方法 - Django Girls and Boys 備忘録
【Unity】Unityで背景を設定する方法 - Django Girls and Boys 備忘録
【Unity NavMesh】NavMeshObstacleを追加する方法 - Django Girls and Boys 備忘録
【Unity】NavMesh、NavMeshAgentの使用方法 - Django Girls and Boys 備忘録
【Unity】オブジェクトの影をなくす方法 - Django Girls and Boys 備忘録
【Unity】オブジェクトの影(シェイド)を消す方法 - Django Girls and Boys 備忘録
【Unity】「Unityの教科書」 初心者から中級者まで、ゲーム開発の頼れるガイド - Django Girls and Boys 備忘録
【Unity】「ML-Agents 実践ゲームプログラミング」でPyTorchのインストール時にエラーが発生した時の解決方法 - Django Girls and Boys 備忘録
【Unity】ML-Agentsにおけるエピソード完了 - Django Girls and Boys 備忘録
【Unity】『UnityではじめるML-Agents実践ゲームプログラミング』について - Django Girls and Boys 備忘録