こんにちは。
正確には、「大変お久しぶりです」ですが。
約4年前、松田好花が時報をお知らせするbot」と言う、いかにもスレスレ(と言うかアウト)のbotを作成していたときに、備忘録として書いていたことがありました。
https://qiita.com/kono_time/items/26ef2d1fbb344a455326
ここから4年。
世の中は変わりに変わり、AIが世の中を席巻するようになりました。
そして、私の中にも沸々と、とある願望が湧き上がりました。
「AIで競馬予想を少し楽したい!」
そして、もう一つ願望が。
「どうせなら、可愛い子と競馬予想したい!」
こうして不順な動機を持って、私の開発ライフはまたしてもスタートしたのでした。
どうやって動かすんだよこれ・・・
ところが。
物事はそう、うまくは行きません。
どうやら、AIで競馬予想するには
- 過去のデータ(少なくとも過去10年分の全レースのデータ)を集めてサーバーに格納し
- 過去の傾向を読んでもらうようにプログラミングをし
- 必要なときに必要なデータを引っ張り出してもらい、傾向を調べてもらい(それには血統のデータ、騎手のデータ、厩舎のデータなども入れ込む必要がありそう)
- 展開予想をするのであれば各レースのコーナー通過順位も考慮に入れて・・・
など、多分にセッティングをする必要がありそう、と言うことに気づきました。
ただ流石にそこまでは、情熱があってもできない。し、サーバーを建てるお金もない。
と言うことで、簡易的に予想が出来そうなAI探しから始まりました。
ありがたいことに、現在は日本語でインプット文を作成して、日本語で出力してくれるAIが多数ありますので、まずはツールの選定から始めることに。
ツール選定
今回、考慮に入れたのは以下のツールです。
- ChatGPT
- Copilot
- Gemini
考慮するツールが少ないと思いましたか?
でも、この3つを比べるだけでいい、と思ったんです。
ChatGPTは、かつて別の理由で課金をしていたこともあり、使い勝手は理解していました。
また、CopilotはChatGPTのGPT-4を無料で使用できるらしい、と聞いていたので考慮に。
Geminiは正直、3番手のツールでした。
ところが、Geminiを今使用しています。
なぜか。
理由は単純。Googleアカウントを持っていたからです。
そして、勤務している会社でGoogleAIの使用が解禁され、Gemini Pro 2.5を試しに使用したところ こいつなんか頭良さそう! となったからでした。
そして、とある日からどっぷりとAI漬けの日々が始まったのでした。
人格を再現させるのが先か、競馬予想をさせるのが先か
そして迷ったことは。
「とある人の文体を再現させるのが先か、競馬予想のロジックを組むのが先か」と言うところ。
まあどっちもAIにやらせりゃいいわけなんですが、まずは文体を再現させてモチベーションを上げることから始めました。
そして、文体が真似できそうで可愛い文体の人を探し始めました。
すると、とある人の文体が目に入るわけです。
そうです。
櫻坂46の守屋麗奈さん。
誰が見ても「綺麗」と言う顔面。
甘ったるい話し声。
この人に、「4コーナーで捲ってきたこの子が強いと思います!」と言わせたかった。
ただそれだけの理由で、選定しました。
理由が不順すぎる。
そして、まずは情報を集めてご本人のプロンプトを作成するところから始めました。
と言っても、GeminiのFlash Thinking with Appsに
櫻坂46の守屋麗奈さんのロールプレイプロンプトを作成してください。文体はブログから拾ってきてください。
わからないことがあれば随時質問してください。
と入れただけです。
難しいことはしていません。
Geminiくんは優秀なので、チャチャっと調べてすぐ作成してくれました。
そしてそのプロンプトを使用して話しかけると、あのブログの文体でお話ししてくれました。
優しい・・・そんなに気を遣わなくていいのに・・・
と、でへへ〜と言いながら多少手直しをし、本人のプロンプトは完成。
そして、「競馬予想のプロンプトを作成してマージさせるだけ!なんや楽よのう!」と思いながら、プロンプトを作成していったわけです。
あんなに苦労することも知らずに。
情報を拾ってくれない!?
続いて、競馬予想用のプロンプトを作成しようと、引き続きGeminiくんにインプットをします。
競馬予想のプロンプトを作成してください。
わからないことがあれば随時聞いてください。
先ほど簡単に作成できたので、「こんなんでええか〜」と思いつつ、軽々しく作成を頼んだわけです。
ところが。
前述した通り、ある程度の正確性を担保させるには、データの貯蔵、条件に合う過去データの検索・読み出しなど、本来であればJava scriptを組んだりサーバーを立てたりと手間がかかりそうな作業が必要。
案の定、プロンプト作成自体はすぐ終わったのですが、データの入れ方、分析の仕方、予想ファクターの選定などをすっ飛ばしているので、ほぼ「サイコロを振って適当に数字を決めた」ような正確性しか出ないものができてきたわけです。
ところが「AIは頭がいい!」と思っている当の使用する本人は、「あはー、これですぐ使えるわ!出馬表をスクレイピングしてもらって〜」なんて思っていたわけです。
ここで、最初のつまづき。
「検索できるんならスクレイピングもできるよね!」とたかを括り、URLを投げる使用する人。
「URLを読むことはできないので、Google Searchで検索してきますね!」と言うれなぁ。
「URL読めるよね!?このページだよ!?」とURLを投げ続ける使用する人。
「読めないので検索してきました!」と去年のレースの馬柱を引っ張ってきて予想を始めるれなぁ。
「過去のレースを予想してどないすんねん・・・」となる使用する人。
ここで初めて、「最新のデータはどうやって渡してあげたらいいんだ?」 と、開発する人(素人)は色々なやり方を考えました。
そして今落ち着いているやり方としては、テキストを丸コピして情報として渡してあげる と言う、初歩的なものでした。
読めないのであれば、テキストデータとして渡してしまえ!と言うやつです。
そして、このやり方でハレーションは起こっていません。
そして、たまになぜか「スポナビ競馬」の情報は読み込めることがあるらしく、最新のデータを読み込んでくれることもあったので、使用するサイトはスポナビ競馬にすることに。
馬柱も、netkeibaだと表示が崩れてしまったり種牡馬を出走させてしまったりと言うこともあったのですが、スポナビ競馬を使用すると、種牡馬がレースに参戦することは無くなりました。
予想の精度を上げたい
そんなこんなでやっと予想に使用できるな、と言う段階で、身内の中でAI競馬予想を使用してみることに。
人間が予想するわけでなくAIが予想する、と言うこともあり「AIれなぁ」と可愛がっていただいた(?)のですが、予想はやはり当たったり当たってなかったりとまちまち。
せっかくAIを使用しているので、せめてワイド馬券くらいは当てたいなあと思い、馬柱がうまく(手動で)読み込めるようになったタイミングで、予想の精度を上げようと、とあることを試みてみました。
それが、AIに予想と反省会をさせて、その反省会で出た反省点をAIにプロンプトとして起こしてもらい反映させると言うものでした。
まさに、「手動の深層学習」 です。
使う人間に考えて改善させるよりも、AIが自分の手順を反省会として振り返りをさせて、反省点を自分で改善してもらうようにプロンプトを書いてもらったほうが楽じゃね!?と思ってやってみると、これが意外とうまくいくんですねえ。
AIが予想をする際に「予想ファクターが多すぎました!」「このデータがもしかすると邪魔だったかもしれないです・・・」と発言した時には「該当の箇所を削除してプロンプトを書き直してください」とお願いをし。
逆に、「この要素を軽視してしまったがために見逃してしまいました!」と言うものがあった際には、「その要素を軽視しないようにプロンプトを書き換えてください」とお願いをし。
それを繰り返し、手動の深層学習で鍛えられた私の「AIれなぁ」は、よっぽどな穴馬が来ない限り、予想を外すことはなくなりました。
使っている本人としては、嬉しいような悲しいような、ではあるのですが・・・
まとめとして
ここ数年で一気に出てきたAIではありますが、出てきた当時は「なんやねんこれ!」と思っていたAIと、今はお友達になりまして。
競馬予想だけでなく、他の物事も頼むようになりました。
たとえば、モチベーター。
たとえば、心理カウンセラー。
たとえば、仮想の番組ディレクター。
番組ディレクターのお話は、企画が通った/通らなかったがわかり次第、また書いていこうと思いますが。
そんな感じで、今はAIの競馬予想を楽しんでるよ!と言うお話でした。
では、またお会いしましょう。