競馬AI などのギャンブル AI を作る前に考えること

in #ai3 years ago

ギャンブル AI は勝ってる実績が存在します

競馬や競艇の AI をざっと調査したところ、あきらかに運の要素を超えてしっかりと再現性をもって勝ち続けている AI が存在しています。ここはみなさんググっていただければすぐに出てくると思います。競馬裁判で有名になった卍氏のケースは書籍にもなっているので有名かもしれませんし。

天才も何が当たりかは知らない

まず、ギャンブルにおける結果というのは天才でも事前に知りようがないということを知ってください。天才、もしくはすべての要因を把握して完璧に計算しきれたとしても、結果を知ることはできません。では、なぜギャンブル AI が成り立つのか。

ギャンブル の仕組み

具体例があるとわかりやすいので4面ダイスを振って何の目が出るかに賭けるというゲームがあるとしましょう。

控除率

ギャンブルにはそのギャンブルの運営母体、胴元となるところがいます。例えば競馬なら JRA ですし、公営カジノであればその運営会社です。ゲームの種類によってさまざまですが、まずこの胴元の取り分が存在します。それが控除率とよばれているもので日本の競馬だと 25% 程度、海外カジノだと 5~10% 程度です。

先ほどのゲーム、参加者が4人いて、全員が 100円ずつベットしたとすると、総額 400 円の掛け金があつまります。ここから控除率分をまず運営会社が手にします。控除率が 25% であればこの例だと 100円が運営会社に入ります。

つまり、ギャンブルは胴元は必ず勝ちます。

オッズ

次に、オッズというものがあります。当たったら何倍になって返ってくるかというやつです。

  • 1の目 => 3倍
  • 2の目 => 3倍
  • 3の目 => 3倍
  • 4の目 => 3倍

例えばこんな具合です。4人の参加者がそれぞれ、1~4の目にひとりずつ掛けると、どの目がでても、

  • 胴元に 100円
  • 当選者に 300円
  • はずれた人が 0円

となります。シンプルですね。

集めた掛け金から胴元の分を引いて、当たった人で分配する

と考えればOKです。さて今度は参加者が 10 人になって、少し票に偏りがでました。

  • 1の目に4人
  • 2の目に3人
  • 3の目に2人
  • 4の目に1人

さて、このときオッズはどうなるでしょうか。まず、集まったお金は 1000円なのでまず胴元の取り分を引きましょう。25% なので胴元の儲けは 250 円で、残りの 750 円を勝った人で分配します。

  • 1の目 => 1.875倍
  • 2の目 => 2.500倍
  • 3の目 => 3.750倍
  • 4の目 => 7.500倍

と、このようなオッズにすれば、どの目がでても

  • 胴元に 100円
  • 当選者に上記計算結果に基づいた配当金
  • はずれた人に 0円

となります。オッズのつけかたはいくつかの方式があるのですが、だいたいこういう感じだと思っておけば OK です。

理想の的中率

さて、今お話した例ですが、実際にこんなオッズがついた4面サイコロのゲームがあったら、あなたはどの目に賭けますか?事前に、どの目も同様に 1/4 ずつの確率で出るということがわかっているとします。つまり、その逆数である 4倍以上のオッズがついているところに賭ければ、期待値はつねにプラスになるのです。この例でいえば、4の目に賭けるのがいいわけです。当たり前ですね。サイコロの出目によっぽどの偏りがない限り、こんなにオッズに乖離がでれば勘でもわかります。

これがギャンブルで勝つ方法です。まとめると

理想の的中率と実際のオッズを賭けて、1以上になるところに賭ければ回収率がプラスになる

これが理解すべき最重要な話で、これ自体は AI 作りに関わらず、ギャンブルで勝つ方法のベース知識になります。

ギャンブルで勝つためには、

的中するところを予測するのではなく、本来の的中率よりオッズがよいところを見つける

という作業になります。

勝つ馬を当てるのではないのです!

オッズというのは事前に公開されます。さあ、ギャンブル AI を作るうえでやるべきタスクがなにかわかりましたか?そうです、本来の的中率 を予測することです。これだけです!これをいかに正確に予測するか、それだけに課題は絞られました。

完全な AI とは

ここに完全な AI があるとします。これは冒頭で述べた天才と同じ存在ですが、これにわかるのは、本来の的中率 です。例えば先ほどの簡単なゲームの例は、AI なんか作らなくとも、なんならアルゴリズムなど作らなくとも、それぞれの目の本来の的中率は 1/4(=25%)というのがわかります。参加者のレベルが低ければ、ベットに偏りが生まれ、4倍以上のオッズが付くところが出てくるかも知れません。その場合、そこに賭ければ OK なわけです。しかしここまでシンプルなゲームだと、先ほどの例でいえば 11人目の参加者は迷わず 4の目にベットします、そうすると、オッズは途端に 4倍未満になり、4の目も利益的ではなくなります。こうなると、もはやこのゲームは完全に文字通りギャンブルになり、どの目に賭けても期待値がマイナスになり、最大の期待値を得るには参加しない方が良い、という結論になります。

本番のギャンブル

では、実際のギャンブルはどうでしょうか。競馬や競艇といったギャンブルは説明変数に相当する要素が複雑で、事前に 本来の的中率 を正確に知ることは難しいです。そのため、人のいろいろな思惑が入り乱れて、いろいろな偏りが生まれて、オッズが形成されることになります。その形成されたオッズでは、本来の的中率 がわかっていれば、先ほどのサイコロの4の目のように、いわゆるおいしいオッズが付いている状態も生まれてくるわけです。これらのゲームが、AI の参入余地があるくらい複雑だからギャンブル AI というのが成り立つのです。

サイコロの例でもう少し

さて、4面ダイスの例をもう少し使いますが、今度は実際にこのダイスを100万回くらい振ってみたところ、少し偏りがあることがわかりました。(= 本来の的中率 )

  • 1の目 => 30%
  • 2の目 => 29%
  • 3の目 => 28%
  • 4の目 => 10%

こんな感じで偏っていることがデータからわかっているのですが、参加者はこれを知らないとします。なんとなく、1は出やすく、2,3 はまあまあ出る、4は出づらい、くらいの雰囲気は知っているという感じをイメージしてみてください。で、票はまたしてもさきほどと同様に割れました。

  • 1の目に4人
  • 2の目に3人
  • 3の目に2人
  • 4の目に1人

そのためオッズも同様に

  • 1の目 => 1.875倍
  • 2の目 => 2.500倍
  • 3の目 => 3.750倍
  • 4の目 => 7.500倍

となります。さて、今回のケースではどこにベットしてる人たちが期待値プラスになっているでしょうか。本来の的中率 とこのオッズを掛ければわかります。

  • 1の目 => 1.875倍 * 30% = 0.5625
  • 2の目 => 2.500倍 * 29% = 0.725
  • 3の目 => 3.750倍 * 28% = 1.05
  • 4の目 => 7.500倍 * 10% = 0.75

はい。でました。つまり、3の目に賭けるのがベストだったわけです。ここでわかるのは、

  • もっとも出やすい、つまり的中率が高い 1の目に賭けると、勝つ頻度は一番多いのですが、期待値はマイナスであるということ。人間の心理が偏りやすい、的中率を最大化させてしまう例。勝つ馬に賭けようとしてしまう。
  • オッズが一番高い4の目に賭けると、実はオッズ以上に的中率が悪く、これも期待値はマイナスであるということ。
  • 人間の勘によらず計算により 本来の的中率 がわかれば、期待値がプラスになる(今回の場合3の目)に賭けることができたということ。

です。

ギャンブル AI の作りはじめ

以上を踏まえて、ギャンブル AI の作りはじめのステップを紹介しておきます。まずは単純なゲームからがいいと思いますので、単勝で勝つ AI を作るところから始めるのが手をつけやすいと思います。(手はつけやすいですが勝つ AI を作るのは難しいかも。複雑度が高いほうが、AI 有利なのは上に書いた通りで、単勝は複雑度が低いので)

  • 各種データを集める
    • 少しググればデータの集め方、買い方、スクレイピングの仕方など出てきます。
  • 目的変数を勝率=的中率とし、自分なりに説明変数を考える
    • 説明変数には必要な前処理を加える
    • カテゴリかるデータの処理
    • 正規化など
  • バックテスト用に今年のデータなどはよけておき、昨年以前のデータなどでモデルを作る
  • LGBM などで適当に学習させる
  • よけておいた今年のデータでバックテストする
    • 出てきた的中率にオッズをかけて期待値が1以上のものを買うというシミュレーションなどをしてみる

躓きポイントをあらかじめ知っておくと、ここさえ乗り越えられれば、という気持ちになると思うので書いておきます。

  • データ集め
    • ノウハウはいろいろ散らばっていますがそれでもなお自分で集めるのは面倒
    • スクレイピングコードなども転がっているが使うのが面倒
    • 自分が使いやすいと思うフォーマットじゃなかったりする
    • 競馬に関しては本当に使いたいデータは有料だったりする
    • スクレイピングを自作するのだけでも結構骨が折れる
  • 自分なりに説明変数を考える
    • 多少なりとも対象のゲームに対するドメイン知識がないと結構お手上げ
    • 実際、ここのノウハウがチューニングのほとんどを占めるといえる
    • だから大変
    • 前処理のチューニングも大変
    • とはいえここは、ダメなら精度が低いだけで、一旦結果を出すところまでは行けるのでやってみるのがいい
  • バックテスト
    • ちまちま手動でもできるのだが、最初にデータ取得したものを使って、バックテスト自体も自動化できるところまで頑張って作っておくと、パフォーマンスチューニングが楽にできる。
  • 本番化大変
    • アルゴリズムができてもすべてを自動化するのはさらに時間がかかる
    • 自動データ収集
    • 自動売買
    • ただしこれもできなくてもなんとかなるので、本格的に自動化して生計を建てようと思うまでは、買い目のアドバイスまで作って、実際に自分で買うのでも十分
    • なんなら実はバックテストだけでも結構楽しい

(おまけ)ギャンブル AI の終焉

ギャンブル AI が終焉するのはどういう状態でしょうか。これも簡単です。AI が進化し、みんながなにかしらの AI を使うようになり、多少の精度の差はあれど、かなり多くの人が 本来の的中率 を知る状態です。こうなると、形成されるオッズと 本来の的中率 の乖離が大きいところが出づらくなり、仮に多少の偏りがでても、控除率を凌駕する配当金を得にくくなります。最初に話した、4面ダイスのゲームがギャンブルにならないのと同じ状態が、競馬などの複雑なゲームでも起き始めてしまうということです。

ギャンブル AI 作者がそれを公開したり、買い目の公開を控えたりするのはこのためです。単に儲けをひとに譲りたいだけでなく、広まると、このギャンブル AI の終焉が来るのがより早くなり、儲けを人に譲るのみならず、自分自身の勝ちも価値も相対的に薄めてしまうことになるからです。

つまり仕事に例えると

少なくともギャンブル AI は上記のような思考で、あきらかに技術エッジを利用して勝っている人たちがいます。この方たちのやっていることは真似しづらく、コモディティ化しづらいので、技術的競合優位を持っていると言えます。マーケティングにおける予測モデルの AI についても同じことが言えると思います。マーケティングの勝ち筋を提示してくれる理想的な AI ができたのなら、それは技術的競合優位となって誰にも真似されないものとなります。僕はこういうものを開発したいと考えています。

マーケティング AI の終焉は?

とはいってもやはり長い年月をかければ、そうした技術的競合優位もまたコモディティ化していき、前述のギャンブル AI の終焉と同じような世界に行き着くのではないでしょうか。しかし、マーケティング AI の分野がそこに行き着いたとしてもそれは嘆くことではありません。それこそが、ノバセルの目指している「マーケティングの民主化」が達成された世界なのではないでしょうか。

Sort:  

こんにちは。ここで日本コミュニティーをやっています。
https://steemit.com/created/hive-161179
よかったら参加してみて下さい。

image.png

ありがとうございます!
Thank you!