【AI開発記#5】AIに数値以外を教えるということ特徴量の+αの話

先週はWIN5が大荒れでしたね!土曜はキャリーオーバー、日曜は当選者4億円オーバー!夢がありますよね。私のAIはWIN5には対応していないので、久しぶりに遊びで凱旋門賞に手を出してみたり。AI以外の予想も、たまには楽しいものです。こちらの連載もはや5話目になりましたね。楽しいです。予約投稿なども出来るようになったのですごく便利になりました!運営さんありがとうございます!!
さて、本編です。 前回は、AIに学習させるための「特徴量」の話をしました。そして、その最後に「+α」という、次の壁の話をしましたね。 今日は、その「+α」の正体について、話をしていこうと思います。
AIの、たった一つの弱点
AIは、簡単に言ってしまえば「めちゃくちゃ賢い計算機」です。 しかし、その計算機には、一つだけ致命的な弱点があります。それは、「数値」は理解できても、「文字」を理解できないということです。
例えば、「中山競馬場」であったり、「横山」と言った騎手の名前であったり、もっと言えば「ジャスティンミラノ」という馬名も、AIにとっては意味不明な文字列でしかありません。 でも、これをAIに理解させなければ、本当の意味での競馬予想はできませんよね?
解決策①:AIに「YES/NO」の札を渡す
この問題を解決するための、一番基本的な方法が**「One-Hot Encoding(OHE)」**です。 難しそうに聞こえますが、やっていることは非常にシンプル。AIに、たくさんの「YES/NO」が書かれた札を渡してあげるだけなんです。
「このレースは、東京競馬場で行われますか? →(1)YES /(0) NO」
「このレースは、中山競馬場で行われますか? →(1)YES /(0) NO」
「このレースは、京都競馬場で行われますか? →(1)YES /(0) NO」
このように、競馬場ごとに「YESかNOか」を1と0で答えさせることで、AIはそれぞれの競馬場を、全く別の、独立した個性として、正しく認識できるようになるのです。 もちろん、これに加えて「直線の長さ」や「坂の有無」といった情報を与えれば、AIの理解はさらに深まります。
しかし、ここに「ワナ」がある
「なるほど、じゃあ騎手も馬名も、全部この方法で教えればいいじゃないか!」 …そう思いますよね。しかし、そこにこそ、AI開発における、非常に有名で、そして非常に厄介な「ワナ」が隠されているんです。
競馬場であれば、特徴量の数は10個増えるだけです。 しかし、これが騎手であれば、どうなるでしょう?
JRAに所属する現役騎手は、200人弱います。これを全てOHEすると、私たちのデータベースには、一瞬で200個もの、新しいカラム(列)が追加されてしまいます。 これが、馬名であれば年間3000頭以上もの馬が増えます。
これを、AI開発の世界では「カラムの爆発」と呼びます。そして、この爆発こそが、AIの頭脳をパンクさせてしまう、一番の原因なんです。
馬券種で例えるなら、馬連とWIN5くらい、計算量が違います。選択肢が200、3000と増えるだけで、AIが処理しなくてはいけない計算は、爆発的に増えてしまうのです。 私の1.5万円のノートパソコンでは、火を噴いてしまいますね(笑)。
では、どうすれば良いのか?私なりの解決策
じゃあ騎手や馬はどうすれば良いのさ?という事で、ここで私なりの考え方をご紹介させていただきます。
まず馬名ですが、これは正直な話、諦めてしまった方が早いと思います。馬名で馬が勝ち負けするわけではありませんからね。過去のレースデータという形で、その馬の能力は十分に特徴量として与えられます。馬名で予想するのではなく、そのレースに出走する馬の能力値が高い馬を探すという方が、明らかに効率的です。
次に騎手の場合です。 これは、騎手名に対応する、意味のある「数値」を作ってあげることで解決します。 それは、複勝率や勝率など、なんでもいいと思います。しかし、ただの複勝率では、AIは「人気馬に多く乗る騎手」を高く評価するだけで、回収率には繋がりません。的中率は上がるのに、儲からない、という状態になりがちです。(AIがルメール狂い、戸崎狂いになります。)
そこで、折角うまぴっくというサイトで連載をさせていただいているので、今回はわかりやすく「うまぴっく氏のロジック」をお借りしてみましょう。 うまぴっく氏の記事を読む限り、「騎手×厩舎の的中率、回収率」のような、非常に高度なデータを使われているようです。(厳密にはもっと詳しいとは思いますので、あくまでも分かりやすい例えとして使わせていただきました、間違っていたらごめんなさい!)
これを、そのままAIに計算させるのです。 「全データの中から、騎手と厩舎の組み合わせごとの、複勝回収率を計算して、それを新しい特徴量にして!」と、Geminiちゃんにお願いをする。 そうすれば、AIは「この騎手と、この厩舎の組み合わせは、なぜか期待値が高い」という、人間では気づけないような「相性」まで、学習してくれるようになるかもしれません。
もちろん、これは一つの例です。必ずこうしなきゃいけないわけではなく、本当に自身で考えて導き出したデータをAIに与えた方が、開発はもっと楽しくなると思います。
これも立派な、騎手を使ったデータになりますよね。 じゃあ、騎手単体ではどうするのか?…そこは、ぜひ皆さんで考えてみてください!もちろん「わからないから教えてくれ」と言われれば私で良ければいくらでも協力させていただきます!
開発記は、いよいよ次回は、「機械学習させてみよう!」です。
(続く)
私のNoteです。 https://note.com/justinpalace13
※この記事は私のAI予想が当たりますよと言う話ではありません。AI開発の簡単さや楽しさが伝わり、少しでも皆さんのAI開発のヒントになればいいなと思って始めた記事になりますので、よろしくお願いいたします。
コメント
コメントを読み込み中...