見出し画像

【求む、勝てる人】無料で対戦!AIリバーシちゃん改

「開発者すら打ち勝てないAIリバーシが、ついに完成!」

"AIリバーシちゃん"を開発していた私ですら、もう勝てなくなりました…。

10回対戦して結果は、0勝1分9敗

惨敗の記録

まさか、こんなにも圧倒されるとは…。
自分が作ったAIに負けるなんて!」と思ったあなた、ぜひこのAIリバーシちゃんに挑戦してみませんか?挑戦したい方は、こちらから友達登録してください。

〜遊び方〜

  1. 友達登録が完了したら「開始」とコメントします。

  2. AIは必ず「青🔵」で動きます。あなたは、「赤🔴」で常に先行です。

  3. 画面上の置きたいマスをタップするだけでOKです。

すると、AIが自動的に次の手を打ちます。
続けて、AIが打った後の盤面が表示されるので、好きなところに置いていきましょう。

打つ手がない場合は「パス」とコメントすると、AIのターンに移ります。

最終的な勝利を目指して頑張ってください!

ここからはこれまでの開発方法について紹介したいと思います。


・さて、どんな改善を行ったのか?

以前、noteで紹介した「コードを一行も書かずに、LINE上でChatGPTと対戦できるリバーシを作ってみた」の記事を読まれた方もおられるかと思います。

あの時には、2つの大きな課題が残されていました。

  1. 盤面が見づらい

  2. AIが弱すぎる

今回は、この2つの課題をしっかり解決し、なんと開発者の私が一度も勝てないほどのAIに成長させました。興味のある方は、ぜひ挑戦してみてください!
(勝利した方、どうか私に報告してください!まだ一度も勝てていません…)

ここからは、どうやって改善していったのか、について紹介します。

・改善の詳細:どうやって強化したのか?

① 盤面が見づらい問題

最初の課題は、盤面が見づらく、プレイ体験を損ねていたことです。具体的には、石のデザインがシンプルすぎて、リバーシらしさがあまり感じられませんでした。

前回までのデザイン

この課題を解決するために、ChatGPTに「もっとおしゃれなデザインにして」と依頼したところ、驚くほど簡単に見た目が改善されました。以下が使用した具体的なプロンプトです。

(ここに今までのコードを貼り付ける)
盤面をもっとおしゃれにした修正を加えて、コード全文を書き直してください。画像URLに置き換えないで済む方法でお願いします。

指示したプロンプト

ここで少し知的財産権について触れたいのですが、当初、私は「商標権」と「意匠権」の知識が足りませんでした。

・オセロにおける「商標権」と「意匠権」

簡単に紹介すると・・・

  • 商標権:「オセロ」という名前やロゴを守るための権利。商標権の存続期間は、登録日から10年間ですが、何回も更新ができるため、ほぼ永久的に保持できる。

  • 意匠権:「オセロ盤やコマのデザイン」を守るための権利。意匠権の存続期間は、登録日から25年間です(当時は20年だったようです)。更新はできないため、一度切れると他の人も使える。

実は、オセロの商標権は現在も有効ですが、意匠権は既に切れています。
これにより、デザインをオセロに近づけることができると知り、盤面を見やすくするために石の色を🔵と🔴に変更し、よりリバーシらしいデザインに仕上げました。

改良版AIリバーシ盤面

② AIが弱い問題

次に、AIがあまりにも弱すぎた点。最初のAIは、正直なところ、少しトリッキーな手を打とうとすることがあり、プロンプトでの指示も不十分でした。

AIが弱すぎて簡単に4隅が取れる
完封も可能

ですので、AIが不適切な手を選択した場合、再度考えさせるようにプログラムしましたが、それでも大きな改善には至りませんでした。

・多段推論を行うようにプロンプトに改良

そこで試したのが、「多段推論法」です。
これは、一度ChatGPTに手を決定させ、その手をChatGPTに評価させるという仕組みです。これで多少の強化は見られましたが、それでも私がほぼ100%勝てる状態でした。

多段推論のプロンプト①

role: "system",
        content: `
        あなたはリバーシゲームの青(B)側のプレイヤーです。8x8のボードで、現在の盤面が与えられます。
        ゲームのルールに従って、最も戦略的に有利な手を選んでください。以下の点を考慮してください:
        1. 可能であれば、端や角に石を置くことを優先してください。
        2. 相手の石をできるだけ多く反転させる手を選んでください。
        3. 将来的に自分の石が多く反転されないよう、次の手を計画してください。
        4. 各手の評価を行い、最も有利な手を選択してください。
        回答は必ず "最適な手は [座標] です。理由:[理由]" という形式で、[座標]の部分を実際の座標(例:D3)に、[理由]の部分をその手を選んだ理由に置き換えて返してください。
        有効な座標は A1 から H8 の範囲内です。
        `
      },
      { 
        role: "user", 
        content: `現在の盤面は以下の通りです。青(B)の手番として、最適な手を選んでください:

        ${boardString}
        
        有効な手は以下の通りです:${validMoves.join(', ')}
        各手について評価を行い、最も有利な手を選択してください。

多段推論のプロンプト②

role: "system",
        content: `
        あなたはリバーシゲームの評価者です。与えられた盤面を分析し、青(B)側にとっての有利/不利を評価してください。
        以下の点を考慮して評価を行ってください:
        1. 石の数の差
        2. 角の支配
        3. 辺の支配
        4. 機動力(有効な手の数)
        5. 盤面の安定性
        評価は -10 から 10 の数値で表してください。-10 が最も不利、0 が中立、10 が最も有利を表します。
        `
      },
      {
        role: "user",
        content: `以下の盤面を評価してください:

        ${getLabeledBoardString(newGameState)}

        青(B)側にとっての評価を -10 から 10 の数値で示し、その理由を簡潔に説明してください。
        `

・o1-miniモデルの導入

ここで新たに導入したのが、ChatGPTの最新版o1-miniモデル」です。このモデルを使ってさらに多段推論を行い、AIの思考をより深くさせました。しかし、この手法には思わぬ問題が…。

1試合あたり1ドル以上のコストがかかる!

1試合+途中まででこれ(高すぎない?)

これは現実的ではないため、この方法は断念しました。

・最終的な解決策:アルファベータ法と静的評価関数の導入

最終的に到達したのが、以下の方法です。

  1. アルファベータ法

  2. 静的評価関数

  3. ChatGPTによる盤面評価

・アルファベータ法とは?

アルファベータ法は、AIが効率よく最善の手を探し出すための探索アルゴリズムです。このアルゴリズムを活用することで、AIの決定力が飛躍的に向上しました。

・静的評価関数とは?

各手の価値を数値化して評価するための関数です。AIはこの数値を基に、どの手が最も有効かを判断します。

さらに、これらの評価が同じ場合には、ChatGPTが最終的な判断を下すシステムを導入。これにより、AIは非常に賢く、開発者である私すら勝てない強さを持つようになったのです。

・まとめ:強化されたAIリバーシに挑戦しよう!

今回は、盤面の見やすさとAIの強さの両方を改善しました。ぜひ、あなたもこのAIリバーシに挑戦してみてください!

挑戦したい方はこちらから友達登録してくださいね!

さあ、この強敵AIリバーシに挑んで、私に勝利報告をください!



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

この記事が参加している募集