🏎

Code Interpreter で自動運転レースのデータ解析をしてみた (2)

2023/08/13に公開

はじめに

Virtual Motorsport Lab Inc. (VML) でプロダクト開発をしている @danchinocto です。この記事は、第2回 Generative AI 勉強会 関西での発表内容をまとめ直したものです。前回の記事はこちら。
https://zenn.dev/danchinocto/articles/code-interpreter-for-data-analysis-1

自動運転レースのデータ解析

概要

今回は、Code Interpreter プラグインを使って自動運転レースの走行ログを解析しました。 ChatGPT への指示にはできるだけ自然言語を使うという方針で、日本語でどこまでできるかを試しました。また、プロンプトエンジニアリングの観点はそこまで考慮していません。

VML選手権シーズンαの第1戦上位3チームのデータを使い、以下の項目について実験しました。

  1. 前処理
  2. 可視化
  3. パフォーマンス評価
  4. 高度な解析 (オーバーステア・アンダーステア)

本記事では、3. とマルチモーダルなモデルを使った追加実験についてまとめます。

3. パフォーマンス評価

可視化までできたので、走行データが人間にとって分析しやすい形になりました。ただ、せっかくなので、 ChatGPT 自身にもデータをもとにパフォーマンス評価してもらいます。

ざっくり指示だけ与えると、評価の方針を立ててくれます。

ただ、データの読み取りでエラーが多かったので、いったん方針を修正するよう指示しました。

可視化してもらった図と比較すると、だいたい合っていそうな感じはします。

まとめはこんな感じ。

ただ、ファステストラップで決まるレース結果に対しては、あまり納得感のない回答となりました。

こちらから渡す情報も不足していたことに気づき、もう少し細かく指示を出しました。ラップタイムデータの読み取りに苦戦していたので、プロンプトで直接データを与えました。
※ 実際のレースでは、車両1が3位、車両2が2位、車両3が1位という結果でした。

回答がこちら。

3周目に注目するようお願いしたのに、1~2周目に当てはまることも述べています。これまでの会話の記憶が悪さをしたのでしょうか…。

もっと直接的に聞いてみました。

回答がこちら。それでも1~2周目と混同している様子です。

ちなみに、人間のデータエンジニア (@yamashita_ms) による分析はこんな感じです。

もちろんプロンプトの内容にもよると思いますが、 ChatGPT よりは人間の専門家のほうが上手く分析できるという結果でした。 @yamashita_ms いわく

  • データのどこに注目すればいいかがわかっていない
  • データの最大値、最小値くらいは見れる

という点で、レースデータ分析の経験がない素人くらいの分析力だそうです。

(追加実験) マルチモーダルなモデルの活用

Generative AI 勉強会 関西の発表当日、 Google の Bard で画像入力が使えるようになりました。

https://bard.google.com/updates

発表には間に合いませんでしたが、 (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 でも試してみました。なぜかすぐには意図が伝わらず、何回かやり取りをしたら分析してくれました。ただ言っていることは怪しい気もします。

https://twitter.com/danchinocto/status/1680413112942628864?s=20

まとめ

ChatGPT に自動運転レースの走行パフォーマンスを評価してもらいましたが、残念ながら今回は素人くらいの考察しかしてくれませんでした。また、Code Interpreter に可視化してもらった画像から、 Bard と Bing にもパフォーマンス評価をしてもらいました。数回試しただけですが、画像の読み取りという点では Bard のほうが優秀な印象を受けました。

ただ、今回の実験では総じて「ざっくり指示でパフォーマンスを評価してもらう」だけだったために、満足いく分析にならなかった可能性も高いです。文脈を丁寧に説明したり、プロンプトをもっと工夫したり、ということをすればもっと精度は上がると期待しています。さらに、データエンジニアの視点やデータの注目ポイントなどを教えることで、より専門的な分析ができるようになると考えられます。

次の記事では、さらに高度な分析まで試した結果をまとめようと思います。

Discussion