【競馬AI】AI_Gaspard v2.00公開。初のメジャーアップデートです。

twitterにて告知しました通り、明日よりAI_Gaspardはv2.00の運用を開始いたします

何が違うの?

圧倒的に特徴量を増やしました。特徴量を分かりやすく言うと予想の材料のことです。具体的な数をお伝えすることは出来ませんが、v1.40の3倍ほどになりました

そもそもどんなAIなの?

知らない方のためにざっくりと。毎週末に開催される中央競馬の各レースごとに3着に入る確率を算出します。

「1着になる確率じゃないの?」という突っ込みが入るかもしれませんが、過去のシミュレーション結果で1着予測モデルでも3着以内予測モデルでも大差のない結果になっています。

モデルを2つ運用するとその分負荷がかかって公開までに時間を要してしまいます。そうなると皆さんが冷静に考える時間を奪ってしまいますよね。その点を考慮しまして、3着以内モデルのみ運用する形としています。

的中率/回収率は?

例として2020年の年間シミュレーション結果は以下の通りとなりました。
※学習データとしてはそれ以前の20年分(1999-2019)を使用しています

まずは単勝。横軸が『買い指数』/縦軸が『回収率』になります。

もっと詳しい数値はこんな感じ。購入数を極端に絞っているわけでもなく、かなり安定していると言っていいでしょう。

買い指数回収率的中数購入数
0.500.9869892509.012589.0
0.530.9788572468.012269.0
0.560.9842962441.011965.0
0.590.9843682410.011675.0
0.620.9873412389.011407.0
0.650.9903292359.011126.0
0.680.9899472328.010853.0
0.710.9817852291.010579.0
0.740.9862992261.010313.0
0.770.9895202231.010048.0
0.800.9882242204.09808.0
0.830.9902032177.09554.0
0.860.9946132151.09337.0
0.890.9927632117.09092.0
0.920.9833602081.08852.0
0.950.9856132056.08612.0
0.980.9826382020.08392.0
1.010.9846011991.08176.0
1.040.9855111952.07951.0
1.070.9844131919.07750.0
1.100.9900521897.07559.0
1.130.9970871873.07346.0
1.160.9883261831.07127.0
1.191.0000721811.06935.0
1.220.9920761779.06777.0
1.250.9850271735.06552.0
1.280.9807351699.06364.0
1.310.9841891671.06173.0
1.340.9925271636.05955.0
1.371.0006591608.05770.0
1.400.9986381573.05579.0
1.431.0006291538.05404.0
1.460.9792151496.05225.0
1.490.9781831461.05051.0
1.520.9854181429.04876.0
1.550.9901761397.04703.0
1.580.9837531359.04524.0
1.610.9886551321.04328.0
1.640.9878541285.04166.0
1.670.9939081254.04005.0
1.701.0110881231.03851.0
1.731.0255831198.03690.0
1.761.0240121162.03544.0
1.791.0193031120.03388.0
1.821.0081281075.03248.0
1.851.0113591041.03099.0
1.881.0113481004.02961.0
1.911.018134973.02840.0
1.940.996263926.02703.0
1.971.011652899.02566.0
2.001.022638864.02434.0
2.031.025716824.02306.0
2.061.040384796.02189.0
2.091.050411767.02067.0
2.121.051802729.01942.0
2.151.049973689.01829.0
2.181.065709651.01706.0
2.211.053420620.01608.0
2.241.060574581.01499.0
2.271.056000544.01400.0
2.301.076085519.01313.0
2.331.078135497.01244.0
2.361.077089470.01161.0
2.391.048944439.01089.0
2.421.047865406.01007.0
2.451.068103381.0928.0
2.481.029384351.0844.0
2.511.050000329.0772.0
2.541.074650311.0714.0
2.571.068684292.0661.0
2.601.085260268.0597.0
2.631.065867243.0542.0
2.661.103960235.0505.0
2.691.109354214.0449.0
2.721.106683193.0404.0
2.751.110773173.0362.0
2.781.137003161.0327.0
2.811.163729147.0295.0
2.841.204215136.0261.0
2.871.233784120.0222.0
2.901.301554111.0193.0
2.931.38757897.0161.0
2.961.46223889.0143.0
2.991.44750075.0120.0
3.021.45961566.0104.0
3.051.50470657.085.0
3.081.46103951.077.0
3.111.52096842.062.0
3.141.70600036.050.0
3.171.66744232.043.0
3.201.69117626.034.0
3.231.65806524.031.0
3.261.65454518.022.0
3.291.61875013.016.0
3.321.6888898.09.0
3.351.6888898.09.0
3.381.4625007.08.0
3.411.3142866.07.0
3.441.3400004.05.0
3.471.3250003.04.0

複勝はこんな感じ。

評価の高い馬にはしっかりと配当が付いてくる結果となりました。以下、単勝と同じく詳細を。

買い指数回収率的中数購入数
0.500.9017403296.012589.0
0.530.8969763281.012269.0
0.560.8999163272.011965.0
0.590.9025103260.011675.0
0.620.9035153245.011407.0
0.650.9028043228.011126.0
0.680.9049113212.010853.0
0.710.9054643190.010579.0
0.740.9008443174.010313.0
0.770.9022893157.010048.0
0.800.9049353147.09808.0
0.830.9072123127.09554.0
0.860.9085893112.09337.0
0.890.9074023089.09092.0
0.920.9070383067.08852.0
0.950.9077103044.08612.0
0.980.9090803028.08392.0
1.010.9149343013.08176.0
1.040.9141622979.07951.0
1.070.9139102958.07750.0
1.100.9120122929.07559.0
1.130.9146612907.07346.0
1.160.9146492881.07127.0
1.190.9196542859.06935.0
1.220.9182382825.06777.0
1.250.9173842788.06552.0
1.280.9158862759.06364.0
1.310.9145152727.06173.0
1.340.9150632683.05955.0
1.370.9167422649.05770.0
1.400.9164722606.05579.0
1.430.9158032560.05404.0
1.460.9136272516.05225.0
1.490.9142552466.05051.0
1.520.9154222413.04876.0
1.550.9173722372.04703.0
1.580.9129092309.04524.0
1.610.9144872246.04328.0
1.640.9146662196.04166.0
1.670.9150312145.04005.0
1.700.9159442094.03851.0
1.730.9205422047.03690.0
1.760.9220091991.03544.0
1.790.9190381931.03388.0
1.820.9154251875.03248.0
1.850.9200061812.03099.0
1.880.9236411749.02961.0
1.910.9243311689.02840.0
1.940.9228261624.02703.0
1.970.9310211567.02566.0
2.000.9396471510.02434.0
2.030.9414141448.02306.0
2.060.9293281385.02189.0
2.090.9259801316.02067.0
2.120.9263651248.01942.0
2.150.9230731175.01829.0
2.180.9245021108.01706.0
2.210.9231971053.01608.0
2.240.924149988.01499.0
2.270.919429926.01400.0
2.300.925514876.01313.0
2.330.923955831.01244.0
2.360.922394779.01161.0
2.390.910744729.01089.0
2.420.905660675.01007.0
2.450.908944625.0928.0
2.480.911493577.0844.0
2.510.921503537.0772.0
2.540.927311500.0714.0
2.570.920424462.0661.0
2.600.916583417.0597.0
2.630.906458377.0542.0
2.660.920198357.0505.0
2.690.938976325.0449.0
2.720.927475290.0404.0
2.750.935359261.0362.0
2.780.947095239.0327.0
2.810.937627213.0295.0
2.840.976628197.0261.0
2.870.975225168.0222.0
2.900.979793148.0193.0
2.931.015528127.0161.0
2.961.046853115.0143.0
2.991.06250098.0120.0
3.021.08653887.0104.0
3.051.07176571.085.0
3.081.03766263.077.0
3.111.05322651.062.0
3.141.12600043.050.0
3.171.11860537.043.0
3.201.09705928.034.0
3.231.07096825.031.0
3.261.15000019.022.0
3.291.19375014.016.0
3.321.3666679.09.0
3.351.3666679.09.0
3.381.3125008.08.0
3.411.3000007.07.0
3.441.3800005.05.0
3.471.4500004.04.0

おおよそ90%前後を推移しています。控除率が20%であることを考慮すれば勝ちと見なすことも出来ますが、それでも元本割れしてしまっては本末転倒です。

この結果から、さすがに複勝ベタ買いで勝ち続けるのは難しいということですね。しかし的中率としては非常に安定しており想定以上の結果でした。3連系の紐としては優秀過ぎると言っていいでしょう。

注意点

上記のシミュレーション結果は『評価1位を買えば勝てる』というものではありません。『年間を通して一定以上の指数の馬をベタ買いすればプラスに収束する結果になった』というシミュレーション結果になります。つまり、一発大きい馬券を当てたのではなく堅実に増やしていった、そして2強と判断された場合は両方買った、といった感じですね。

ここで勘のよろしい方は気付いたと思います。例えば購入対象となる指数が出ている馬が3頭いたとしましょう。そして、それらの馬のオッズ平均が3倍を切っていた場合、最初から損する勝負になってしまうのです。シミュレーション結果としてはプラスに収束することになっていますが、負けが続くと冷静さを失ってしまうでしょう。私のように自動購入プログラムに任せている身ならまだしも、手動で購入される方にとっては確実に痛手となるでしょう。

そこで合わせて公開していくのが『期待値(EV)』です。あくまで目安ではありますが、期待値が低い馬を買い続けた場合はマイナスに収束する確率が高くなっていきます。思い切って切り捨てる際の参考としてご活用いただければと思います。

おすすめの活用法

以前からお伝えしている通り、競馬は予想することも楽しみの1つと考えておりますので、皆様の予想の足しとして使っていただくことを想定して作成しています。具体的には想定より高く評価された伏兵を紐として加えて頂く形をオススメしています。

さいごに

以前のアップデートから3ヶ月少々空いてしまいましたが無事精度を高めることが出来て一安心しています。

とはいえシミュレーションだけでなく実戦で成果を出していかなければ何も意味がありませんので、今後ともアップデートを重ねていく所存です。

今後共々、皆様の馬券購入の検討材料になりましたら幸いです。ただしくれぐれも馬券の購入は自己責任で、無理のないようにお願いしますね。

https://engineer-lime.com/ai_gaspard/index.html

【競馬AI】今後のアップデートロードマップ。【AI:Gaspard】

開発を始めてから早9ヶ月。
当ブログでの公開から早5ヶ月。
そして、専用Webページでの公開から早1ヶ月。

おかげさまで多くの方にご覧いただき、ブログの訪問者数の約5倍くらいにまで達しています。この場をお借りしまして、改めてお礼申し上げます。

https://engineer-lime.com/ai_gaspard/index.html

肝心の予測精度ですが、時には大穴を引き当てたり、時には本命馬を思いっきり飛ばしたりといったところ。完璧には程遠く、まだまだ精度向上の余地があると思っています。

より精度の高いAIを作るべく、今後も日々アップデートを重ねていく所存です。当記事では今後予定しているアップデート内容についてご紹介していきます。

1. 最終目標。

これはとてもシンプル。高的中率/高回収率、それだけです。

「言うは易く行うは難し」という言葉がある通り、それはそれはとても難しい問題。1日や2日で行ったアップデートではとても叶えることの出来ない目標。少しずつ、少しずつ積み重ねて目指すゴールです。

2. 目標達成に向けたロードマップ。

1. 特徴量を増やす。

競馬AIで大事なもの。それは『特徴量』です。

「なんだそれ?」という方に向けて簡単に説明しますと、みなさんが予想されている際に考慮されている要素のことと思っていただければ大体合っています。

例えばダートの短距離が得意な馬がいたとします。
人間が予想を組み立てるとしたら、『テンの速さ』や『ゲートの上手さ』、それから『コーナリングの上手さ』、はたまた『馬の体調』等が挙げられるでしょうか。

競馬AIでは「この馬、テンが速いよ」とそのまま投げるのではなく『テンが速いと言える根拠』、人間が「何をもってそう判断したのか」を教えてあげる必要があります。その判断基準となるデータを『特徴量』と呼びます。

『特徴量』は1つや2つだけではなく、多ければ数百、数千にまで達するケースもあります。これをいかに増やすかどうかが第一関門です。

これまでは過去成績を中心とした特徴量のみを取り扱ってきましたが、次回のアップデートではそれ以外の領域、例えば馬体に関する特徴量なども大量投入いたします。

ただしAIは何でもかんでもデータを突っ込めばいいというものではありません。効果のあるデータのみを突っ込むことで真価を発揮します。頭が痛くなるような細かい調整の積み重ねになりますので、このアップデートには早くとも1ヶ月以上は掛かるかもしれません。

2. コンテンツの拡充。

現在は各レースごとに各馬の分析結果(想定勝率/想定3着内率)を公開しています。

追加を検討しているコンテンツについては以下記事で語っています。

過去記事でもご案内している通り、競馬は予想することも楽しみの一つと考えています。ですのであくまで「この馬って信頼できる馬なのかな?」と最終判断を下したい時に数値を参考にしていただくような運用を推奨しています。その判断基準となるようなデータをどんどん追加していこうと考えています。

3. 収益化。

最もモチベーションを向上させる要素って何だと思いますか?

私は何だかんだで『お金』に勝るものはないと思っています。ですので収益化は誰しもが考える最終目標地点でしょう。私も例外ではありません。

しかし以前から皆様に『どんなに成果が上がろうとも絶対に有料化しない』と何度も何度も伝えてきました。今でもその考えは曲がっていませんし、今後も曲げる気は一切ありません。

じゃあどうやって収益化するのか。3つの要素があります。

1) 広告収入。

ご覧いただいている皆様からすれば『広告うぜぇ』って思われているかもしれませんね。その通りだと思いますが許してください・・・!!

何を隠そう私はWeb広告ベンチャー出身のエンジニア。自分1人の力でどこまで稼げるか試してみたいのです。

2) 馬券収入。

何を作っているか。そう、お金を生み出すための仕組みを作っているのです。

つまりは単純に精度を向上させれば収益化に繋がります。皆様とWin-Winの関係を築き上げるための架け橋です。

3) 年収アップ。

きっとこれは多くの方が盲点だと思われたでしょう。

競馬AI開発として行っている行為はアプリケーション開発と変わりません。つまり、エンジニアとしての市場価値を高める行為そのものなのです。

自分のスキルが向上すれば、そのまま自分の年収アップに繋がっていくのです。

4. マシンの増強。

『開発機』および『サーバ』いずれもスペックアップしていくことを考えています。

今現在使っている開発機は以前別の記事でご紹介したM1チップ搭載のMacBook Pro。
動作は軽快でとても満足の行く買い物でしたがメモリが少ないのが悩みどころ。今あるアップル製品に候補となる製品はありませんので、今後新発売したハイスペックなマシンを購入したいと考えています。

そしてサーバの増強も視野に入れています。
某大手競馬AIではサーバ代に月400万近く掛けているらしいです。それくらいサーバのスペックも重要ということですね。

いずれも大きくお金の掛かる物。そのためにもしっかりと収益化を意識していかなければなりません。

5. 技術公表。

これは完全にオマケなのですが、しっかりと成果が出た暁には内部仕様を少しでも公開しようと考えています。

ここについては今の段階では詳しく語りません。

3. さいごに。

今回はいつもとは少し違った趣旨で記事を執筆してみました。

今後とも競馬AI Gaspardをよろしくお願いいたします。

【商品レビュー】MacBook Pro late2020(M1) 1ヶ月使用レビュー。【Apple】

何だかんだで結局またMacBook Proを買ってしまいました。

前書き

前回記事にしました通り、MacBook Proを新調しました。購入までの間で様々な選択肢がありましたが、結論からすると買って大満足でした。

購入した物のおさらい。

今回購入したのは最新型のM1チップを搭載した、MacBook Pro 13インチモデルです。
MacBook Proの括りとしては最下位モデルに位置しますが、これまでのハイエンド機(30万円〜)に負けず劣らずのパフォーマンスが売りの製品です。

構成はこんな感じ。512GBモデルのメモリを8→16GBに増やしています。

項目スペック
CPU/GPUM1
MEMORY16GB
SSD512GB

結局どう?

先に結論から。M1チップすごいです。

発熱量少ないですし、本当に16インチモデルに搭載されていたi9と遜色ないくらいのパフォーマンス。そして驚異のバッテリー持ち。所詮エントリーモデルの位置付けだしハイエンドモデルの16インチと比べたら劣化するだろう、と思っていましたが見事に期待を裏切られました。

使用感という点についてはサイズダウンしたので画面の臨場感やパームレスト、トラックパッドの使用感は多少変わってしまいましたが、使っていくうちに自分の体が順応してくれるものですね。今では全く違和感ありません。むしろこのコンパクトさが理想と感じてしまうくらい。新型が出たら16インチを買い増ししようと思っていましたが、もし出ると噂されている14インチも同等スペックであれば無理に16インチを買う必要はないな、と思いました。大きな画面で作業したい時は外部ディスプレイに繋げれば何も問題ないですしね。

あえてデメリットを挙げるなら

M1チップはとにかく素晴らしいパフォーマンスを発揮してくれています。メリットについては多数のレビュアー様が取り上げてくれているので、私からはデメリットのみを挙げていきます。

デメリット1: Portが少ない!

分かりきっていたことですが16インチでは左右側面に存在していたUSB-CポートがM1 13インチモデルでは左側にしか存在しません。右側はイヤホンジャックのみ。

ただし実運用の話をすれば正直なところ大きな問題にはなっていません。USB-Cハブを駆使することによって特に不自由なく使えています。

ですが左右にポートがあれば便利なのも事実。デメリットとして取り上げさせていただきました。

デメリット2: しっかり発熱します!

電気で動く機械である以上、発熱は仕方ないですよね。後から発売されたデスクトップモデル、iMacにもそのまま同じものが搭載されるくらいパワフルなわけですから当然です。
巷に溢れている記事では『一切発熱しないのでファンの有無で大きく値上がりしてしまうProは買う価値なし!』という口コミをよく目にするのであえてデメリットとして記載します。

私の場合は通常のネットサーフィンに加えてWebアプリケーション開発や競馬AI開発を行っていますが、この中で最も負荷の掛かる競馬AI開発ではこれまでの16インチと同様にしっかりと発熱します。そして音を立ててファンが回転します。仮にファンレスのMacBook Airを選択していたら後悔していたと思います。

私のように負荷を掛けるような使い方をされる場合はファンの有無はしっかりと気に留めておくべきだと思いました。確かに3万円の価格差は大きいですが、この価格差が寿命やパフォーマンスに直結すると考えています。

デメリット3: M1ネイティブで動作するアプリケーションが多くはない

まだ出始めなので仕方ないですが、まだまだM1チップに最適化されているアプリケーションは少ないのが現状。

ただし可用性の観点で言えばRosetta2の互換によって大半のアプリケーションは問題なく動かせます。実際に私は今までintelチップ版MacBook Proで利用していたアプリケーションは全てそのまま使えました。

ただしM1に最適化されていないアプリケーションの起動時には多少のモッサリ感があります。この点においてはintelモデルの方が軽快。M1チップは何でもかんでも速い、というわけではないのです。

デメリット4: メモリ最大量が16GBと少ない

これは大問題。AI開発を行っているとあっという間に枯渇してしまいます。

しかし動作上は物凄く軽快なんですよね。恐らくSSDの性能がいいからでしょう。言い方を変えれば『SWAPが頻発してしまっている』と思われます。

SWAPというのは開発者にとっては馴染み深いものですが、一般的なユーザさんからするとなかなか馴染みのないものだと思いますので簡単に説明しておくと、SSDやHDDの領域をメモリとして利用する仕組みです。『仮想メモリ』とも呼ばれたりします。

例えば搭載メモリが16GBだとして、16GBでは収まらない量のデータを読み込まなければならなくなった場合、その不足分をSSDに一時的に書き込んで仮想的にメモリとして動作させるのです。

『何が問題なのか』という話になりますが、SSDは書き込み容量や回数に上限があると言われています。SWAPはストレージに対して読み書きを行う物ですから、頻発するようであれば少なからず寿命を削っているのでは、と考えられます。

ここについては長期間使ってみないと正しいことは言えませんが、少なくともいい状態ではありませんね。最低限、メモリの増設は必要だと感じました。

次期モデルでは最大64GBまで搭載出来ると言われていますから、買増しする際は最大まで増強しようと考えています。

デメリット5: 今のところWindowsとの互換はなし

これまではVMWareやBoot Campといった物を利用することによりmacOSとWindowsOSを共存させることが可能でした。これはintel製のCPUを積んでいたためです。M1チップはintel製ではありませんので、この互換が無くなってしまっています。

今後M1チップでも動作するWindows環境が展開されていくことを期待しています。

デメリット6: 安くはないよ?

先に断っておくと私は値段以上の価値があると思っているので10年以上macを買い続けています。ただし他社製品と比較するとどうしても『高いな』と思われているのも事実。ですのであえて突っ込ませていただきます。

今回のM1チップ搭載モデル発売に伴って『めちゃくちゃ性能いい!!』『intel版より性能上がったのに安くなった!』などという書き込みを目にすることがあります。ですが冷静になって他社製品とスペック比較してみてください。これまでのコスパが極端に悪すぎただけであって、今でもまだまだASUSやDellと比較するとハイエンド機の性能は雲泥の差ですし、性能あたりの価格も割高です。

一例を上げるならばASUSのROGシリーズと比較すると一目瞭然。実は今回の買い替え候補の1つでした。候補から外れた理由も説明しておきますと、ハイスペックが故に発熱量が多いこととApple製品で統一したかったことの2点です。いずれもM1搭載MacBook Proでは条件を満たせるものでした。

ASUSのROGシリーズは15万円程度で最新の3Dゲームを動かすことの出来るほどの性能を持っています。対して今回のMacBook Proで15万円というと最下位モデルがやっと。ストレージも256GBと心許ないですし、性能面で見てもグラフィック周りがとても貧弱です。

明確な使用用途や求める条件が決まっている方や、私のようにApple製品にこだわりのある方であれば素直に買えばいいと思いますが、ただ単に「パソコンが欲しい」という方や「とにかくハイスペックなマシンが欲しい」であれば一度他社製のWindowsマシンを調べてみた方がいいと思います。あくまでAppleというブランド製品で、中身は他社との互換を一切考えず独自に作られたmacOSですからね。

まとめ

今回はあえてデメリットを強調したレビュー記事をお送りしました。デメリットを全て許容出来る方にとっては本当に最高の1台だと思いますし、私自身本当に満足しています。

少しでも購入の参考になりましたら幸いです。