前回は、ボートレース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がその日のレースを自分で選ぶ?|自動選定の仕組みを作りましたで、対象レースを選ぶ仕組みを紹介します。


コメント