Code Interpreter で自動運転レースのデータ解析をしてみた (2)
はじめに
Virtual Motorsport Lab Inc. (VML) でプロダクト開発をしている @danchinocto です。この記事は、第2回 Generative AI 勉強会 関西での発表内容をまとめ直したものです。前回の記事はこちら。
自動運転レースのデータ解析
概要
今回は、Code Interpreter プラグインを使って自動運転レースの走行ログを解析しました。 ChatGPT への指示にはできるだけ自然言語を使うという方針で、日本語でどこまでできるかを試しました。また、プロンプトエンジニアリングの観点はそこまで考慮していません。
VML選手権シーズンαの第1戦上位3チームのデータを使い、以下の項目について実験しました。
- 前処理
- 可視化
- パフォーマンス評価
- 高度な解析 (オーバーステア・アンダーステア)
本記事では、3. とマルチモーダルなモデルを使った追加実験についてまとめます。
3. パフォーマンス評価
可視化までできたので、走行データが人間にとって分析しやすい形になりました。ただ、せっかくなので、 ChatGPT 自身にもデータをもとにパフォーマンス評価してもらいます。
ざっくり指示だけ与えると、評価の方針を立ててくれます。
ただ、データの読み取りでエラーが多かったので、いったん方針を修正するよう指示しました。
可視化してもらった図と比較すると、だいたい合っていそうな感じはします。
まとめはこんな感じ。
ただ、ファステストラップで決まるレース結果に対しては、あまり納得感のない回答となりました。
こちらから渡す情報も不足していたことに気づき、もう少し細かく指示を出しました。ラップタイムデータの読み取りに苦戦していたので、プロンプトで直接データを与えました。
※ 実際のレースでは、車両1が3位、車両2が2位、車両3が1位という結果でした。
回答がこちら。
3周目に注目するようお願いしたのに、1~2周目に当てはまることも述べています。これまでの会話の記憶が悪さをしたのでしょうか…。
もっと直接的に聞いてみました。
回答がこちら。それでも1~2周目と混同している様子です。
ちなみに、人間のデータエンジニア (@yamashita_ms) による分析はこんな感じです。
もちろんプロンプトの内容にもよると思いますが、 ChatGPT よりは人間の専門家のほうが上手く分析できるという結果でした。 @yamashita_ms いわく
- データのどこに注目すればいいかがわかっていない
- データの最大値、最小値くらいは見れる
という点で、レースデータ分析の経験がない素人くらいの分析力だそうです。
(追加実験) マルチモーダルなモデルの活用
Generative AI 勉強会 関西の発表当日、 Google の Bard で画像入力が使えるようになりました。
発表には間に合いませんでしたが、 (ChatGPT ではイマイチだった) パフォーマンス評価を画像ベースでやってもらうことにしました。さらに、 Google のリリースから間もなく Microsoft Bing でも同様の機能が使えるようになったため、 2つのモデルで実験をしました。
Google Bard
Code Interpreter に可視化してもらった図を添付して、レースの評価をするようお願いしてみました。 Bard はあまり使ったことがなく、日本語の精度がわからなかったため英語で質問しています。
回答 (の一部) がこちら。ラップタイムの分析もしてくれましたが、割愛しています。
Here is a graph that shows the lap times of the three cars:
と言いつつ、なぜかネット上の (それっぽい) 画像を見せてくれました。なぜ…?
もう一度画像を添付してたり、補足説明を追加したりすると、最終的にはそれっぽいことを言ってくれました。
ただ、数値についてはどのように導出したのか不明です。速度に注目すると、グラフ的には最大でも 40m/s 程度で、単位を変換しても 144km/h です。平均速度が 220~225km/h というデータはどこから出てきたのでしょうか。
ライン取りについても、画像から分析してもらいました。
Bard の回答を DeepL で翻訳したものがこちら。
送られてきた画像をもとに、3周目のレーシングラインのパフォーマンスを評価すると、次のようになる:
- 1号車:3 周目の 1 号車のレーシングラインは、他の 2 台に比べてスムーズではなかった。小さなミスもあり、タイムをロスした。
- 2号車:3周目の2号車のレーシングラインは、他の2台よりも保守的だった。リスクを冒さなかったことがタイムロスにつながったと思われる。
- 3号車:3周目の3号車のレーシングラインは、3台の中で最もスムーズかつアグレッシブだった。少しリスクを冒したが、それをうまく実行できたことがタイムアップにつながった。
3号車は3周目のレーシングラインが一番良かったと思います。レーシングラインをスムーズかつアグレッシブに走れたことがタイムアップにつながった。1号車のレーシングラインはスムーズではなかったし、2号車のレーシングラインは保守的すぎた。
以下、画像からの具体的な考察:
- 1号車は1コーナーでミスを犯し、勢いを失った。
- 2号車は1コーナーをワイドなラインで通過したため、タイムをロスした可能性がある。
- 3号車は第1コーナーを狭いラインで通過したため、コーナーからの加速が速くなった。
ライン取りについては、割りと納得感のある回答が得られたと思います。
Microsoft Bing
Bing でも試してみました。なぜかすぐには意図が伝わらず、何回かやり取りをしたら分析してくれました。ただ言っていることは怪しい気もします。
まとめ
ChatGPT に自動運転レースの走行パフォーマンスを評価してもらいましたが、残念ながら今回は素人くらいの考察しかしてくれませんでした。また、Code Interpreter に可視化してもらった画像から、 Bard と Bing にもパフォーマンス評価をしてもらいました。数回試しただけですが、画像の読み取りという点では Bard のほうが優秀な印象を受けました。
ただ、今回の実験では総じて「ざっくり指示でパフォーマンスを評価してもらう」だけだったために、満足いく分析にならなかった可能性も高いです。文脈を丁寧に説明したり、プロンプトをもっと工夫したり、ということをすればもっと精度は上がると期待しています。さらに、データエンジニアの視点やデータの注目ポイントなどを教えることで、より専門的な分析ができるようになると考えられます。
次の記事では、さらに高度な分析まで試した結果をまとめようと思います。
Discussion