今回の記事は「競馬AIを作りたい」ということで、競馬AIについて紹介する。
ここでは、競馬AIの簡単な歴史と仕組み、作る目的のようなものを簡単にまとめる
AIとは
まず、一般的概念のAIについて説明する。
AIの一般的理解はあるものの、共通の定義があるものではない。
そして、「知性の一部」とあるように人の全てではない。人間が行うあるタスクにおいて専門的に学習し再現すると言う認識を持つと良いだろう。
つまり、特定の分野に特化して使用すれば人間と同等、いやそれ以上に能力を発揮する可能性がある。
AIの歴史
歴史的には、1950年代からAIの概念は存在している。
その昔は、プログラムに「〇〇という条件のときは、〇〇をする」のようなルールを人間が決め、そのルールに沿ってAIが自動的にその行動をするものであった。
一度ルールを決めればプログラムは忠実に行う。人間だと見逃しや、設定範囲のギリギリの条件を見誤ることもある。それがプログラムにはないのだから、すでに優秀である。
競馬に例えると、「前走4着馬の単勝をすべて購入する」とルールを人間が決めてあげれば、見逃すことなくすべて購入する、というイメージだとわかりやすいだろう。
人間が「この馬は前走4着だけど、今回は好走しないだろう」と思って買わない選択を取るところや、「この馬も前走4着だった。見逃してしまった」となるところを、プログラムは感情抜きで淡々と購入するという感じである。
この技術を「ルールべース」技術と呼ぶ。
次に、機械学習と呼ばれる技術が出現した。
機械学習は、予測に重要だと思われるデータを人間が設定し、データと実際の結果の関係性をプログラム自身が学習する。
予測するためのデータをプログラムに与えると、プログラム自身が学習した傾向に沿って結果を予測して出力するというものである。
これも競馬に例えると、過去のレースデータを準備し「着順が上位に来るには、前走の走破タイムが重要だ」とファクター(これを特徴量と呼ぶ)を設定してプログラムに入れると、着順と前走の走破タイムの関係を学ぶ。
そして今回のレースデータを入れると、プログラム自信が学習した経験則に基づいて結果を予測する。
ここで注目したいのは、プログラム自身がデータと結果の関係性や傾向を学習してその通りに結果を予測するということだ。
「ルールベース」から「機械学習」に進化しただけで、ほとんど人間に近い思考ができるようになるのである。
また、学習に使われるプログラムは確率論・統計学的理論も組み込まれており、下手な人間よりよっぽど能力が高いものとなる。
しかし、機械学習には与えられたデータ以外の情報がないため、人間がパドックの馬の雰囲気や気配、騎手の心理のようなものを予測に組み込むことはできない。
とは言え、データが多ければそれだけ能力が上る可能性があり、この時点で人間と十分に戦える。
そして近年話題の「ディープラーニング」という技術が出現した。
ディープラーニングは深層学習とも呼ばれており、機械学習のカテゴリの中の一部の技術という位置づけである。
入力データから着順に影響がありそうなデータを見つけ、組み合わせ、学習する。
機械学習と異なるのが人間が設定していた特徴量自身もディープラーニング自身で見つけて学習する点である。
さらにディープラーニングは学習したことが間違っているとわかると、更にそれを自分で修正して学習し直し成長していく
例を挙げると、人間がプログラムに過去のデータを入れる。すると「直線1000mのレースでは、斤量が着順に影響する」と学習する。
その後、実際の結果を入力すると「斤量だけが影響しているわけではないな、斤量÷体重をした数値のほうが影響しそうだ」と再度学び直し、成長していく。
ほぼ人間のように学んでいくのがすごいところである。
と、このようにAIの技術はものすごいスピードで成長している。
具体的な事例については、この書籍を読んでほしい。
近年の競馬AIの全貌が理解できるため、おすすめしたい。
競馬AIとは
AIは特定の分野に特化した専門家と表現するのが良い。では、競馬という分野に特化させてみよう。というのが競馬AIの考え方である。
最近「競馬AI」というワードはよく目にする方も多いだろう。
松風やゆまに代表される競馬AIが、競馬データを学習し予測した結果をもって自動で馬券を購入している。
パルミューチュアル方式と呼ばれる日本の馬券システムの中で、一般の競馬ファンとしのぎを削っている。
馬連馬単、3連複3連単等の組み合わせ馬券から、人間が見つけるには時間が足りず困難なオッズ妙味を見つけ出し購入する。
これがAIには可能になる。
競馬AIは、機械学習やディープラーニングの技術を用いて開発された、勝ち馬を予測するプログラムのことである。これを予測モデルと呼ぶ。
その予測モデルを利用し、勝つと予測された馬や上位と予測された馬の馬券を自動で購入するプログラムとかけ合わせて、運用する。
これが、現在の競馬AIである。
開発に関して、機械学習やディープラーニングの技術を利用するために確率論や統計学、学習モデルのアルゴリズム等、知識として知っておくべきことがたくさんある。
ただ、プログラミング言語の中には、そのような知識を詰め合わせて作られたライブラリというパーツみたいなものが存在する。
そのライブラリを使って開発すると、1から機械学習モデルを作らなくても、適切なデータと予測したいもの、設定値の調整程度を行うことで、簡単に開発が可能である。
ここで「簡単に」と表現したが、ライブラリの使い方、引数、プログラミング言語を使った開発力、アルゴリズム等を理解していなければ開発することはできない。
だから、相応の学習と知識の習得は必須となっている。
競馬AIを作りたい
ここからが本題である。
私はデータサイエンティストとしてIT企業で勤務する人間で、統計学的知識を使ったデータ分析やAIモデルの開発業務を行っている。
今までの知識や、これから学習する知識を集結させて競馬AIの開発をしたいと考えている。
現在単勝オッズの予測モデルを開発している。某競馬サイトの予想オッズよりも精度が高く、予想の目安になるものを目指して開発している。
今後も精度改善は行うものの、ある程度開発が終了し、次の開発で馬券になる馬を予測するモデルの開発をしたいと考えている。
このモデルを簡単に「競馬AI」と呼ぶことにする。
現在は(2022年8月16日現在)、開発準備を行っている。
- 開発に必要な技術調査
- 競馬AI開発をしている他の人の発信情報の調査
- 競馬AIや競艇AI、競輪AIの開発日記等のインプット
- モデル作成時に特徴量になりそうなデータの調査
本格的な開発はこれから行っていくが、やるからには本気で開発し実際に勝てるモデルを作成したい。
開発について
開発についての「開発日記」を今後記事としてアップしていくことにする。
開発視点から見える情報が競馬予想の役に立つこともあると思っているからである。
また、開発には膨大な時間、マシンメンテナンス費・開発費・関連書籍等の費用がかかることが予想される。
そのため即座に開発することはできないが、時間をかけてゆっくり開発していくことにする。
開発中には、AI予想情報をTwitter(@chance)で投稿する。
ぜひ、いろいろな意見を頂きたいと思っている。
応援よろしくお願いいたします。
コメント