[オセロAI] できるだけChatGPTだけでリバーシソフトを作ろう Egaroucid利用して学習させてみよう
今回の主題は
以前からちょいちょい書いていた教師データの話と、実際にそれを使ったAIモデルの作成についてです。
ベースとなるプログラムはReClineでClaude3.5 Sonnetを使って作成したはず。まだギリギリChatGPT使ってたかも。
教師データの作成について
教師データの作成については、Egaroucidを利用しました。
やったことは
ランダム対戦を行って棋譜と盤面情報を作成
棋譜をEgaroucidで解析して手の評価と最善手の取得
途中から、最善手+ランダムで棋譜と盤面情報を作成、解析
解析した情報を元にAIモデル作成
といった感じです。
最初はデフォルトのレベル21で解析を行っていましたが、あまりに時間がかかるため、レベル11に落として解析を行いました。
参考までに、8時間で1000試合未満(レベル21) → 4500試合強(レベル11) → 8000試合完走(データ処理改善)ぐらい違いました。
ざっくり言えば
ざっくり言ってしまえば、少し前に話題になったDeepSeekの「蒸留」と同じです。なので、これは完全に個人的な実験として扱っていきます。
どこかの同人イベントなんかでプレイアブル展示はするかもしれませんが、その場限りということで。
AIモデルの学習データ最終型
実際には、解析した結果だけではなく、それを元に回転、反転等を行って通常は起こり得ない盤面も学習データとして作成しました。
Egaroucidでも回転などはできるのですが、ここは自前のスクリプト(Geminiで作成ですが)で行いました。
最終的に利用した盤面数は約1910万でした。
現在の形になってからの作業時間(何らかの処理が走っている時間)としては、教師データ作成に300時間ぐらい。別のDBに移してからのAIモデル学習に12時間といったところです。
テスト対戦
基本的に、これまで作成してきたAIは終盤に行くにつれて弱くなりました。そのため、全部却下してきたのですが、今回は期待しかないです。見事に完全に負けました。これだけきっちり角を取られることなんて、これまでのではなかったので。
ちなみに、最大7手先までアルファベータ刈りで探索できるように作ってありますが、今回の自分の対戦は1手先読みです。7手先読みでどのくらい思考時間が長くなるのか、強くなるのかは本題が終わったあとにでも検証します。
パスのロジックがなかったので追加して、レベル落としてプレイしたが・・・・強いわ。まじで勝てない。
— びび/詩音 靜 (@CzkaUtatane) February 16, 2025
今日は用事があるから、また明日からやるけど、SG-1000との対戦が楽しみになってきた。 pic.twitter.com/LCGyHkYJSF
ちなみに、GUIはGithub CopilotでChatGPT-o3miniを利用しました。また、Pyxelライブラリでレトロゲーム感を出しています。
毎回忘れられるパスの概念とどっちも置けなくなったら終了以外は一発で動きました。最近の生成AIすごい。
探索深度のレベル別は後で追加しました。
本来の目的へ
次回からは上記モデルでSG-1000版オセロとの対戦を行っていきます。
その裏で、今と同じ手順にて教師データを作成して、そちらはそちらでさらに高みを目指そうと思います。次の目安は回転、反転などの拡張を含めて1億盤面を目指します。
そんな矢先、SG-1000版オセロ(レベル1)とやった結果(AIモデルは白番)
あははははははw
— びび/詩音 靜 (@CzkaUtatane) February 18, 2025
学習する棋譜が少ないからか、読みぬけて頓死。
まだまだ先は長い pic.twitter.com/zLLn8c5mU8
まだまだ先は長い。当分学習に専念させます。
その先の予告
結構前に頓挫した将棋AIを再開しようと思っています。
どのように学習させるかはまだ考え中ですが、オセロのように短期間で棋譜
と評価値を作ることは難しいので、時間をかけてじっくりやっていくことになりそうです。
個人的な思い
できれば、振り飛車党に仕立て上げたいが、マルチプレイヤー(器用貧乏ともいう)になってほしい。そういう考えがあるので、そのあたりもあれこれ考えられたらなと思います。