見出し画像

【ML-Agentsノーコードトレーナー(第七弾)】ボス撃破の安定化や、個別報酬の可視化などを行いました。

作業内容

ML-Agentsをノーコードで体験できるアセット「ML-Agentsノーコードトレーナー」の進捗報告です。
以下の作業を行いました。

1. ボス撃破の安定化

ShooterSceneの以下の学習パラメータを変更し、1000万ステップまで学習させました。

  • `beta` : エージェントの好奇心を司る学習パラメータです。多様な行動を取らせるため大きく設定しました。

  • `normalize` : AIへの入力観測データ(プレイヤーの座標、速度、ボスのHP、敵弾の情報など)を標準化するためのパラメータです。本シーンのように、各入力データの値が大きく異なる場合、trueに設定することで学習が安定しやすくなる可能性があるため、falseからtrueに変更しました。

2. 個別報酬の可視化

分析を効率化するため、既存の合計報酬のリアルタイムグラフに加え、個別の報酬を表示するリアルタイムグラフも表示するようにしました。
選択した報酬のグラフをまとめて同一のグラフ上に正規化して表示するようにしました。

3. リアルタイムグラフの出力

報酬のリアルタイムグラフを、PNG形式とCSV形式で出力できる機能を実装しました。

  • PNG : 現在表示中の選択した報酬のグラフを保存します。run IDと日時を含むデフォルトファイル名が自動で設定されます。

  • CSV : 現在表示中のグラフにおける各ステップごとの報酬値を出力します。同様のファイル名が設定されます。

4. 学習設定ファイル関連機能の実装

学習設定ファイルのパラメータ(trainer_type、learning_rate、beta、normalizeなど)を、デフォルト値へ復元できる機能を実装しました。
デフォルト用と現行用の2つの設定ファイルを用意し、ワンタップシーン構築時に現行用をデフォルト用で上書きします。
また、Trainerウィンドウから学習設定ファイルのパスをコピーできる機能も追加しました。

結果・所感

全てポジティブな結果が得られました。

1. ボス撃破の安定化

動きがぎこちないものの、高確率でボスを撃破できる学習済みモデルに仕上がりました。
合計報酬も、学習ステップの増加に伴い概ね右肩上がりで順調に伸びていきました。
また、ShooterSceneでは、観測データを標準化する設定と、多様な行動を取らせる設定の双方(もしくはどちらか一方)が、学習に有効であることが判明しました。

2. 個別報酬の可視化

どの報酬が学習結果に影響しているかを視覚的に即座に確認できるようになりました。

3. リアルタイムグラフの出力

  • PNG : Trainerウィンドウに表示中のグラフだけを画像として効率よく保存でき、報告や比較に利用しやすくなりました。

  • CSV : stepごとの報酬値を確認できるため、より詳しい報酬分析が可能になりました。

4. 学習設定ファイル関連機能の実装

  • 復元機能 : 気兼ねなく設定を試行錯誤することができるようになりました。

  • パスコピー機能 : VS Codeなどで対象ファイルをすぐに開いて編集できるようになりました。

本アセットについて

UnityのML-Agentsをノーコードで体験できる、チュートリアル用のアセットです。
UnityのML-Agents関連パッケージのインストールと、`uv`または`venv`を使用したPython仮想環境(PyTorch、mlagentsなど)の構築をワンクリックで行えます。
学習用サンプルシーン「SeekerScene」「JumperScene」「CrowdExitScene」「ShooterScene」もワンクリックで作成できます。

SeekerSceneは、Seekerがランダムに生成されるTargetに接触することを学習するシーンです。
JumperSceneは、Jumperが障害物をジャンプで乗り越え、Targetに接触することを学習するシーンです。
CrowdExitSceneは、複数のPersonが出口前に柱のある部屋から最短で出口へ向かう行動を学習するシーンです。
ShooterSceneは、Shooterがハイスコア獲得やボス撃破を学習する、シンプルな2Dシューティングゲームのシーンです。

報酬(スコア加点ボーナス、ボスへのダメージボーナス、クリアボーナス、被弾ペナルティなど)や、並列学習環境数、その他の各種パラメータ(プレイヤーの移動速度、弾の発射頻度、ボスのHP、敵の出現頻度など)は、スライダーで簡単に調整できます。
「学習開始」ボタンを押すだけで学習が始まり、ステップごとの平均報酬を示すリアルタイムグラフを専用ウィンドウで確認できます。
学習済みモデルを、ワンクリックで複数の対象エージェントへ一括適用して推論させることが可能です。

今後の展望

1. サンプルシーンの拡充

さまざまなシチュエーションのサンプルシーンを追加していきます。

2. ツールの公開

Unity Asset StoreやGitHubに公開します。

開発ツール

  • Claude Code

  • Codex

実行環境

  • Unity 6000.3.10f1

  • com.unity.ml-agents(4.0.2)

  • com.unity.ai.inference(2.5.0)

  • mlagents 1.1.0

  • mlagents-envs 1.1.0

  • Python 3.10.15

  • PyTorch 2.8

動画タイムライン

  • 0:00 1000万ステップ学習済みモデルに推論させる様子

  • 0:05 個別報酬の可視化機能を使用

  • 0:41 ボスの撃破回数の表示(頻繁に撃破, 50回/41秒/16環境, 0.076回/1秒/1環境)

  • 0:42 リアルタイムグラフを出力(2倍速)

関連URL

#ML-Agentsノーコードトレーナー
#Unity
#強化学習
#GameDev
#ShootingGame

いいなと思ったら応援しよう!