競馬予想AI 再構築

こんにちは、ようへいです。

2019年に作った競馬予想AI。
これを強化しようにもできない現状があり、色々と熟考した結果、競馬予想AIを再構築しようと思います。


前作の競馬予想AIは失敗作

AIが世間で騒がれ始めた2019年、AIへの興味から、競馬をテーマにAIの自己学習を始めました。

当時、AIの作り方は全く分からなかったので敢えて設計せず、LightGBMという機械学習アルゴリズムを使って、行き当たりばったりで開発しました。
(本来は、事前に開発方法を調べ、設計をして開発する、のが筋ですが、早く手を動かして学びたい、という衝動を抑えられませんでした。笑)

結果、競馬予想AIは出来上がったものの、予想精度はイマイチ。
ヘタな予想家よりも低い的中率です。

的中率の低さは、当時は競馬というドメインの理解が足りなかったことと、それに付随してAIの予想精度の良し悪しを決める「特徴量」に不足があったことが原因と考えています。

とはいえ、成功を掴むため失敗なので、良い経験でした。
失敗は成功のもと です。
失敗があっての成功、これ経験値なり。

特徴量とは

機械学習モデルに学習させるデータのことで、学習する対象のデータの特徴や属性を表現します。

例えば、顔写真を学習させる場合、特徴量は顔の色や形、髪の毛の長さ、色、目や鼻や口の位置、大きさなど、これをAIが学習できる形式にしたものを、特徴量と言います。

この特徴量がちゃんと意味のある内容になっていれば、それなりに精度は上がるはずです。
(競馬は生き物のレースなので、「絶対」はありえませんが・・・・)

再構築に至った経緯

2024年中にやりたかった競馬データベースの改修が一通り終わったので、競馬予想AIをもう少し賢くしようと考えていました。

しかし強化しようにも、前作のAIは行き当たりばったり作ったもので、当時の設計思想や設計内容が整理されたドキュメントは作っていません。

今更4, 5年前に作ったものを、ドキュメント無しで、膨大なプログラムだけを見て思い出して整理し、そこから改善点を考えるのはかなり酷な作業。
断片的には覚えていますが、全てを思い出すのは結構辛い。

そこに時間をかけるならば、断腸の思いでこれを放棄し、最近のトレンドを取込みながら、改めてAIについて学習しようと思いました。

実現に向けて考えていること

採用する機械学習モデル

ニューラルネットワークを採用してみたいと思います。

ニューラルネットワークとは、人間の脳の働きを模倣した機械学習モデルの一つで、脳の神経回路の動作を模した数理モデルです。
脳神経細胞である「ニューロン」を数学的に表現した技術です。

入力層、隠れ層(中間層)、出力層から構成され、各層のニューロンがシナプスによって互いに接続され、ネットワークを構成します。

特徴量を設計しなおす

先入観を持たないためにも、過去のプログラムに書いた特徴量は捨て、1から設計しなおします。

今の競馬の知識でどれだけの特徴量を作り込めるか挑戦してみたいです。

いずれ、特徴量の記事は書いてみたいと思っています。

採用するライブラリ

ニューラルネットワークを使うので、TensorFlow(テンソルフロー)を採用します。

TensorFlowとは、さまざまな機械学習の分野で使用するためのライブラリです。

テンソルとは、線形的な量を表す概念を一般化したもので、多次元の配列として表現できるものです。
一言で言うと「テンソル = 多次元配列」。

これに当てはめると、TensorFlowは、多次元のデータ群を流れるようにディープラーニングできるライブラリです。

使い方に特徴があるらしく、ここは課題がありそうですが、試してみる価値はものすごく高いと考えています。

AI開発に向けたデータベースの拡張

特徴量を作るのに様々な集計が必要で、これを都度集計するのはプログラムが複雑化したり、モデルの学習処理の時間が長時間化してしまうので、レース毎の断面であらかじめ集計しておくようにDBを拡張しておこうと思います。

集計済みのデータを扱うことで、プログラムの簡略化、短時間化を狙います。

アーキテクチャ検討

カッコ良く言ってますが、要するに仕様ですね。

現状のDB構成から拡張したデータ群をいつどのタイミングでどのように編集するか。
学習モデルをどういうステップで作成し、どう利用するか。

仕様をしっかり整理しないと、AIを作り始めた時に「あれ?このデータが無い!」と事故りそうな気がします。
気がする、というか、確実に事故りますね。

と、長々書きましたが、そんな野望を考えています。
これを2025年の早いうち、できれば1月中には実装してみたいと考えています。

開発記は追って作っていきます!

#競馬予想AI
#ニューラルネットワーク
#TensorFlow
#Python

いいなと思ったら応援しよう!