AIの学習は「実験」です。一発でうまくいくことは稀で、失敗こそが最大の学びになります。 ここでは、開発中に遭遇しやすいトラブルとその解決法をまとめました。
1. 物理・挙動がおかしい(Physics Issues)
Q. ロボットがロケットのように空へ飛んでいく
【症状】 再生ボタンを押した瞬間、キャラクターが画面外へ射出される。または、少し動いただけで吹っ飛ぶ。
【原因】 物理演算のバランス崩壊です。「体の重さ(Mass)」に対して「関節のバネ(Spring)」が強すぎることが原因です。
【解決策】
- Mass(重さ)を増やす: 特にHips(腰)を
15、Chest(胸)を5程度まで重くします。 - Spring(筋力)を減らす: 重さを増やしても飛ぶ場合は、Jointの
Position Springを半分に減らしてください。
Q. 膝が「くの字」に逆に曲がってしまう
【症状】 フラミンゴやエイリアンのように、膝が人間とは逆方向に折れ曲がる。
【原因】 関節の可動域(Limit)の設定ミスです。
【解決策】 Configurable Joint の Limits を見直してください。
- High Angular X Limit: 必ず
0に設定(これで真っ直ぐより前には行きません)。 - Low Angular X Limit:
-120などに設定(後ろには曲がる)。
Q. 膝が伸び切ったまま「竹馬」のように歩く
【症状】 膝を曲げようとせず、足を棒のように突っ張って歩く。
【原因】 「バネ(Spring)が強すぎて、AIの筋力では曲げられない」状態です。
【解決策】 すね(Leg/Shin)の Position Spring を現在の数値から 半分〜3分の1 に下げてください(例:2000 → 800)。柔らかくすることで、AIが膝を使えるようになります。
2. 学習・AIの頭脳がおかしい(Training Issues)
Q. 「芋虫」のように地面を這いずり回って移動する
【症状】 立とうとせず、寝転がったままゴロゴロ転がってターゲットに向かう。
【原因】 「報酬ハッキング(Reward Hacking)」 が起きています。 AIは「立つと転んで罰を受けるリスクがある。でも転がればリスクなしでターゲットに行ける!」とズル賢い発見をしてしまいました。
【解決策】 スクリプトに「姿勢のペナルティ」を厳しく追加します。
C#
// 頭の位置が低すぎたら即ゲームオーバーにする
if (hips.position.y < 0.8f) {
SetReward(-1.0f);
EndEpisode();
}
Q. その場でプルプル震えて動かない
【症状】 スタート地点から一歩も動こうとしない。
【原因】 「動くと失敗するから、何もしないのが一番安全」という局所解(Local Minima)に陥っています。
【解決策】
- 初期位置をランダムにする:
OnEpisodeBeginでスタート位置を少しずらすことで、多様な経験をさせます。 - 移動の報酬を増やす: ターゲットに近づいた時の
AddRewardを少し大きくして、「リスクを冒してでも進むメリット」を提示します。
Q. 学習グラフ(Reward)が全然上がらない
【原因】
- Observation(目)の設定ミス: ターゲットの位置や自分の姿勢を正しくAIに渡せていない可能性があります。
- 物理的に不可能: 関節が
Lockedばかりで動けない、または重すぎて動けないなど。
【解決策】
Heuristicモード(手動操作)で、矢印キーやスペースキーで動かしてみて、そもそも「物理的に歩ける体」になっているか確認してください。人間が操作しても歩けないなら、AIにも無理です。
3. エラー・環境トラブル(Environment Issues)
Q. “DllNotFoundException: onnxruntime” というエラーが出る
【原因】 推論エンジン(BarracudaやSentis)の互換性問題、またはPCに「Visual C++ 再頒布可能パッケージ」が入っていません。
【解決策】
- Microsoft公式サイトから「Visual C++ Redistributable (x64)」をインストールして再起動してください。
Q. “Unity.MLAgents namespace not found” と言われる
【原因】 スクリプトで using Unity.MLAgents; と書いているのに、パッケージが導入されていません。
【解決策】 Window > Package Manager を開き、ML Agents パッケージがインストールされているか確認してください。
Q. Pythonで “mlagents-learn command not found” と出る
【原因】 Pythonのライブラリがインストールされていないか、仮想環境に入っていません。
【解決策】
pip install mlagentsを実行しましたか?- Pythonの仮想環境(venvなど)を使っている場合、
activateしていますか?
【コラム】AIは「サボりの天才」である
トラブルシューティングで一番面白いのは、AIがいかにして楽をしようとするかを見ることです。
- 膝をカクカクさせて振動で進む。
- 片足だけでケンケンする。
- 後ろ向きに走る。
これらはバグではなく、AIが導き出した「その環境での最適解」です。 もし変な動きをしたら、「こいつ、そう来たか!」と楽しみながら、ルール(報酬や物理設定)を調整してあげてください。

