うわぁ。
以前、下記を書いて、「まだまだ続くよ!」とか言ってましたが…
7月20日のことでした。(;^ω^)
もう4か月も経ってるやんけ!!!( ゚Д゚)
いやー、光陰矢の如し。7月末からいろんなことがあったなぁ…( ˊᵕˋ )
…と、ついつい楽しい夏の思い出を思い返しちゃいましたが、本題は、Alpha Go Zeroの論文の翻訳の最後を書くことでした。
仕事でもAIの開発を進めておりまして、少し詳しくなったと思います。
では、Go!
原文はこちら。
https://www.nature.com/articles/nature24270.epdf
前回の続きということで、付録的な、「METHODS」という部分の後半になります。
Domain knowledge というところからですね。ではGo!
Domain knowledge
Domain knowledgeとは、専門知識のことである。碁のプログラムでいえば、碁のうちかた、どうやって強い手を繰り出すか、というような専門知識のことである。
Alpha Go Zeroの一番の功績は、専門知識なくして人間を超える知力を達成したということにある。
この功績を明らかにすべく、Alpha Go Zeroが使っている専門知識をトレーニングプロシージャーやMCTS内にかかわらず、数え上げてみることにする。
これらは、ほかのゲーム(マルコフゲーム プレーヤーが1対1で進める手によって勝率などが左右される、オセロ・将棋・碁などのゲームの総称と思われ。)に使うときは、置き換えられるものである。
①ゲームのルール
Alpha Go Zeroはゲームのルールについては、完全に知っている。MCTSのポジションのシミュレーションや最終手を打った時のスコアをつけるのに使われている。
ゲームは両方のプレーヤーがパスしたときと722手進んだ時に終了する。また、プレーヤーはルールにのっとって、有効な手を打つ必要がある。
②スコアリング
Alpha Go ZeroではMCTSのシミュレーションとセルフプレイのトレーニングの最中にTromp-Taylorスコアリングを使っている。
なぜかというと、韓国式・日本式・中国式にせよ、人間のスコアリングはよく定義されてないからである。
ちなみにAlpha Go Zeroで採用しているのは中国式である。(この辺、私が囲碁わからないのでよくわからなかったです(;´・ω・))
③盤面
盤面は、19×19の画像的なイメージで扱われる。ニューラルネットワークはこのボードに合わせた形になっている。
④盤面の回転など
碁のルールは盤面を回転しても反転しても盤面の強さは変わらない。
それを利用して、MCTSの途中で、盤面の回転と、反転状態もデータの中に入れることができている。
komiっていうものを抜かせば、碁は色を取り換えてもなりたつ。色を変えても成り立つことにより、盤面をどちらのプレーヤーから見るか、と言ったことが成り立たせられる。
以上が、Alpha Go Zeroが使っている専門知識の全部である。Alpha Go Zeroがディープニューラルネットワークを使っているのは、MCTSの末端のノードを評価するときと、手を選択するときだけ。
ロールアウトポリシーも使ってないし、ツリーポリシーも使っていないし、MCTSは他のヒューリスティックだったり専門知識によるルールによって評価されたりもしない。
ルール違反の手は使わない。プレーヤーの「目」を埋めることもしない。(多分、碁の話と思われ)
このアルゴリズムはランダムな初期パラメーター(ニューラルネットワークに入れるやつ)で始められた。
ニューラルネットワークの構造は、先進的な画像認識の構造である。ハイパーパラメーターは学習の中で変わっていく。
MCTSの探索パラメーターは1個前にトレーニングしたニューラルネットワークを使ったセルフプレイを最適化するために、ガウス過程最適化(でいいのかな?)を使って選択されていく。
より大きい実行のために(40ブロック、40日かける実行)MCTSの探索パラメータはより小さい実行でトレーニングされたニューラルネットワーク(20ブロック、3日)を使って再最適化される。
トレーニングのアルゴリズムは人間が介在することなく、自主的にアップデートされていくのである。
Self-play training pipeline
Alpha Go Zeroのセルフプレイのトレーニングパイプラインは3つに分かれていて、全部が非同期で平行に動作する。
ニューラルネットワークのパラメーターΘは継続的にセルフプレイのデータで最適化されていく。
Alpha Go Zeroのプレーヤーαは継続的に評価されていく。
ベストなプレーヤーはセルフプレイのデータを生み出すために使われていく。
今日はここまで~ ハァハァ(*´Д`)