AlphaZeroを理解する


29

ごく最近、AlphabetのDeepMind研究チームが機械学習エンジンを拡張して将giとチェスの両方をプレイできるというニュースが出ました。どうやら、数時間の自己学習の後、ゲームのルールを考慮して自分自身と対戦するだけで意味し、チェスでのパフォーマンスはすでにStockfish 8などの最新のエンジンのパフォーマンスを超えています。計算時間が限られている場合、エンジンのパフォーマンスは非常に低いため、Stockfishが実行するように設定された条件のように、私は個人的にはマッチがどのように設定されたかをまだ知りません。いずれにせよ、これは非常に印象的な成果です。たとえ追加のトレーニング時間をほとんど与えずにStockfishをより最適にセットアップできたとしても、AlphaZeroはプレイのレベルを再び上回るため、AlphaZeroは現在のどの製品よりも根本的に強力ですヒューリスティック評価関数に基づく標準チェスエンジン。

このニュースを踏まえて、機械学習チェスエンジンの動作の主な違いについて、誰もが慣れ親しんでいる標準エンジンと比較して詳しく説明できれば素晴らしいと思います。より具体的に:

  1. AlphaZeroが使用する評価関数は、機械学習法によって訓練されたものであり、最後には単なるヒューリスティック評価関数ではありませんか?はいの場合、2つのエンジンの評価関数の基本的な違いは、Stockfishが人間によって手動で調整された最適化された評価関数を持っているという事実です、最適化する関数の定義は固定されていますが、 AlphaZero、ターゲット評価関数は、追加のトレーニング(たとえば、セルフプレイ)によって常に再定義されていますか?後者をはるかに動的なアプローチにします。
  2. 最終的に、漠然と言えば、Stockfishのようなエンジンは、評価関数を可能な動きのツリーに適用し、保持するブランチとドロップするブランチを決定してから、より深いコンクリートを通過させます。各ブランチの分析、評価関数を介して、どのブランチが最も高い値をもたらし、それが主要な変動になるかがわかります(もちろん、この大きなツリーを効率的にプルーニングするために、このプロセスの周辺には多くの先進技術があります)。つまり、ポジションごとに、ストックフィッシュが決定を下すには、この非常に具体的なルーチンを繰り返さなければなりません。対照的に、AlphaZeroは非常に異なることを行うと思います。つまり、指定された位置で可能な動きのツリーの具体的な分析に依存せず、代わりにその評価関数は基本的にその位置に値を割り当てます(直感的にはトレーニングを受けた他のすべてのポジションと同様に、現在のポジション)、具体的に実行する必要なしストックフィッシュ、または人間のプレイヤーでさえも行う方法で分析します。これは、AlphaZeroまたは同様に訓練された機械学習エンジンの動作の健全な写真ですか?

  3. チェスの位置のスペースは十分に大きいため、その中のすべての位置をサンプリングしようとすると、原則として完全に無駄になります(EXPTIMEの複雑さ)。これは、自己プレーによるトレーニングの量が十分でないことを示唆します。すべてのポジションを探索したので、セルフプレイを介してスペースのポジションのほんの一部を潜在的に探索したにもかかわらず、最終結果はどのように良いでしょうか?ここで重要なアイデアは何ですか?

  4. 私の推測では、AlphaZeroには、たとえ新しい場合でも、トレーニングセットで以前に訪れた位置と特定の位置を比較する非常に最適な方法があり、比較が近いほど、比較から評価がより有効になります。たとえば、ゲーム5でムーブBg5をプレイしたとき、トレーニング中に同様の構造を探さなければなりません。つまり、このポジションは、トレーニングで学習した(おそらく完全に)異なるポジションと本質的に同等であることを認識できます機械学習によって顔認識がどのように達成されるかと類似しており、その結果、Bg5は他の(またはそれらの)同様の位置にあったように、最良の動きであると結論付けられます。これはまったく正しい推測ですか?私はこの比較がどのように トレーニングされたすべての位置を保存し、毎回それらを解析することは確かに不可能なので、

これは、AlphaZeroの仕組みと、ポジションが与えられた場合の決定に至るまでの洞察を得るための単なる試みです。

回答:


18
  • AlphaZeroはどのように検索で移動を選択しますか?

これは論文から非常に明白です。

各シミュレーションは、各状態で低訪問数、高移動確率、高値選択で移動することを選択することにより進みます...

どういう意味ですか?AlphaZeroは、ディープニューラルネットワークからの各移動(論文の2ページ目の終わり)の確率を訓練しました。検索中に、その確率に比例した動きと、(サンプリングスペースが確実に探索されるように)カウントの低いノードが選択されます。これは新しい概念ではありません。モンテカルロツリー検索は、Googleが存在する前に文献に記載されていました。

------(非常に)大まかな例------

私たちにはポジションがあり、2つの法的動きがあります。

  • 移動1は適切で合理的です
  • Move 2は、補償なしで自分のキングを危険にさらします

論文によると、訓練された深いモデルは、確率を(0.90、0.10)と推定するかもしれません。AlphaZeroがモンテカルロで4回の反復を使用するとします。反復は次のようになります。

反復1:最も高い確率を持っているため、移動1を選択します。移動1からシミュレーションを実行します。 反復2:移動1の確率が最も高いため、移動1を選択します。移動1からシミュレーションを実行します。 反復3:移動1の確率が最も高いため、移動1を選択します。移動1からシミュレーションを実行します。

これで、反復4になります。移動1の推定確率は高くなりますが、移動2は検索されていませんが(論文では「低訪問カウント」)、AlphaZeroは移動2を選択してシミュレーションを実行します。

両方の移動が考慮されますが、AlphaZeroは移動1により多くのコンピューティングリソースを配置します(良いこと)。

AlphaZeroは、予想される最良の結果で移動を選択します。

- - - - - - - - - あなたの質問: - - - - - - - - -

AlphaZeroが使用する評価関数は、機械学習法によって訓練されたものであり、最後には単なるヒューリスティック評価関数ではありませんか?

訓練された評価関数はディープニューラルネットワークであり、Stockfishで見られるような一連のヒューリスティックルールではありません。トレーニングされたネットワークについて(Googleチームでさえも)誰も完全に理解していません。これがNNの一般的な仕組みです。

一方、AlphaZeroの場合、ターゲット評価関数は追加のトレーニングを通じて常に再定義されているため、ターゲット評価関数は常に再定義されています。

AlphaZeroの評価関数は、訓練されたニューロンのセット(バイアス+重み)です。Googleチームは、非常に強力なマシンを使用してパラメーターをトレーニングしました。一般に、ディープラーニングモデルのトレーニングに投資できるリソースが多いほど、より良いパラメーターが得られます。

(2)。

Stockfishはalpha-betaを使用し、AlphaZeroはMonte-Carloを使用します。これらは2つの非常に異なるアルゴリズムです。アルファ-ベータアルゴリズムは下限/上限を想定していますが、モンテカルロはルートからリーフまでシミュレーションを作成します。

すべての位置を探索したので、自己再生を介して空間の位置のわずかな部分を潜在的に探索したにもかかわらず、最終結果はどのように良いでしょうか?ここで重要なアイデアは何ですか?

Googleはチェスを解いたと主張しなかった。彼らの強力なマシンでさえすべてのチェスの位置を列挙することはできなかった。しかし、彼らはそうする必要はありませんでした...それは機械学習のポイントであり、モデルはトレーニングセットから「学習」します。この場合、トレーニングセットは自己演奏から始まります。重要なアイデアは、できるだけ多くの質の高いゲームを可能な限り迅速にプレイすることです。

たとえば、ゲーム5でムーブBg5をプレイしたとき、トレーニング中に同様の構造を探索したはずです。

AlphaZeroはトレーニングゲームでまったく同じ位置に出会ったとは思わない。モンテカルロを一読するのは良い考えだと思います。

https://chessprogramming.wikispaces.com/Monte-Carlo+Tree+Search

AlphaZeroは、十分な深さに達することで動きをすることができました。アルゴリズムは、各移動で勝つと予想される確率を推定します。明らかに、移動Bg5が最高の予想確率を与えました。

AlphaGoは非常によく検索できたため、Bg5の後に勝つ可能性が最も高く、Stockfishは動きを真剣に考慮しなかった(したがって失われた)ように思えました。


2
私は戻っておよそ2006年にMCTSをトレースできる「Googleは存在していた前に、モンテカルロ木探索が文献になっている」
CodesInChaos

2
@CodesInChaos MCTSは新しい手法ではありません。Googleは確かにモンテカルロを発明しませんでした。
SmallChess

4
Brügmann1993は明らかにMCのみです。MC Go Dev。(2003) MCとツリーを組み合わせますが、プリミティブな方法です。Chang(2005)はかなり近いですが、異なるコンテキストで、展開するノードの適切な選択と推定の伝播がまだ不足していると思います。MCTSの効率的な選択性とバックアップ演算子Remi Coulom(2006)は、私が知る限り、最初の適切なMCTSです。
CodesInChaos

1
@SmallChess答えの一部は矛盾しているようです。「AlphaZeroは第2移動を選択し、シミュレーションを実行します。両方の移動を検討しますが、AlphaZeroは第1移動により多くのコンピューティングリソースを配置します(良いこと)」ステートメントと矛盾します各シミュレーションは、各状態で選択することによって進行します。たとえば、訪問数が1でなく2になるように移動します。正直に言うと、この論文には有用な情報が含まれていません実験を再現したり、ネットワークを訓練する実際の方法についての洞察を与えたりする方法を示していないため、理解します。
17

1
彼らが行うことは、基本的に「アルゴリズムXを使用し、それが機能する」と述べていることです。これは、メソッド自体についてほとんど、またはまったく理解できません。
17:12

0

私の質問は、ニューラルネットが遭遇していない位置で何をすべきかを「学習」することだと思います。実際のAZが、訓練されたニューラルネットからのバイアス+重みを使用してMCTSを実行するとすると、ニューラルネットがこれらの値を計算する方法に一歩戻ります。それがランダムな自己プレイで、人間の知識がない場合、それはどのようにそれが見たことがない位置に重み付けするかを決定しますか?


1
私はあなたに答えられるかもしれないと思うが、ここではできない。新しい質問を始めてください。
SmallChess

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.