8周を完走したAIが、翌日は5回とも同じ場所で落ちた

カメラの画だけで8周完走した自動運転モデルが、翌日は5回とも同じ場所で落ちた。何も壊していない。違うのはスタート位置がわずかにズレたことだけ。「動いた」と「使える」の差は、走行を眺めていても分からない。見つけたのは管制のログだった。

Share

AIに車を運転させた。シミュレータの中で。手持ちのMac1台、買ったものはゼロ円

まず、走った

自動運転そのものは、既製のOSS(Donkey Car)で動く。ここは自分で作るところじゃない。

教師役のプログラムに23周走らせて、7,992枚の「このとき、ハンドルをどう切ったか」を集めた。それを学習させて、今度はカメラの画像だけで走らせる。教師はシミュレータの内部数値(コースからのズレ)を見て走るが、生徒はカメラしか見ない。実機に持っていくなら、こっちじゃないと意味がない。

生徒は、カメラだけで8周を完走した

0:00
/0:00
AIが見ていた映像(機上カメラ・実時間30秒)

正直、ここは想定内だった。すごいのはOSSと先人であって、僕じゃない。

翌日、同じAIが5回連続で落ちた

シミュレータを立ち上げ直して、同じモデルで走らせた。

5回走らせて、5回とも落ちた。しかも毎回182〜193ステップ目——ほぼ同じ場所で。8周してみせたのと、同じAIだ。

何も壊していない。モデルも、コースも、同じ。違ったのはスタート地点の条件がわずかにズレたことだけだった。学習した範囲から少し外に出ると、AIは何も知らない。

0:00
/0:00
3回とも同じ場所で落ちる(30秒・3試行連結)

これが「動いた」と「使える」の差だと思う。

デモは通る。1回はきれいに走る。でも運用に置くと落ちる。しかもその差は、走っているところを眺めていても分からない。8周した日も、5回落ちた日も、画面には同じように車が走っていた。

見つけたのは、走行を見ていた僕じゃない。管制のログだった。

0:00
/0:00
その管制画面。機上カメラ・横ずれの波形・操舵・走行軌跡・異常パネルが同時に動いている

「止まった」ことにすら、気づけなかった

もうひとつ、別の日に踏んだ罠がある。

管制画面をブラウザで開いた。その瞬間、車が止まった。 気づいたのは11分後だった。

原因はmacOSの省電力機能だった。シミュレータのウィンドウがブラウザに覆われて背面に回った瞬間、OSが「これは今使われていない」と判断して処理を絞った。シミュレータは応答を返さなくなり、走行プログラムはその返事を待ったまま固まった。

問題はそこじゃない。管制画面が、何も言わなかったことだ。

警告を出す仕組みが、走行プログラムの中に入っていた。だから走行プログラムが止まれば、警告を出す仕組みも一緒に止まる。異常がなくて静かなのか、止まっていて静かなのか、画面からは区別がつかなかった。

さらに、画面のモード表示は 「AUTO(正常走行中)」のままだった。表示していた値は走行プログラムが更新するものだから、凍れば更新も止まり、最後に受け取った値がそのまま残り続ける。画面は堂々と「正常」と言い続けていた。

0:00
/0:00
凍結→検知→承認→復帰(28秒)

直し方は、2行で言える

  • 監視は、監視対象の外側に置く。 走行プログラムとは別に見張り役を立て、データが5秒途切れたら警報を出す。試しにシミュレータを強制的に凍らせたら、5.0秒で鳴った
  • 「最後に受け取った値」を現在の状態として表示しない。 代わりにその値がどれだけ古いかを出す。止まっていれば「STALLED 12秒」と表示される。

少し前にも僕は、AIが「問題ありません」と報告してきた動画を差し戻したことがある。あれも検査は動いていたが、見る場所が違っていたという話だった。

沈黙・停止・古い値。この3つは、放っておくと全部「正常」の顔をする。

人の承認コストが、数字で見えた

🟥が立つと走行を再開せず、人のackを待つ

管制には「危ないので止まる → 人が承認 → 再開」という流れを入れてある。

ある1回の走行で、AIは79ステップぶん、人の承認を待って停止していた

うちでは「人間の承認コストは1日30分以内」を目標に置いている。これまで体感でしか語れなかったが、AIが人を待っていた時間が数値で出たのは初めてだった。どこまで自律に振るかの議論は、この数字の上でやるべきだと思う。

買ったもの:ゼロ円

これは誰でも真似できる。シミュレータは無料(ハード不要)、学習は手持ちのMacで完結、車は買っていない。

再現手順は全部記録した。踏んだ罠も7つ全部——ライブラリのバージョン地雷、コースが起動のたびに変わって再現性が消える問題、学習データの画像とラベルが静かにズレていた話まで。順番に書いたので、同じところで転ばずに済むはずだ。

正直な限界

  • これはシミュレータの中の話で、実機ではまだ何も走らせていない。
  • 「自律走行できた」は条件付きだ。学習した条件から少しズレると、上に書いたとおり落ちる。
  • 汎化していない。1コース・1条件で成立しただけ。

それでも、この筋トレの目的は速く走ることじゃない。勝手に動くものを、人が責任を持って運用する型を作ることだ。そこは、はっきり前に進んだ。

(※ニュースレター誘導は最終稿で1本だけ入れる)


この管制の作り方——シミュレータの立て方、監視をどこに置くか、踏んだ罠7つの回避手順——は、毎週のニュースレターで手順ごと渡しています。登録は無料です。

/starter-kit/