前回は、ボートレースAIの予想処理が数秒遅れてしまった問題を修正した話を書きました。
直前情報を少し早めに取得して、正式な判定時間では最後の判定だけを行うように変更しました。
これで、決めた時間にAI予想を動かせるところまで進んできました。
そして次に取り組んだのが、
「今日はどのレースを予想するのか」
を毎回人が決めなくてもよくする仕組みです。
ここでいう「AIが選ぶ」は、予想スコアを使って一番勝てそうなレースを探すという意味ではありません。
今回は、その日のレース予定から候補を自動で絞り、1レースを選ぶ仕組みについて紹介します。
これまでは、人が対象レースを決めていた
これまでのテストでは、
「今日はこのレースで試そう」
と人が対象レースを決めていました。
AIは、指定されたレースの情報を取得して予想します。
この方法でも検証はできます。
ただ、毎日続けるとなると、
- 当日の開催を確認する
- レース時間を確認する
- テストできそうなレースを探す
- 対象レースを指定する
- その時間に処理を動かす
という作業が必要になります。
毎朝これを人がやっていると、自動化とは言いにくいですよね。
そこで、
その日のレース予定から、対象レースを自動で決める仕組み
を作り始めました。
毎朝取得したレース予定を使う
このAIでは、毎朝6時30分に全国24場のレース予定を取得しています。
この予定には、
- どの競艇場で開催されるか
- 何レースあるか
- レースの締切予定時刻
など、その日の処理に必要な情報があります。
以前は、この情報を確認してから人が対象レースを決めていました。
現在は、この予定データを使って、
システム側で候補レースを自動的に探す
ところまで作っています。
「一番勝てそうなレース」を選んでいるわけではない
ここは少し注意が必要です。
「AIがレースを選ぶ」と聞くと、
AIが一番当たりそうなレースを探している
ように思えるかもしれません。
でも、今やっていることは違います。
現在の自動選定では、
予想AIのスコアを比較してレースを選んでいるわけではありません。
見るのは、
「このレースなら、安全に決めた時間でテストできるか」
という条件です。
つまり今の段階では、
勝てそうなレース探しではなく、安全に検証できるレース探し
です。
なぜ「安全に検証できるか」が重要なのか
ボートレースAIの検証では、結果だけを見ていません。
たとえば、
- 予定した時間に処理できるか
- 直前情報を正しく取得できるか
- 判定時間に間に合うか
- 後から予想を作っていないか
といった部分も重要です。
いくら的中していても、
結果が分かったあとに作った予想では意味がありません。
また、処理が間に合わなかったレースを後からやり直せば、同じ条件での検証ではなくなってしまいます。
だからこそ、今はまず、
決めたルールで安全に処理できるレースを自動で選ぶ
ことを優先しています。
候補を絞って、1レースを選ぶ
その日の予定から条件に合うレースを探し、候補を絞ります。
現在のテストでは、候補を最大3レースまで絞り、その中から1レースを採用しています。
ここでも、予想の強さを比較しているわけではありません。
あくまで、
その日の自動テストに向いているか
という運用上の条件で選びます。
これにより、人が毎朝レース表を見て、
「今日はこれにしよう」
と決める作業を減らせます。
選んだあとは、AI予想へつなぐ
対象レースを決めたら、次はAI予想です。
選ばれたレースについて、
- 必要な直前情報を取得
- AIスコアを計算
- 予想順位を決める
- 買うか見送るか判定する
という流れへ進みます。
この「選ばれたレースをAIが予想する処理」自体は、すでに実際のレースで動作確認しています。
つまり、
「レースを選ぶ仕組み」
と
「選んだレースを予想する仕組み」
は、それぞれ動くところまで来ています。
今は、この2つを完全につなぐところ
では、全部自動になったのかというと、まだそこまでは行っていません。
現在は、
自動でレースを選ぶ処理と、自動予想を完全につなぐ最終確認
を進めています。
イメージとしては、
毎朝レース予定を取得
↓
候補レースを自動で絞る
↓
1レースを選ぶ
↓
そのレース専用の実行準備
↓
レース前に直前情報を取得
↓
AI予想
↓
買う・見送るを判定
という流れです。
人が途中でレース番号を入力しなくても、この一連の処理がつながることを目指しています。
「PURCHASE」でも舟券は自動で買わない
ここも誤解されやすいところです。
AIでは、条件を満たした場合に「PURCHASE」という判定を出します。
ただし、
PURCHASE=自動で舟券を購入する
という意味ではありません。
現段階では、
PURCHASE
↓
判定を保存
↓
停止
↓
人が確認
という形です。
実際の舟券購入まで自動化しているわけではありません。
レース結果の確認もまだ自動ではない
同じように、レース終了後の、
- 結果取得
- 払戻確認
- 的中判定
- 回収率への反映
なども、現在は完全自動ではありません。
予想を出したあとも、
人が確認してから次の処理へ進む
ようにしています。
自動化できるからといって、一気に全部つなぐのではなく、ひとつずつ確認しながら進めています。
自動化の目的は、人を完全に外すことではない
AI開発をしていると、
「最終的には全部AIに任せるの?」
と思われることがあります。
でも、今の目的は少し違います。
毎日同じことを繰り返す部分は、自動化した方が安定します。
一方で、
- 予想結果の確認
- 異常がなかったか
- 本当に次へ進めていいか
といった部分は、まだ人が確認した方が安全です。
人がやる必要のない作業は減らし、判断が必要なところは人が見る。
今は、その形を作っています。
AIが賢くなったというより、運用が少し成長した
今回の開発は、AIの予想精度を直接上げたものではありません。
予想ロジックも変えていません。
変わったのは、
毎日AIを動かすための運用部分
です。
最初は、
「今日はこのレース」
と人が指定していました。
そこから少しずつ、
- 毎朝の予定取得
- 候補レースの抽出
- 対象レースの選定
- 予想開始の準備
まで自動で進められるようになってきました。
AIそのものだけでなく、
AIを毎日使える形に育てている
という感覚に近いです。
まとめ
今回は、その日のレース予定から候補を自動で絞り、対象レースを選ぶ仕組みについて紹介しました。
ただし現在の自動選定は、
AIが一番勝てそうなレースを選ぶ仕組みではありません。
あくまで、
決めた時間・条件で安全に検証できるレースを自動で選ぶ仕組み
です。
選んだレースをAIが予想する処理も、すでに動作確認できています。
現在は、この2つを完全につなげるところまで進めています。
少しずつですが、
「毎朝、人がレースを指定してAIを動かす」
ところから、
「予定を見て、対象を選び、予想まで進む」
仕組みに近づいてきました。
自動化はまだ途中です。
次は、この「自動選定」と「自動予想」を実際につなげて、人が途中で操作しなくても動くか試してみます。
うまくいったことも、失敗したことも、そのまま開発日記として残していこうと思います。
次回は、レース選びから予想まで、ついに全部つながった|ボートレースAI開発日記⑤で、レース選びから予想までをつないだ流れを紹介します。


コメント