たった2秒では足りなかった。ボートレースAIの自動予想を直しました

ボートレースAI開発

前回は、ボートレースAIを自動で動かそうとして起きた失敗を紹介しました。

その中でも大きかったのが、

AIは予想できていたのに、正式な判定を保存する時間に間に合わなかった

という失敗です。

原因を調べると、かなり単純でした。

2秒しかない時間の中で、やることが多すぎたのです。

今回は、その処理をどう直したのかを書いてみます。

正式な判定に使える時間は2秒

現在のAIでは、予想を正式に記録する時間をあらかじめ決めています。

その時間は、わずか2秒です。

この2秒の間に判定できなかった場合は、正式な予想として扱いません。

かなり厳しく見えるかもしれません。

でも、これは予想結果をあとから都合よく変えないためです。

決めた時間までに予想できたかどうかも、AIの性能の一部だと考えています。

最初は2秒の中で全部やろうとしていた

問題は、処理の順番でした。

当初は、この短い時間の中で、

  • 直前情報を取得する
  • AIのスコアを計算する
  • 予想順位を決める
  • 買うか見送るか判断する
  • 判定を保存する

という処理を進めていました。

ところが、実際に動かすと間に合いません。

データ取得も通信なので、毎回まったく同じ時間では終わりません。

AIの計算にも少し時間がかかります。

その結果、

予想そのものはできたのに、最後の保存が数秒遅れる

ということが起きました。

でも、もっと早く予想すればいいわけではない

ここで一つ問題があります。

「それなら、もっと早い時間に予想すればいい」

と思うかもしれません。

でも、ボートレースではそれが難しいのです。

レース前には、展示があります。

展示を見ることで、

  • スタートの様子
  • ピット離れ
  • 伸び方
  • ターンの気配
  • 展示タイム

など、直前にならないと分からない情報が出てきます。

早く予想しすぎると、大事な直前情報を使えません。

だからといって、ギリギリまで待ちすぎると、今度は処理時間が足りません。

ここが、実際に自動化してみて難しいと感じたところです。

事前予想だけでは決めきれない

ボートレースでは、選手やモーターの過去データだけでも予想できます。

ただ、それだけでは分からない部分もあります。

同じモーターでも、その日の気配が違うことがあります。

展示を見て、

「今日は伸びている」

「ターン後の押しが良さそう」

と感じることもあります。

これは、人が現地で見るとさらに分かりやすい部分です。

私自身、実際にボートレース場へ行って展示を見ることで、

数字だけでは分からない情報がある

と感じました。

AIを作っているからこそ、逆に現地で見ることの重要性も見えてきました。

そこで、準備だけ20秒前に始めることにした

今回変更したのは、AIの予想方法ではありません。

処理を始める順番を変えました。

正式な判定時間の約20秒前から、

  • 直前情報を取得
  • AIスコアを計算
  • 予想順位を準備

するようにしました。

そして、正式な判定時間まで待ちます。

最後の2秒では、

買うか見送るかの最終判定と保存だけを行います。

これなら、直前情報を使いながら、短い判定時間にも対応できます。

2秒を広げたわけではない

ここは大事なところです。

今回、

「2秒では短いから10秒にしよう」

とルールを変えたわけではありません。

判定に使える時間は、そのままです。

AIの計算方法も変えていません。

買うか見送るかを決める基準も、そのままです。

変えたのは、

重い処理を先に済ませるようにしたこと

だけです。

失敗した結果に合わせて、AIの予想ルールを変えたわけではありません。

修正後は時間内に判定できた

処理の順番を変更したあと、実際のレースで再び確認しました。

今度は、

  • 直前情報取得
  • AIスコア計算
  • 判定時刻まで待機
  • 正式判定を保存

という流れで進みました。

そして、

決めていた2秒の時間内に判定を保存できました。

ようやく、

「AIが予想できる」

だけではなく、

「決めた時間にAIが予想できる」

ところまで進んだことになります。

AIを作っているのに、現地を見る意味

自動化を進めていると、

「AIなら現地に行かなくてもいいのでは?」

とも思えます。

でも、今は逆に感じています。

人が展示を見て感じているものを、

AIはどのデータから判断すればいいのか。

そこを考えるには、実際のレースを見ることも大切です。

たとえば、

  • 伸びて見えるとは何なのか
  • ターンが良いとは何なのか
  • 他艇より良く見える理由は何なのか

こうした感覚を、少しずつ数字に変えていく必要があります。

今進めている「逃げ」や「差し」の研究も、この延長にあります。

自動化して分かったこと

今回の修正で分かったのは、

自動予想は、早ければいいわけでも、遅ければいいわけでもない

ということです。

できるだけ直前の情報を使いたい。

でも、正式な判定時間には間に合わせたい。

そのバランスを取る必要があります。

これは、実際にAIを毎日動かしてみなければ分からなかった部分でした。

まとめ

今回は、AI予想が数秒遅れてしまった問題を修正しました。

原因は、

2秒の中で、データ取得から判定まで全部やろうとしていたこと

でした。

そこで、

直前情報の取得とAI計算を約20秒前に済ませ、最後の2秒では判定だけを行う

形へ変更しました。

AIの予想ロジックや判定基準は変えていません。

また、今回の開発を通じて、

ボートレースでは直前の展示情報が重要だからこそ、自動化が難しい

ということも改めて感じました。

AIだけを見ていても分からないことがあります。

実際の展示やレースを見ることも、AIを育てるための大事な材料になりそうです。

次は、その日のレース予定から、AIが予想対象を選ぶ仕組みについて紹介していこうと思います。

次回は、AIがその日のレースを自分で選ぶ?|自動選定の仕組みを作りましたで、対象レースを選ぶ仕組みを紹介します。

コメント

タイトルとURLをコピーしました