これまでの作業で、ロボットは歩く準備が整いました。 あとは、私たちが先生となって「トレーニング」を開始するだけです。
この最終回では、以下の手順を解説します。
- 学習プラン(YAML)の作成: AIの学習スピードや性格を決める設定ファイル。
- トレーニング開始: コマンド一発で学習をスタートさせる方法。
- 学習の監視: 「TensorBoard」を使って、AIの成長グラフを見る方法。
- モデルの書き出し: 賢くなった脳みそ(.onnx)をゲームに組み込む。
これが終われば、あなたの画面の中で、オリジナルロボットが永久に歩き続けるようになります!
第12章:学習設定ファイル(YAML)を作る
AIに学習させるには、「どれくらいのペースで学ぶか?」「何回繰り返すか?」といったスケジュール表が必要です。これを設定するのが YAML(ヤムル)ファイル です。
- Unityプロジェクトフォルダの中に、
configという新しいフォルダを作ります(Assetsフォルダの外でもOKです)。 - その中にテキストファイルを作り、名前を
walker_config.yamlに変更します。 - テキストエディタ(メモ帳やVS Code)で開き、以下のコードをコピペしてください。
YAML
behaviors:
WalkerBrain: # Vol.2で設定した「Behavior Name」と完全に一致させる!
trainer_type: ppo
hyperparameters:
batch_size: 2048
buffer_size: 20480
learning_rate: 0.0003
beta: 0.005
epsilon: 0.2
lambd: 0.95
num_epoch: 3
learning_rate_schedule: linear
network_settings:
normalize: true
hidden_units: 512
num_layers: 3
reward_signals:
extrinsic:
gamma: 0.995
strength: 1.0
max_steps: 1000000 # 100万ステップ(長い学習用)
time_horizon: 1000
summary_freq: 30000
【設定のポイント】
- WalkerBrain: ここは必ず Vol.2 の Inspector で設定した
Behavior Nameと同じ名前にしてください。間違っていると学習が始まりません。- max_steps: 学習の長さです。最初は
500000(50万) くらいでもOKですが、完璧な歩行を目指すなら1000000(100万) 以上推奨です。- hidden_units / num_layers: 脳の大きさです。二足歩行は難しいので、少し大きめ(512, 3層)にしています。
第13章:いよいよ学習スタート!
準備は整いました。心臓が高鳴る瞬間です。
13-1. ターミナル(コマンドプロンプト)の準備
- Windowsなら「コマンドプロンプト」または「PowerShell」、Macなら「ターミナル」を開きます。
- Pythonの仮想環境を使っている場合は、
activateして有効化しておきます。 cdコマンドを使って、Unityプロジェクトのフォルダまで移動します。- 例:
cd C:\Users\User\Documents\Unity Projects\AI_Walker_Project
- 例:
13-2. 学習コマンドの実行
以下のコマンドを入力し、Enterキーを押します。
Bash
mlagents-learn config/walker_config.yaml --run-id=MyWalkerTest01 --force
config/walker_config.yaml: さっき作ったファイルの場所。--run-id=MyWalkerTest01: 今回の実験の名前(好きな名前でOK)。--force: 同じ名前の実験データがあったら上書きする(初回はなくてもOK)。
13-3. Unityの再生ボタンを押す
コマンドを実行すると、数秒後に以下のようなアスキーアート(ロゴ)が表示され、最後の行にこう出ます。
[INFO] Listening on port 5004. Start training by pressing the Play button in the Unity Editor.
これが合図です。Unityエディタに戻り、再生ボタン(▶)を押してください。
第14章:感動の成長記録(モニタリング)
再生ボタンを押した瞬間、Unityが少しカクついたり、高速で動き始めたりします。 (※TimeScaleが自動的に変更され、20倍速〜100倍速でシミュレーションが行われます)
成長の3段階フェーズ
画面をぼーっと眺めていると、AIは次のように進化していきます。
- フェーズ1:生まれたての子鹿(0〜5万ステップ)
- 状態: スタートした瞬間に崩れ落ちる。バタバタと痙攣する。
- スコア: ほぼゼロかマイナス。
- 解説: まだ何も分かっていません。「動くと倒れるから動かないほうがいいのでは?」と疑心暗鬼になっています。
- フェーズ2:ハイハイと膝立ち(10万〜30万ステップ)
- 状態: 膝を曲げたまま耐えるようになる。片足を前に出そうとして転ぶ。
- スコア: 徐々に上がり始める。
- 解説: 「膝(Leg)の力を抜くと衝撃を吸収できるぞ!」と気づく時期です。Vol.1で設定した物理設定が正しければ、ここで急速に成長します。
- フェーズ3:二足歩行の覚醒(50万ステップ〜)
- 状態: ターゲットに向かって歩き出す。最初は酔っ払いのようにフラフラですが、次第に体幹が安定してきます。
- スコア: 右肩上がりに急上昇。
- 解説: 感動の瞬間です。ここからは放置していても勝手に上手くなります。
グラフで確認する(TensorBoard)
数値で成長を見たい場合は、別のターミナルを開き、プロジェクトフォルダで以下のコマンドを打ちます。
Bash
tensorboard --logdir config/results
表示されたURL(http://localhost:6006)をブラウザで開くと、グラフが表示されます。 「Cumulative Reward(累積報酬)」 のグラフが右肩上がりになっていれば大成功です

注:他のソフトが動作中、バックで動いてない場合
ブラウザでTensorBoardを見ようとしてUnityから目を離すと、学習(Unity側の動き)も止まってしまいます。これを防ぐ設定が必須です。
【解決策】バックグラウンドでも動かす設定
学習中に他の作業ができるように、以下の設定をオンにしてください。
- Unityの画面上部メニューから Edit > Project Settings… を開きます。
- 左側のメニューで Player を選択します。
- 右側のタブ(地球儀やモニターのアイコン)で PC, Mac & Linux Standalone(パソコンのアイコン)が選ばれていることを確認します。
- Resolution and Presentation という項目を展開します。
- その中にある
Run In Background(バックグラウンドで実行)のチェックボックスに チェックを入れます(ONにする)。
学習を途中で中断し、後で続きから再開する方法
学習を途中で中断し、後で続きから再開する方法はとても簡単です。 「Run ID(実験の名前)」を変えずに、--resume というオプションをつけて実行する だけです。
現在の実験名は MyWalkerTest01 で動いています。これを引き継ぐ手順を解説します。
1. 安全な止め方(中断)
学習中のターミナル(黒い画面)で、キーボードの Ctrl + C を1回だけ押してください。
- 少し待つと、「モデルを保存しました(Exported … .onnx)」というメッセージが出て、プログラムが綺麗に終了します。
- ※いきなりウィンドウの「×」ボタンで閉じると、データが壊れる可能性があるので、なるべく
Ctrl+Cで止めるのがお作法です。
2. 再開の仕方(Resume)
PCを再起動したり休憩した後、続きから始めるときの手順です。
- 仮想環境に入る & フォルダ移動(いつもの手順)
- 「再開用」のコマンドを打つ 前回と同じコマンドの最後に、
--resumeを付け足します。DOSmlagents-learn config/walker_config.yaml --run-id=MyWalkerTest01 --resume- ポイント1:
--run-idは前回と同じ名前(画像の通りならMyWalkerTest01)にしてください。 - ポイント2:
--force(上書き)ではなく、**--resume(再開)**を使います。
- ポイント1:
- Unityの再生ボタンを押す 「Listening on port 5004…」が出たら、Unityの再生ボタンを押します。
⚠️ 注意点:Force と Resume の違い
ここだけ間違えないように気をつけてください!
--resume(再開):- 「MyWalkerTest01 の続きからやってね」
- 前回の脳みそをロードして、そこから学習を積み重ねます。
--force(強制上書き):- 「MyWalkerTest01 というフォルダが既にあっても、消して最初からやってね」
- これを間違って使うと、数時間の努力が消滅します!
成功の確認方法
再開した後、TensorBoardを見ると、グラフの線が途切れたところからピタッと繋がって、右に伸びていけば成功です!
寝る時や出かける時は Ctrl+C で止めて、また時間がある時に --resume で育ててあげてください。
第15章:よくある失敗とリカバリー
もしグラフが上がらなかったり、変な動きになったりした場合は、以下をチェックしてください。
Q. ロボットが地面を高速で転がっていく(芋虫移動)
- 原因: 「立って歩く」ことよりも「ターゲットに近づく」ことへの執着が強すぎました。
- 対策: Vol.2のスクリプトで、「頭の位置が低いときは即座にゲームオーバー(罰)」という処理が正しく入っているか確認してください。厳しく躾けることが大事です。
Q. ずっと棒立ちで動かない
- 原因: 罰を恐れすぎて「動かないのが一番安全」と学習してしまいました(局所解)。
- 対策: Vol.1の物理設定で、初期位置を少しランダムにずらすか、ターゲットに近づいた時の報酬(AddReward)を少し増やして、「リスクを冒してでも進む価値」を教えてあげましょう。
Q. 膝がカクカクして竹馬みたい
- 原因: Vol.1で解説した通り、「膝のSpring(バネ)」が強すぎます。
- 対策: Unityを停止し、InspectorでLegのSpring値を半分くらい(例:2000 → 1000)に下げて、学習を再開(
--resumeオプションを使用)してください。
第16章:学習完了!脳みそを取り出す
満足いく動きになったら、Unityの停止ボタンを押すか、ターミナルで Ctrl + C を押して学習を終了します。
16-1. モデルファイル(.onnx)の場所
プロジェクトフォルダ内の results/MyWalkerTest01/WalkerBrain フォルダの中に、WalkerBrain.onnx というファイルが生成されています。 これが、数時間の特訓の末に完成した「学習済みの脳」です。
16-2. ゲームへの組み込み(推論モード)
- この
.onnxファイルをUnityのAssetsフォルダ内にドラッグ&ドロップします。 - Hierarchyのロボットを選択します。
Behavior Parametersコンポーネントの Model という欄に、この.onnxファイルをセットします。- Behavior Type を
Inference Only(推論のみ)に変更します。
これでPythonはもう不要です。 再生ボタンを押せば、あなたのロボットは学習した通りに、凛々しく歩き始めるはずです!
第17章:完結!ここから広がる世界
おめでとうございます! これで「Unity ML-Agents 二足歩行プロジェクト」は完結です。
あなたが作ったのは、ただのアニメーションではありません。 物理演算に基づいているため、重いボールをぶつければよろめきますし、坂道になれば足の角度を自動で調整して登ろうとします。
次のステップへのアイデア
- 障害物走: 壁や段差を配置して、避ける学習をさせる。
- サッカー: ボールを蹴ってゴールに入れる学習をさせる。
- オリジナルキャラ: 自分でモデリングしたキャラクターを歩かせる。
機械学習の面白さは、予想外の動きや成長ドラマが見られることです。

