アプリ「ロトAI予想」で使っているAIについて
こんにちは。iOS/Androidアプリ「ロトAI予想」の開発担当です🐶
AI部分を含む本アプリの開発/運用は、私が本業の傍ら、副業として取り組んでおります。
本業の方でも、某大手IT企業にて現役のAI/データサイエンティストとしてバリバリ働いています。また、手前味噌ですが、東大の理系学部・院を卒業しており、昔から数字分析は得意分野です。
最近、AIの内容に関する質問が増えてきているので、本記事で当AIについてちゃんとご紹介させていただければと思います。ご関心をいただけると嬉しいです。
一口にAIといっても、様々な種類のものがあり、それぞれに向き不向きがあります。順を追って、ご説明いたします。
目次
AIでやりたいことを整理する
まず、AIでやりたいことはずばり「次回抽せんの当せん数字を当てる」です。(当たり前ですよね...)
また、副次的な目的として、本アプリのユーザの方々に喜んで継続的に使ってみたいと思っていただけるよう、下記点も大切にしました。
- 過去の抽せん結果数字に隠された暗黙的な数字選び理論をAIの力で読み解く
- AIの考える各数字のスコア(出現確率)も合わせて提供する
- AIがまるでくじを購入するかのように、実際の購入形式に合わせて数字を選ぶ
そこで、LSTM(Long Short-Term Memory)をベースとした分類器(Classifier)型の当せん数字予測AIを開発することにしました。
LSTMとは?分類器とは?
LSTMとは、聞き馴染みがない方がほとんどだと思います。Wikipediaの説明を参照すると
LSTMネットワークは時系列データに基づく分類、処理、予測によく適している。これは、LSTMネットワークが時系列中の重要な事象間の未知の期間の時間差となることができるためである。LSTMは、従来のRNNを訓練する際に遭遇しうる勾配爆発および消失問題に対処するために開発された。ギャップの長さに対する相対的な鈍感さが、多数の応用におけるRNNや隠れマルコフモデル、その他の系列学習法に対するLSTMの優位性である
https://ja.wikipedia.org/wiki/長・短期記憶
難しそうな言葉が並んでいますが、要は過去に起きた結果に基づいて未来を予測できるAIです。
特に、LSTMは結果が古いのか新しいのかによって重要視する度合いを調整できる点がポイントです。
数字選択式宝くじに向かうAIとしてピッタリですね!Web検索を行った限りでは、数字選択式宝くじ向けのAI開発を行っている他の方々もLSTMをベースにAIを開発されるケースがほとんどでした。
次に、分類器について、まずはまたWikipediaを参照してみましょう。
分類(ぶんるい、英: classification)や統計的分類や統計的識別とは、統計学において、データを複数のクラス(グループ)に分類すること。2つのクラスに分ける事を二項分類や二値分類、多数のクラスに分ける事を多クラス分類という。Y = f(X) というモデルを適用する際に、Y が離散であれば分類、連続値であれば回帰である。
https://ja.wikipedia.org/wiki/分類_(統計学)
こちらも難しい言葉が並んでおりますが、要は入力された情報を正しくカテゴリ分類するAIです。
実際には、入力されたデータの分類先が何になるか、AIは確率として出力してくれます。
身近な例では、顔写真から人物を特定する顔認識AIも、この分類器に該当します。例えば、あなたのスマホに搭載されている顔認識AIは、「スマホカメラに写っている人物が保有者(あなた)である確率は98%だ。確率は十分に大きい。スマホロックを解除しよう」というような処理をしています。
まとめると、LSTMをベースとした分類器を使えば、直近の過去複数回の当せん数字並びを入力情報として、次回抽せん回にどの数字が出現するか確率で出力することができます。
ざっくりですが、これで導入するAIの概念についてご理解いただけたかと思います。次は数字式宝くじに適用するための細かい設計開発についてご説明します。
AI開発 *難しいと感じる方は読み飛ばしてください
AIはコンピュータですので、データをコンピュータが処理できる形式に整理してあげる必要があります。
AI開発でよく使われるプログラミング言語Pythonの代表的なAI開発ツールをみてみましょう。
- TensorFlow: https://www.tensorflow.org/api_docs/python/tf/keras/layers/LSTM
- PyTorch: https://pytorch.org/docs/stable/generated/torch.nn.LSTM.html
難しいですよね...しかも英語🤨 私も最初はこのドキュメントを読み解くことに苦労しました。
実は、アプリ「ロトAI予想」のAIは、これまでTensorFlowで開発しておりましたが、現在、サーバ刷新に伴ってPyTorchに移行する作業を行っております。AIツールの性能としてはどちらも遜色ありません。
いずれのAI開発ツールを使用するにせよ、今回のAIは大きく下記手順で開発しました。
- データ前処理:過去の抽せん結果を正確に取得した後、今回のAIに入力可能な形式に変換する
- AI設計:AI判断ロジックとなる隠れ層と呼ばれる構造やパラメータを適切に設定する
- 最適化:良いAIの根拠となる評価関数を設計し、評価値が最良になるようにAIモデルパラメータを最適化する
隠れ層の仕込み方や評価関数の作り方には、いくつかのノウハウがあります🔒
最終的にAIが優れているかどうかの評価は、過去の抽せん結果データの一部をAIに入力して予測結果を取得し、どれだけ当たっていたかどうかで判断します。
AIはちゃんと当てられるのか?
AI開発システムの結果画面のキャプチャをご覧ください。
(Webエンジニアの方は察しがつくかと思いますが、サーバサイドのアプリフレームワークはDjangoです。)
残念ながら、さすがに100発100中というわけにはいきませんでした...😅
全体を見渡すと、小さな当せんがちらほらという結果になりました。この後も学習パラメータを調整しながら再学習を重ね、AI性能はやや改善しましたが、驚異的なパフォーマンスと言えるように水準に達することはありませんでした。
(そもそもデータサイエンス観点では、"数字選択式宝くじの抽せんは完全にランダムに数字が抽出されている"と仮定すると、AIどころかどんな数字選び理論も通用しないのですが...🫢)
最終的に、アプリ「ロトAI予想」で提供させていただいているAIは、少なくとも実際の過去データによるテスト検証にて、ランダムよりは当選率が高く、何度か高額当せんしているように仕上げました。
また、「AIから新しい数字選び理論は作れないのか?」という質問もよくいただくのですが、残念ながら、開発した本人でも予測傾向を掴むことは通常難しいです。AIは、人間では感覚的に理解できない数字選びノウハウをブラックボックスとして提供してくれます。
最後に
以上、アプリ「ロトAI予想」に組み込まれているAIは「LSTMをベースとした分類器」です。
ピタリと必ず1等を当てられるようなAIではありませんが、少なくとも丁寧な正攻法の開発プロセスを経て出来上がったAIを提供させていただいております。いつか、このAIを活用して億万長者になられる方が生まれたら嬉しい限りです。
また機会があれば、今度は「抽せん結果の統計分析」などについてもご紹介できればと思います。
最後までお読みくださり、ありがとうございました🙇🏻♂️
本記事でご紹介したAIが予想する次回当せん数字をご覧になりたい方は、下記アプリのダウンロードをお願いします。