Alphagoについてのまとめ

Python, ML06 February 2021

What's?

  • 2016年に開発された囲碁のAI
    • DeepMind社と言う現在はGoogleが買収した企業が作った
    • 当時プロ棋士に勝ったと言うことで有名に
    • 将棋じゃないよ、AWAKEじゃないよ
  • 深層強化学習で作られている
    • 強化学習の方策や次の行動をNNで探索(学習)すること
  • モンテカルロ木探索(MCTS)と言うアルゴリズムが元になっている
  • 複数のNNを組み合わせて学習する
    • Policy Network
    • Value Network

モンテカルロ木探索(MCTS)

ゲーム木の考え方を元に改善を図る。

ゲーム木

  • あるゲームの行動パターンを木構造で表していくこと
  • マルバツゲームとかなら全パターンは網羅できる
  • 囲碁とかはパターンが多すぎて実質無理ゲー

MCTS

  • 囲碁は現状が勝っているか負けているかの判断が人間でも難しい
    • 専門の人はわかるけどトーシロにはわかんない
    • 将棋やチェスは駒の強弱で分かりやすい
  • わからないからランダムゲームセットまでいったろ
    • それで勝率測ってこ。がMCTS
  • 木構造のノードに「勝利数/プレイ数」を並べていく(囲碁なら、黒白それぞれのノードが交互に存在)
    • まずはどこのノードに着目するか(Selection)
    • そのノードから次のノードを「0/0」として増やす(Expantion)
    • ランダムに最後までプレイし増やしたノードの「勝利数/プレイ数」を更新(Simulation)
    • 更新したノードから先頭のノードまで結果を伝え、各ノードも更新する(Backpropagation)

Backpropagationは勾配更新とは完全に別物、たまたまネーミングが同じだけ

Alphagoのアルゴリズム

  • MCTSでランダムにやり続けるのは明らかに効率が悪い
    • どう考えても悪手なものは試したくない
    • ディープラーニングを使おう!
  • 現在の状態(盤面)から最も良い手を推論する
    • Policy Network
    • 現在の状態(盤面)を入力して、打つべき手の確率を出力
    • ゲーム木の幅を削ることとと同等の効果
  • 現在の状態(盤面)から勝率を計算する
    • Value Network
    • 現在の状態(盤面)を入力して、勝敗(+1:勝ち ~ -1:負け)を出力
    • ゲーム木の深さを削ることと同等の効果
  • 様々なNNの基本的な施策が導入されている
    • BatchNorm
    • ResNet

学習方法

1. 教師あり学習でPolicy Networkを学習する

  • SL Policy Network
  • 教師データは過去の棋譜(16万局、3000万の盤面)
    • これだけでも57%くらいの精度で次の手の予測を行うことができる
  • 高速Policy Network (Rollout Policy Network)
    • こいつも学習する
    • 精度は24%くらい
    • 1000倍くらい早く学習できる

2. 強化学習でPolicy Networkを学習する(強くする)

  • RL Policy Network
  • Policy Network同士で対戦する
    • 勝ったら+1, 負けたら-1の報酬を与える
  • SL Policy Networkのみの場合と戦うと、勝率は8割くらいになる

3. 教師あり学習でValue Networkを学習する

  • 現在の状態(盤面)を入力し、勝率を予測する
  • 実際の勝敗(ラベル)はRL Policy Networkで戦わせた結果を使う
  • 仮に2のRL Policy Networkで勝率を計算すると仮定するとそれより同等の精度で1.5万倍高速に推論できる
    • Policy Networkは最後まで勝敗が分からないがValue Networkはその盤面だけでわかる

最終的な動作

  • モンテカルロ木探索(MCTS)に従い、4つの動作をするのは同じ
    • Selection
    • Expantion
    • Simulation
    • Backpropagation
  • Selection
    • 評価値の高いものを優先して選択する
  • Expantion & Simulation
    • SL Policy Networkで勝率計算
    • 勝率が高そうなら探索、低そうなら終了
  • Backpropagation
    • Value Networkと高速Policy Networkの両方で評価

RL Policy Networkは登場しない!!(Value Networkの学習に使ってるだけ)

tags: Python, ML