競馬AIを運用していると、どうしても負けが続く時期があります。
AI指数1位を買う。
外れる。
次も外れる。
翌日も外れる。
気がつけば5連敗、10連敗。
こうなると、人間側はだんだん落ち着かなくなります。
「モデルがおかしくなったのでは?」
「最近の競馬に合っていないのでは?」
「特徴量を変えた方がいいのでは?」
「そろそろ当たるはずでは?」
いろいろなことを考え始めます。
しかし、AI自身には「連敗して焦る」という感情はありません。
正確に言えば、通常の競馬AIが自分の負けを見て何かを考えるわけではありません。モデルは与えられた特徴量から、いつも通り確率を出しているだけです。
それでも、もし競馬AIの運用を一つの観察対象として見るなら、
負けが続いたとき、AIは何を確認すべきなのか
という問いは面白いと思います。
今回は、連敗を見たときに人間の感情ではなく、データ側から何を考えればよいのかを整理してみます。
- 最初に考えるのは「連敗は本当に異常なのか」
- AIは「前に外れたから次は当たりやすい」とは考えない
- 10連敗でも全部p_win0.10なら驚かない
- 「何勝するはずだったか」を見る
- 連敗よりキャリブレーションが崩れていないかを見る
- まずモデル全体なのか、一部条件だけなのかを分ける
- 「最近だけ」悪いのか、以前から弱かったのか
- モデルが悪いのか、買い方が悪いのか
- 的中率が落ちたのか、回収率だけ落ちたのか
- 高配当が消えただけで「不調」に見えることもある
- 逆に一発で過去の不調を全部正当化しない
- 「市場の方が賢くなった」可能性も考える
- データの異常も最初に疑いたい
- モデルをすぐ再学習するのは危険
- 「負けたから変える」ではなく「指標が崩れたら変える」
- AIにとって「惜しい外れ」は存在しない
- 人間は連敗すると原因を一つに決めたくなる
- 「最近負けている」をどこから最近と呼ぶのか
- 「負けている期間」の開始点を後から選ばない
- 連敗中ほどモデルを触らずログを見る
- 「勝てなくなった」ではなく「何が変わったか」を探す
- AIより先に人間の方が壊れていないか
- AIは「取り返そう」としない
- それでも連敗は無視していいわけではない
- 「何もしない」という判断もAI運用の一部
- 逆に変えるべきときは「根拠が残る」
- 負けが続いたときこそAIの存在価値が分かる
- 負けた日のログに残したいもの
- まとめ
最初に考えるのは「連敗は本当に異常なのか」
人間は連敗すると、すぐに原因を探したくなります。
しかしAI的に最初に確認したいのは、
「この連敗は、本当に珍しいのか」
だと思います。
例えば、ある馬券戦略の的中率が30%だったとします。
つまり1レース外れる確率は70%です。
5連敗する確率は、
0.7の5乗。
約16.8%です。
10連敗なら約2.8%です。
10連敗まで行くとかなり低く見えますが、何百レース、何千レースと続けていれば、どこかで発生しても不思議ではありません。
さらに的中率20%なら、10連敗する確率は約10.7%です。
それほど珍しくありません。
つまり「10回も外れた」という事実だけでは、モデル異常とは言えません。
人間にとって10連敗は長いですが、確率から見ると普通に起こり得る。
まずこの違いがあります。
AIは「前に外れたから次は当たりやすい」とは考えない

連敗すると、人間は、
「そろそろ来る」
と考えます。
しかし次のレースのp_winが0.20なら、前に何連敗していても基本的には0.20です。
前の結果が次のレースの勝率を直接押し上げるわけではありません。
ここは以前考えた「確率は収束する」という話ともつながります。
確率が収束するとは、
連敗した分を未来の的中が帳尻合わせしてくれる
という意味ではありません。
長い試行の中で、実際の的中率が真の確率へ近づいていくという話です。
だからAI側から見ると、
5連敗。
10連敗。
という並び自体より、
その各レースで出していた確率が妥当だったか
の方が重要です。
10連敗でも全部p_win0.10なら驚かない

例えばAIが10レース連続で1位馬を出し、その10頭がすべて負けたとします。
見た目としてはかなり悪いです。
しかし各馬のp_winが、
0.11
0.13
0.09
0.15
0.12
0.10
0.14
0.08
0.16
0.11
くらいだったらどうでしょうか。
もともと1頭あたり10%前後しか勝たないとAI自身が言っています。
この場合、10連敗はそこまで不自然ではありません。
一方、
0.45
0.52
0.48
0.41
0.50
0.46
0.44
0.49
0.51
0.47
という馬が10頭連続で負けたなら、話は変わります。
AIはかなり高い確率を付けていたのに、現実が全く追いついていません。
同じ10連敗でも意味は違います。
だからAIが最初に見るべきなのは、
連敗数ではなく、期待されていた的中数と実際の的中数の差
だと思います。
「何勝するはずだったか」を見る
例えば20レースのp_winをすべて足したとします。
0.20。
0.30。
0.15。
0.25。
……。
合計すると4.8だった。
これは単純化すれば、
「この20レースでは平均的に4.8勝くらい期待していた」
と考えられます。
実際の勝利数が4勝なら、それほど違和感はありません。
2勝なら少し下振れ。
0勝ならかなり気になります。
この、
Σp_winと実勝利数の比較
はかなり分かりやすいと思います。
連敗を「何回外れたか」ではなく、
「AI自身は何回くらい当たると思っていたか」
に置き換えます。
これだけでも感情的な連敗の見え方が少し変わります。
連敗よりキャリブレーションが崩れていないかを見る

もう一つ重要なのがキャリブレーションです。
例えばAIが、
p_win 0.10の馬を100頭。
p_win 0.20の馬を100頭。
p_win 0.30の馬を100頭。
出したとします。
理想的には、
10%帯なら10頭前後。
20%帯なら20頭前後。
30%帯なら30頭前後。
勝ってほしい。
これが確率予測としての整合性です。
もし最近、
p_win 0.30前後なのに実際には15%しか勝っていない
という状態が続いているなら、モデルが勝率を過大評価している可能性があります。
つまり問題は「外れたこと」ではなく、
AIが自分の自信を正しく表現できているか
です。
連敗中だからこそ、単純な的中率よりキャリブレーションを確認した方がよいかもしれません。
まずモデル全体なのか、一部条件だけなのかを分ける
負けが続くと、
「AIがダメになった」
と思いたくなります。
しかし実際には、特定条件だけ悪化している可能性があります。
例えば最近50レースを分解すると、
芝 回収率102%。
ダート 72%。
東京 105%。
京都 97%。
中山 61%。
人気1~3番人気 98%。
人気7番人気以下 45%。
だった。
こうなると、
モデル全体が崩れた
というより、
特定の条件で成績が悪い
と考えた方がよさそうです。
さらに、
距離。
馬齢。
クラス。
競馬場。
芝・ダート。
オッズ帯。
騎手。
馬場状態。
などで分けます。
連敗という一つの現象を、そのままモデル全体の失敗へ拡大しないことが重要です。
「最近だけ」悪いのか、以前から弱かったのか

例えば最近の中山ダート1800mで全く当たらない。
ここで、
「最近の中山ダートにモデルが合わなくなった」
と考えたとします。
しかし過去5年を見たら、そもそも中山ダート1800mの成績がずっと悪かった。
なら、最近の連敗で初めて目立っただけです。
逆に、以前は良かった条件が急に悪化しているなら、
環境変化。
データ分布の変化。
馬場傾向。
騎手構成。
レース条件。
などの変化を疑えます。
だから見るべきなのは、
最近悪いかではなく、過去平均との差がどの程度あるか
です。
モデルが悪いのか、買い方が悪いのか
競馬AIでは、予測と馬券戦略を分ける必要があります。
例えばAI指数1位の勝率は以前と変わっていない。
しかし回収率だけ悪化している。
この場合、モデル自体よりオッズ側の問題かもしれません。
AI1位の勝率。
30% → 31%。
ほぼ変わらない。
一方、平均単勝オッズ。
4.2倍 → 2.8倍。
なら、市場に対する割安さが消えています。
予測は当たっている。
しかし安く買えなくなった。
これなら、
「モデルの精度が落ちた」
とは言えません。
競馬AIでは、
予測精度。
オッズ。
購入条件。
馬券種。
資金配分。
を分けて考える必要があります。
的中率が落ちたのか、回収率だけ落ちたのか

連敗していると全部悪く感じます。
しかし数字を分けると状況は変わります。
例えば直近200レースで、
的中率は過去と同水準。
複勝率も同水準。
Log Lossもほぼ変化なし。
しかし単勝回収率だけ70%。
というケース。
これは高配当がまだ出ていないだけかもしれません。
反対に、
的中率低下。
Log Loss悪化。
Brier Score悪化。
キャリブレーションも崩れる。
なら、モデルそのものを疑う理由が増えます。
つまりAIが連敗時に見るべきなのは、
収支グラフだけではありません。
予測性能そのものと、馬券結果を切り分ける必要があります。
高配当が消えただけで「不調」に見えることもある
特に穴馬を含む戦略では、この問題が大きいです。
例えば長期回収率110%の戦略があったとします。
しかし収益のかなりの部分が、
単勝20倍。
30倍。
50倍。
の的中から生まれている。
すると、そうした馬が50レース、100レース来ないだけで、回収率は一気に下がります。
これは戦略が壊れたのではなく、単に高配当待ちの期間かもしれません。
だから、
最大払戻を含む回収率。
最大払戻を除く回収率。
オッズ帯別回収率。
高配当的中頻度。
なども見たいところです。
負けている原因が、
「普段の馬券が外れている」
のか、
「普段通りだが大きな一発がまだ来ていない」
のかで意味が違います。
逆に一発で過去の不調を全部正当化しない
ここは反対方向にも注意が必要です。
100レース連続で回収率70%。
101レース目で単勝50倍が的中。
一気に回収率120%。
すると、
「やっぱりこの戦略は正しかった」
と思いたくなります。
しかし、その一発がなければどうだったでしょうか。
高配当戦略ならそういう構造なのかもしれません。
ただし、本当に再現性があるかは別です。
連敗中も一発的中後も、
同じ指標を見続ける必要があります。
人間は負けていると戦略を疑い、当たると急に信じます。
AIの評価までそれに合わせて動かしてしまうと、検証になりません。
「市場の方が賢くなった」可能性も考える
競馬AIが長期間使われている場合、環境側が変化する可能性もあります。
例えば以前はAIが評価するタイプの馬が市場で軽視されていた。
しかし時間が経つと、
競馬ファン。
予想サービス。
他のAI。
情報サイト。
なども似た特徴を見るようになる。
すると以前5倍だった馬が3倍になる。
勝率は同じでも期待値は落ちます。
これはモデルが劣化したというより、
モデルの優位性を市場が吸収した
状態です。
競馬は市場相手なので、「当てられるか」だけではなく「安く買えるか」が重要です。
連敗や回収率低下を見たときには、AI自身だけでなくオッズ側の変化も観察したいです。
データの異常も最初に疑いたい
AIの成績が急に悪くなったとき、難しい理論より先に確認したいことがあります。
データです。
例えば、
特徴量の一部が欠損している。
騎手コードの結合がずれている。
過去走データが1走分取得できていない。
芝・ダートの分類がおかしい。
レース前オッズの取得時刻が変わった。
学習時と本番時で特徴量の意味が違う。
こうした実装上の問題です。
モデルが急に弱くなったと思ったら、実は入力データが壊れていた。
競馬AIでは普通にあり得ます。
だから大きな連敗が来たとき、
「競馬の世界が変わった」
と考える前に、
パイプラインが正常に動いているか
を確認する方が先です。
モデルをすぐ再学習するのは危険
負けが続くと、
「最新データで学習し直そう」
と思います。
しかしこれは以前考えた再学習頻度の問題につながります。
20レース負けた。
だから再学習。
また負けた。
特徴量追加。
さらに負けた。
ハイパーパラメータ変更。
こうしていくと、モデルが短期的な結果へどんどん合わせられてしまいます。
最悪の場合、
連敗するたびにモデルを壊している
状態になります。
本当に概念ドリフトが起きているなら再学習は必要です。
しかし単なる下振れなら、何もしない方が正しい。
ここを判別するためにも、事前に再学習ルールを決めておいた方がよいと思います。
「負けたから変える」ではなく「指標が崩れたら変える」
例えば、
月1回再学習。
直近500レースのLog Lossが一定以上悪化。
キャリブレーション誤差が一定水準を超えた。
特定特徴量の分布が大きく変化。
といった条件を決めます。
そして、
5連敗。
10連敗。
という感情的に強い出来事は、再学習条件に直接入れない。
これなら人間側の焦りを少し減らせます。
「負けたから直す」
ではなく、
モデル性能を示す指標が悪化したから検討する
という順番です。
AIにとって「惜しい外れ」は存在しない
人間はハナ差2着だと、
「惜しかった」
と思います。
一方、10馬身差で負けると、
「全然ダメだった」
と感じます。
しかし単勝馬券としては両方0円です。
AIの評価では、さらに少し考え方が変わります。
p_winを予測するモデルなら、
勝ったか負けたか
が基本的な教師データになります。
ハナ差2着でも勝利0。
ただしモデル改善を考えるなら、着差や走破タイム、レース内容などを別特徴量・別目的で使うことはできます。
人間が「惜しかったから次は来る」と考える一方、AIにはその物語がありません。
だから連敗しても、
「最近惜しいからそろそろ」
とは考えません。
ここは競馬で人間とAIがかなり違うところです。
人間は連敗すると原因を一つに決めたくなる
5連敗。
10連敗。
すると、
「馬場が悪い」
「騎手が悪い」
「人気馬ばかり買っているから」
「穴狙いすぎ」
など、一つの理由を見つけたくなります。
原因が分かれば安心できるからです。
しかし実際には、
単純な確率変動。
特定条件の弱さ。
オッズ悪化。
モデル誤差。
データ不具合。
市場変化。
複数の要因が同時に起きている可能性があります。
AI的に考えるなら、「原因はこれ」と早く決めるより、
仮説を分けて一つずつ検証する
方が自然です。
「最近負けている」をどこから最近と呼ぶのか
これも意外と難しいです。
直近10レース。
50レース。
100レース。
1か月。
3か月。
どこを切り取るかで印象が変わります。
例えば、
直近20レース回収率40%。
直近100レース95%。
直近500レース108%。
なら、どれを重視するでしょうか。
人間は直近20レースの痛みを強く感じます。
しかしAI運用なら、500レースの情報も無視できません。
逆に500レースが良くても、直近200レースで継続的に悪化しているなら環境変化を疑う必要があります。
つまり、
短期ノイズ。
中期トレンド。
長期性能。
を分けて見る必要があります。
「負けている期間」の開始点を後から選ばない
ここにも注意があります。
「最近調子悪いな」
と思ってチャートを見る。
すると最も高かった地点から現在までを切り取り、
「ここから20万円も減っている」
と感じます。
しかし開始地点を後から選んでいます。
逆に調子の良さを示したいときには、一番低かった地点から集計するかもしれません。
これは人間の都合です。
AIを評価するなら、
月次。
100レースごと。
モデルバージョンごと。
のように、事前に区切りを固定しておいた方がよいです。
そうすれば「負けているように見せる期間」「勝っているように見せる期間」を選びにくくなります。
連敗中ほどモデルを触らずログを見る

もし本当に自分の競馬AIが連敗したら、まずやりたいのは改修ではなく記録確認かもしれません。
例えば、
各レースのp_win。
AI順位。
人気順位。
オッズ。
結果。
レース条件。
購入したかどうか。
期待値条件。
モデルバージョン。
を並べます。
そのうえで、
予測が外れているのか。
市場との価格差が消えたのか。
特定条件に偏っているのか。
単純な下振れなのか。
を見る。
こうして原因候補を絞ってから変更します。
AI自身が何かを考えるわけではありませんが、AIを運用する側がAIらしく考えることはできます。
「勝てなくなった」ではなく「何が変わったか」を探す
連敗を見ると、
「勝てなくなった」
という言葉を使いたくなります。
しかしこの言葉は少し大きすぎます。
もっと細かく、
AI1位の勝率が落ちたのか。
高p_win帯が外れているのか。
人気薄だけ悪いのか。
特定競馬場だけ悪いのか。
オッズが低くなったのか。
購入レース数が増えたのか。
人間側がルール外購入しているのか。
と分解します。
すると、
「AIが勝てなくなった」
という一つの問題が、複数の小さな問題に変わります。
この方が対処しやすいです。
AIより先に人間の方が壊れていないか

ここはかなり重要だと思います。
AIは同じモデルなら、連敗しても同じルールで確率を出します。
しかし人間側は変わります。
10連敗した。
すると、
普段なら見送るレースも買う。
賭け金を増やす。
複勝へ逃げる。
穴狙いへ変える。
あるいは逆に人気馬だけ買う。
こうして購入ルールが変わります。
すると、
「AIが連敗している」
と思っていたものの中に、
人間側が追加した馬券の損失
まで混ざります。
競馬AIの評価を正しくするなら、AIルール内購入と裁量購入を分けておきたいところです。
AIは「取り返そう」としない
人間との違いで最も大きいのは、ここかもしれません。
昨日1万円負けた。
今日のAIには関係ありません。
先週10連敗した。
今日のp_winには関係ありません。
AIは、
「このレースで先週分を取り返したい」
とは考えません。
本来、競馬AIを使うなら、この性質を人間側にも少し借りたいところです。
今日の一頭は、
昨日の損失を回収する馬
ではありません。
単に、
今日この条件で一定の勝率を持っている一頭
です。
この距離感は、連敗時ほど大事になります。
それでも連敗は無視していいわけではない
ここまで書くと、
「連敗なんて全部気にするな」
という話に見えるかもしれません。
もちろん違います。
連敗は重要なシグナルになることもあります。
ただし、
連敗したから異常。
ではなく、
連敗をきっかけに、モデルの健康診断をする
くらいがよいのだと思います。
p_winは校正されているか。
最近のLog Lossは悪化していないか。
特定条件だけ崩れていないか。
入力データは正常か。
オッズ構造は変わっていないか。
購入ルールは守れているか。
こうしたものを確認します。
異常がなければ、その連敗は下振れとして受け入れる。
異常があれば原因を掘る。
この順番です。
「何もしない」という判断もAI運用の一部

競馬AIを作っていると、何か改善したくなります。
特徴量追加。
再学習。
モデル変更。
閾値調整。
しかし連敗後の最善策が、
何もしない
こともあります。
過去500レースでは正常。
キャリブレーションも問題なし。
データ異常なし。
現在の連敗も想定範囲。
なら、戦略を変える理由がありません。
人間にとって「何もしない」は難しいです。
何か変えた方が問題へ対応している気がします。
しかし確率ゲームでは、不調に見えるたびにルールを変える方が危険です。
待つことも一つの運用判断です。
逆に変えるべきときは「根拠が残る」
では、本当にモデルを変えるべきときはどんなときでしょうか。
例えば、
数百レースにわたってLog Lossが悪化。
高p_win帯の実勝率が継続的に下振れ。
複数期間で同じ条件の弱さが再現。
特徴量分布に明確な変化。
データ生成ルールが変わった。
市場との価格差が長期的に消えた。
こうした場合です。
ここまで証拠があれば、
「なんとなく最近ダメ」
ではなく、
「ここが以前と違う」
と言えます。
AIの改修は、この「違い」が説明できてからでも遅くないと思います。
負けが続いたときこそAIの存在価値が分かる
競馬AIが好調なときは、人間も冷静でいられます。
当たる。
収支も増える。
モデルへの信頼も高い。
問題は負け始めたときです。
人間は、
そろそろ当たる。
取り返したい。
モデルを変えたい。
買い方を変えたい。
と動きます。
AIはその間も、
0.18。
0.24。
0.11。
と確率を出し続けます。
このときAIの価値は、「必ず当ててくれること」ではなく、
人間の感情とは独立した基準を残してくれること
なのかもしれません。
負けた日のログに残したいもの
このテーマを実際の観察へつなげるなら、連敗期間には次のような記録を残しておきたいです。
各レースのp_win。
予測順位。
人気。
オッズ。
期待値。
着順。
モデルが期待していた勝利数。
実際の勝利数。
Log LossやBrier Score。
購入ルール内か。
裁量購入か。
これを後から見ると、
単純な不運だったのか。
モデルが過信していたのか。
市場とのズレが消えていたのか。
人間側がルールを崩していたのか。
が少し分かりやすくなります。
「連敗した」という一言より、ずっと情報量があります。
まとめ
負けが続いたとき、AIは何を考えるのでしょうか。
厳密には、通常の競馬AIが連敗を見て自分で悩むわけではありません。
しかし、AI的に考えるなら、まず確認したいのは、
「何連敗したか」
ではありません。
その連敗は確率的にどれくらい珍しいのか。
AIは何勝くらいを期待していたのか。
p_winのキャリブレーションは崩れていないか。
特定条件だけ悪化していないか。
予測精度ではなくオッズが悪化したのではないか。
入力データに異常はないか。
人間側の購入ルールが変わっていないか。
こうしたことです。
人間は10連敗すると、
「壊れた」
と思います。
AI側から見ると、
「想定範囲内の分散かもしれない」
となります。
人間は、
「そろそろ来る」
と思います。
AIは、
「次のp_winは0.18」
としか言いません。
人間は、
「このままでは嫌だからモデルを変えたい」
と思います。
AI的には、
「性能指標が崩れている証拠はあるか」
を確認します。
この違いはかなり大きいです。
競馬AIを使う価値は、予想を自動化することだけではないのかもしれません。
負けが続いたときに、
感情とは別の基準で状況を見るための物差しを残せること。
それも一つの価値だと思います。
連敗した。
だから変える。
ではなく、
連敗した。
まず観察する。
本当に異常なら変える。
異常でなければ続ける。
この順番です。
競馬では、当たりが続く日もあれば、何を買っても外れるように感じる日もあります。
そこで重要なのは、連敗そのものをなくすことではありません。
連敗したときに、自分まで一緒に壊れない仕組みを作れるか。
AIはそのための一つの基準になれるのかもしれません。
そしてもし長い連敗の後に一つ的中したとしても、
「やっぱりそろそろ来ると思っていた」
ではなく、
「この連敗はどこまで想定の範囲だったのか」
と振り返れる。
そんな見方ができるようになると、競馬AIの観察は、的中率や回収率だけを見るより少し面白くなってくる気がします。




コメント