翻訳者|朱 仙中 レビュー | Chonglou 導入完全情報ゲームにおいて、ゲームのルールに従って、必要なものがすべてすべてのプレイヤーに提供されていたら素晴らしいと思いませんか? しかし残念なことに、私のような平均的なプレイヤーにとって、新しいゲームのルールを読むことは、複雑なゲームのプレイ方法を学ぶ過程のほんの一部に過ぎず、ほとんどの時間は、できれば同等のスキルを持つプレイヤー(または、私たちの弱点を暴くのに十分忍耐強い、より優れたプレイヤー)と対戦してゲームをプレイすることに費やされます。頻繁にゲームに負けて勝つことを望むと、心理的なペナルティと報酬が生じることがありますが、これにより、徐々にゲームが上手にプレイできるようになります。 おそらく、近い将来、 AI言語モデルはチェスのような複雑なゲームのルールを読み取り、最初から可能な限り最高レベルでプレイできるようになるでしょう。その間、私はより穏やかな形の挑戦、つまり自己プレイを通して学ぶことを提案します。 この実践的なプロジェクトでは、以前のバージョンのゲームの結果を観察することで、完全な情報を使用して 2 人のプレーヤーのゲームをプレイすることを学習できるAIアシスタントをトレーニングします。 AI アシスタントは、このゲーム状態(ゲームの予想される結果) のあらゆる数値を近似する役割を担います。追加の課題として、複雑なゲームではこのアプローチは管理できないため、 AI アシスタントは状態空間のルックアップ テーブルを維持できません。 SumTo100ゲームを解くゲームのルールの紹介これから説明するゲームは SumTo100 です。このゲームの目的は、 1から 10までの数字を足して合計が 100 になることです。このゲームで従うルールは次のとおりです:
2匹のカタツムリが自分のことに集中している(写真は著者によるもので、 OpenAIが発表した第2世代の画像生成AIモデルDALL-E2に基づく) このようなシンプルなゲームから始めることにしたのは、このアプローチには多くの利点があるからです。
図1: SumTo100ゲームの最適な状態値(著者独自の画像) この図では、ゲームの状態はAI アシスタントがターンを完了した後の合計です。値 1.0 は AI アシスタントが確実に勝つ (またはすでに勝っている) ことを意味します。値-1.0はAIアシスタントが確実に負ける (対戦相手が最善を尽くすと仮定) ことを意味します。その間の値は推定報酬を表します。たとえば、状態値が 0.2 の場合はわずかにプラスの状態を示し、状態値が -0.8 の場合は損失の可能性があることを示します。 コードを詳しく調べたい場合は、トレーニングプロセス全体を実行するスクリプトはarn_sumTo100.sh であり、対応するオープン ソース リポジトリ アドレスは https://github.com/sebastiengilbert73/tutorial_learnbyplay です。これが不必要だと感じるなら、我慢してください。次に、AI アシスタントがセルフプレイを通じてどのように学習するかを詳しく説明します。 ランダムなプレイヤーがプレイするゲームを生成する私たちは、 AI アシスタントにゲームの以前のバージョンから学習してもらいたいと思っています。ただし、このゲームの最初の反復では、 AI アシスタントがまだ何も学習していないため、ランダムなプレイヤーがプレイするゲームをシミュレートする必要があります。各ターンで、プレイヤーはゲーム管理ライブラリ(ゲーム ルールを記述するクラス) から現在のゲーム状態に対する合法的なアクションのリストを取得します。ランダムプレイヤーはこのリストからランダムに動きを選択します。 図 2 は、ランダムに選ばれた 2 人のプレイヤーがゲームをプレイしている例を示しています。 図2: ランダムプレイヤーがプレイするゲームの例(著者撮影) この場合、2 番目のプレイヤーが合計 100 に到達してゲームに勝利します。 ここで、ゲームの状態(アシスタントがゲームをプレイした後)を入力として受け取り、そのゲームの期待報酬値を出力するニューラル ネットワークにアクセスできるAI アシスタントを実装してみましょう。任意の状態(アシスタントがゲームをプレイする前)に対して、アシスタントには有効なアクションとそれに対応する候補状態のリストが与えられます(決定論的な遷移を持つゲームのみを考慮します)。 図3は、 AIアシスタント、対戦相手(その移動選択メカニズムは不明) 、およびゲーム状態管理ライブラリ間の相互作用を示しています。 図3: AIアシスタント、対戦相手、ゲーム管理ライブラリ間の相互作用(著者イメージ) この設定では、 AI アシスタントはリカレント ニューラル ネットワークを利用して、ゲーム状態の期待報酬値を予測します。ニューラル ネットワークがどの候補の動きが最高の報酬値を生み出すかを予測できるほど、アシスタントの仕事の精度は向上します。 ランダムプレイのリストは、最初のトレーニング実行のためのデータセットを提供します。図 2 のゲーム例では、負けにつながる行動に対してプレイヤー 1 を罰したいと考えています。最後のアクションでは、対戦相手が勝利するため、状態値は -1.0 になります。その他の状態は γᵈ の係数でマイナスに割引されます。ここで、dはアシスタントが到達した最後の状態に対する距離です。γは割引係数で、ゲームの進化における不確実性を捉える[0, 1]の範囲の数値です。つまり、初期の決定に対して最後の決定ほど厳しくペナルティを課したくありません。図4は、プレイヤー1の決定に関連する状態値を示しています。 図4:プレイヤー1から見た状態値の一覧(著者独自イメージ) ランダム ゲームは、目標の期待報酬を持つ状態を生成します。たとえば、合計が 97 の場合、目標期待収益は -1.0 となり、合計が 73 の場合、目標期待収益は -γ³となります。状態の半分はプレイヤー 1 の視点からであり、残りの半分はプレイヤー 2 の視点からである (ただし、これは SumTo100 ゲームではそれほど重要ではありません)。ゲームがAI アシスタントの勝利で終了すると、対応する状態は同様に割引された正の値を受け取ります。 ゲームの結果を予測するAIエージェントのトレーニングこれで、トレーニングを開始するために必要なものがすべて揃いました。ニューラル ネットワーク (2 層パーセプトロンを使用) と(状態、期待される報酬) ペアのデータセットです。次に、期待収益を予測する際の損失がどのように変化するかを見てみましょう。 図5: トレーニングラウンドにおける損失値の変化(著者独自の画像) ニューラル ネットワークが、ゲームをプレイするランダムなプレイヤーの結果に対して、あまり予測力を示さなかったことに驚くべきではありません。 それで、ニューラル ネットワークは何を学習したのでしょうか? 幸いなことに、状態は 0 から 100 までの数字の 1D グリッドとして表すことができるため、最初のトレーニング ラウンドの後にニューラル ネットワークの予測リターンをプロットし、図 1 の最良の状態値と比較することができます。 図6: ランダムプレイヤーがプレイしたゲームのデータセットでトレーニングした後の予測リターン(著者画像) 上記の事実は、ランダム ゲームの混沌とした状態で動作することにより、ニューラル ネットワークが次の 2 つのことを学習したことを証明しています。
より優れた選手たちとトレーニングサイクルを繰り返す両方のプレイヤーは100 に到達しなければならないことがわかっているので、対戦相手がゲームに勝つチャンスに飛びつくため、合計が 90 から 99 に達するとペナルティが課せられることになります。この現象は、2 回目のトレーニング後の予測状態値に現れています。 図7: 2回のトレーニング後の予測状態値: 90から99までの合計は-1に近い値を示しています(著者による画像) パターンが浮かび上がってきます。最初のトレーニング ラウンドでは、ニューラル ネットワークに最後の動きを通知し、2 回目のトレーニング ラウンドでは、最後から 2 番目の動きを通知する、というように続きます。ゲーム生成と予測トレーニングのサイクルを、ゲーム内のアクションの数だけ繰り返す必要があります。 次の図は、25 ラウンドのトレーニング後の予測状態値の変化を示しています。 図8: トレーニング中に学習した状態値のスナップショット(著者独自の画像) ゲームの終わりから始まりに向かって進むにつれて、予測されるリターンのエンベロープインジケーターの値は指数関数的に減少します。これは問題でしょうか? この現象を引き起こす要因は 2 つあります。
実際の状況では、少なくとも SumTo100 ゲームでは、特定の状態における有効なアクションの値を比較しているため、これは問題にならないはずです。貪欲法を使用してを移動することを選択した場合、値のサイズは重要ではありません。 結論は本論文では、 2 人のプレイヤーが関与する完全情報ゲームをマスターすることを学習し、アクションを与えられたときに1 つの状態から次の状態への決定論的な遷移を達成できるAI アシスタントを開発するという、私たち自身の課題に成功しました。実装中は、手動でコーディングされた戦略や戦術は許可されず、すべてを自分でプレイして学習する必要がありました。 AI アシスタントの複数のコピーを実行し、生成されたゲームの期待収益を予測するリカレント ニューラル ネットワークをトレーニングすることで、SumTo100 という単純なゲームを解くことができます。 最終的に、この実験から得られた教訓は、より複雑なゲームを研究するための基盤となりましたが、それは次の記事のテーマになります。 翻訳者紹介Zhu Xianzhong 氏は、51CTO のコミュニティ エディターであり、51CTO の専門ブロガー兼講師であり、濰坊の大学のコンピューター教師であり、フリーランス プログラミング コミュニティのベテランです。 原題:セルフプレイを通じてシンプルなゲームをマスターするエージェントのトレーニング、著者: Sébastien Gilbert |
<<: GitHub: プログラマーはAIプログラミングを積極的に使用しており、JavaScript言語は依然として最も人気がある
AI テクノロジーと自動化ソリューションは、仕事を奪う諸悪の根源なのでしょうか、それとも新しいプラ...
【51CTO.comオリジナル記事】 [[193891]] 人工知能は、1956 年のダートマス会...
著名なAI研究者のジェフリー・ヒントン氏は、Googleを退職後、人工知能関連産業の研究に専念してい...
Forrester は、2025 年までの市場規模をより現実的に把握するために、AI ソフトウェア...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
我が国は鉱物資源が豊富な国であり、石炭、金属、その他の鉱物の生産地が非常に多く、我が国の鉱業開発は常...
[[437266]]私たち一人ひとりは、人生において、「今夜何を食べるか」「明日はどこに遊びに行くか...
Stable Diffusionなどの大規模なAIモデルを携帯電話などのモバイルデバイスで実行するこ...