🏇

ChatGPTと「一緒に」競馬予想する世界を作った話 - ソフトウェアエンジニアが挑む「AI協働」の新体験

に公開

生成AI時代の「寂しさ」に気づいた瞬間

生成AIの勢いが凄まじい。
仕事でソフトウェアエンジニアをしている私としては、
「もっと数年早く出ていたら、転職先の選択肢も今とは全然違ったものになっていたかもしれない」と思うことがある。

しかし最近、どこか寂しさを感じている。

何でもかんでもAIが一方通行で答えを出してくれる。
それは確かに便利だが、人間の出る幕がどんどんなくなっている気がする。
特に私の娯楽である、競馬の世界を見ていると、その違和感が顕著に現れている。

競馬もAIが全部予想してくれて、
ネット競馬の予想欄に平気で「AI予想」が並んでいる。

確かに当たる確率は上がっているのかもしれないが、これがもし進化しすぎて絶対に当たるようになったら、
競馬の面白さは薄れていくのではないだろうか。

「AI様が言うから、この馬に賭けよう」

そんな面白くない未来は、私は嫌だなあと思う。

プロンプト検定との出会いが変えた視点

そんな折、私はプロンプト検定というものを取得した。(半年くらい前)

プロンプト検定では、プロンプトを変数や構造体のように定義して、
生成AIに目的と現状を正しく伝える技術を学ぶ。
単に「〜を教えて」と聞くのではなく、AIとの対話を設計する考え方を身につけることができる。

「せっかく身につけた技術だから、何か役に立てよう」

そう思った私は、自分の持っているスキルを改めて整理してみることにした。

エンジニアとしての手持ちスキルを整理してみた

私にできることを考えてみると、こんな感じである。

まず、Pythonで歴代の馬のレース結果を集めることができる。
これまでスクレイピングやデータ処理の経験を積んできたので、競馬データの収集と整形は得意分野である。

次に、ソフトウェアエンジニアとしてAIツール製品を作っている経験から、
推論やデータセットに関する知識がある。
機械学習モデルがどのような仕組みで動いているかを理解しているため、(100%といったら誤解が生じるが)
どんな特徴量が有効かといった感覚を持っている。

そして新たに習得したプロンプトエンジニアリングの考え方。これらを組み合わせれば、何か新しいことができるのではないか。

そこで思いついたのが、AIとの対話式の仕組みである。

「一緒に考える」という発想の転換

従来のAI予想システムは「AIが予想して、人間が結果を受け取る」という一方通行の関係である。しかし、ChatGPTの高い対話能力を活用すれば、
「AIと人間が一緒に考える」という協働型のよりインタラクティブなシステムが作れるのではないだろうか。

私が目指したのは、予想結果を提供するのではなく、予想プロセス自体を楽しめるユーザー体験である。

考えてみてほしい。
競馬の面白さは、「なぜこの馬が勝つと思うのか」を考える過程にもあるはずだ。
血統を調べたり、過去の戦績を分析したり、馬場状態を考慮したり。
そうした思考プロセスにAIが参加してくれたら、一人では気づけない視点を得られるかもしれない。

4ステップ対話システムの設計思想

こうした考えから、私は4つのステップで構成される対話型システムを設計した。
プロンプト一式と分析に必要な過去レースデータ(CSV)をChatGPTに添付し、「分析を開始して」と送信すると、プロンプトに定義されたステップに従って分析を開始する設計である。

ステップ1:学習・検証データの分割

まず最初に、学習用データと検証用データに分割する必要がある。

これは機械学習の基本中の基本だが、ユーザーにも「なぜデータを分けるのか」を理解してもらいたいと考えた。もちろん、このデータを今後どうやって使用していくかは、丁寧にフィードバックするように、プロンプトは指示する。

ステップ2:傾向抽出と予想モデル作成

次に、過去の勝馬データから傾向を抽出する。ここがシステムの核となる部分である。

「勝ち馬ってどんな特徴があるんだろう?」をAIが探していく作業だ。距離が得意か、枠番はどうか、騎手との相性は、血統的には、前走の調子は…といった要素を、AIが数値として整理してくれる。
重要なのは、この過程をブラックボックスにしないことである。「なぜこの馬場で強いのか」「なぜこの距離で結果を出しているのか」をAIが説明してくれるので、ユーザーも納得しながら進められる。
そしてこのステップの最後に「このモデル、本当に使えるの?」をチェックする。過去の年度で実際に予想してみて、どれくらい当たるかを確認する。合格ラインは60%。これを下回ったら、次のステップで改良が必要だ。
重要なのは、この合格率が60%未満の場合、必ずステップ3に進むことである。

ステップ3:モデル改善

ここが最も新しい体験的な部分だと自負している。
AIの分析結果を見て、人間が「え、ちょっと待って」と感じる瞬間がある。

「この馬、G1勝ってるのに評価低すぎない?」
「この騎手、この条件めちゃくちゃ強いのに」
「血統的にはもっと評価されるべきでは」
そうした「違和感」を単なる感想に留めず、AIとの対話を通じてその直感を数値化し、システムに反映させる仕組みを搭載した。過去の実績による補正、騎手との相性調整、血統による加点など、人間の知見をモデルに組み込める。

この補正を行った後、再びステップ2に戻って検証を実行する。

「改良したモデル、今度はどうかな?」と合格率が向上するまで、この作業を繰り返す。実際の運用では、2〜3回の対話で納得のいく精度に到達することが多い。

ステップ4:今週の予想

最後に、改良されたモデルを使って実際の予想を行う。ここでも重要なのは、単に「この馬が勝つ」と言うのではなく、理由をちゃんと説明してもらうことである。
「この馬は1600mが得意で、今回の騎手との相性も抜群」
「前走の上がり脚が抜群で、馬場状態も合っている」
「血統的にこのコースが向いている」
といった具体的な根拠を示してくれるので、納得して馬券を買えるし、レースを見る楽しみも増える。何より、外れても「なるほど、そういう理由か」と学びになるのが良い。

実戦テスト

日本ダービーで検証

このシステムを実際に、日本ダービー
で検証してみた。結果は想像以上の手応えだった。

システムが一着予想として選出したのは「マスカレードボール」である。実際のレースでは二着という結果だったが、これが素晴らしい内容だった。後ろからものすごい脚で突っ込んできて、一着もありえるような迫力のある走りだった。軸馬として馬連を組んだところ、かなりいい感じに回収することができた。

安田記念で検証

安田記念でも検証してみた。結果はまあまあの手応えだった。

システムが一着予想として選出したのは「ソウルラッシュ」である。
実際のレースでは三着という結果だった。これは、正直、2人気のジャンタルマンタルを推してほしいとこではあったが、3着以内には入っていたので、良かったと思っている。

感じたこと

予想が当たったことよりも、何より「かなり楽しかった」というのが正直な感想である。AIとの対話を通じて「なぜこの馬なのか」を理解しながら予想を組み立てていく過程で、レース観戦の楽しみ方が明らかに変わった。

ユーザーからも同様の声をいただいている。単に予想を知りたいのではなく、「なぜその予想になったのか」「自分ならどう考えるか」といった対話を求める声が多く寄せられた。予想プロセス自体を楽しんでもらえたことが、最大の成果だったと感じている。

AI協働時代の設計思想

この経験を通じて見えてきたのは、「AI vs 人間」から「AI with 人間」への転換の重要性である。

AIが人間を置き換えるのではなく、人間の能力を拡張する。人間が持つ直感や経験を、AIの計算能力と組み合わせることで、どちらか単独では到達できない領域に踏み込める。

この考え方は競馬だけでなく、自分の仕事(ソフトウェアエンジニア)もそうだと思った。
最近、コードレビューを担当するAIシステムが導入される動きも腑に落ちる。

「一緒に体験する」サービスのご案内

この記事を読んで「実際に体験してみたい」と思っていただけた方のために、実際のシステムをご利用いただけるサービスをココナラ限定提供している。

提供内容

  • 過去レースデータ(CSV)
    • 分析に必要な歴代レース結果
  • 戦歴データ(CSV)
    • 出走馬の詳細な過去戦績
  • 出走馬データ(CSV)
    • 今回の宝塚記念出走予定馬情報
  • 4ステップ対話型分析プロンプト一式
    • システムの核となる全プロンプト
  • データ読み込み方法の詳細手順書
  • スマホ版対応方法
  • トラブル時のサポート

必要環境

ChatGPT Plus(月額20ドル・3000円前後)があれば、本格的なAI協働競馬予想を体験できる。
この「AI協働時代」の新しい楽しみ方を、宝塚記念で体感してみていただきたい。


Discussion