【Unity ML-Agents】 トラブルシューティングQ&A

AIの学習は「実験」です。一発でうまくいくことは稀で、失敗こそが最大の学びになります。 ここでは、開発中に遭遇しやすいトラブルとその解決法をまとめました。


1. 物理・挙動がおかしい(Physics Issues)

Q. ロボットがロケットのように空へ飛んでいく

【症状】 再生ボタンを押した瞬間、キャラクターが画面外へ射出される。または、少し動いただけで吹っ飛ぶ。

【原因】 物理演算のバランス崩壊です。「体の重さ(Mass)」に対して「関節のバネ(Spring)」が強すぎることが原因です。

【解決策】

  1. Mass(重さ)を増やす: 特にHips(腰)を 15、Chest(胸)を 5 程度まで重くします。
  2. Spring(筋力)を減らす: 重さを増やしても飛ぶ場合は、Jointの Position Spring を半分に減らしてください。

Q. 膝が「くの字」に逆に曲がってしまう

【症状】 フラミンゴやエイリアンのように、膝が人間とは逆方向に折れ曲がる。

【原因】 関節の可動域(Limit)の設定ミスです。

【解決策】 Configurable JointLimits を見直してください。

  • 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)に陥っています。

【解決策】

  1. 初期位置をランダムにする: OnEpisodeBegin でスタート位置を少しずらすことで、多様な経験をさせます。
  2. 移動の報酬を増やす: ターゲットに近づいた時の 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のライブラリがインストールされていないか、仮想環境に入っていません。

【解決策】

  1. pip install mlagents を実行しましたか?
  2. Pythonの仮想環境(venvなど)を使っている場合、activate していますか?

【コラム】AIは「サボりの天才」である

トラブルシューティングで一番面白いのは、AIがいかにして楽をしようとするかを見ることです。

  • 膝をカクカクさせて振動で進む。
  • 片足だけでケンケンする。
  • 後ろ向きに走る。

これらはバグではなく、AIが導き出した「その環境での最適解」です。 もし変な動きをしたら、「こいつ、そう来たか!」と楽しみながら、ルール(報酬や物理設定)を調整してあげてください。