SlideShare a Scribd company logo
1 of 17
Download to read offline
AlphaGoの仕組み
富士通株式会社
吉田裕之
伊藤尚洋
はじめに
 本稿は、以下の文献を読み込んだ際に作成したメモで
ある
 David Silver他、Mastering the game of Go with deep
neural networks and tree search
https://vk.com/doc-44016343_437229031?dl=56ce06e325d42fbc72
 本稿は、上記論文の内容の内、AlphaGoのしくみに
フォーカスしているので、評価結果等については原文
を参照されたい
 本稿は、原文に含まれていない内容の推察を一部含ん
でいる
 本稿は、以下を前提知識として説明を省略する
 囲碁のルール
 畳込みニューラルネットワーク(CNN)の基本
1
概要
AlphaGoのPlay=
50GPUを4週間使って学習した評価関数 +
モンテカルロ木探索(MCTS)
① 評価値が高い手
を選びながら探
索木を下る
② リーフまで来たら二つ
の方法で評価する
(1) 評価関数
(2) ロールアウト
③ 評価値をルート
まで伝播する
s0
a
sL
現在の盤面(ルート)
19✕19✕(空、黒、白)
すべての合法手
評価値が高い合法手aを
うった後の盤面
評価値が高いパスで
辿り着いたリーフ
win / lose
リーフから先は勝負がつくまで
ランダムにうってみる
(ロールアウト)
④ リーフの評価回数が閾
値を越えたら一段展開
する
2
学習しておく関数
 ポリシー関数 P(a|s)
盤面sで場所aにうつべき確率 a P(a|s)=1.0
 バリュー関数 vθ(s)
盤面sの評価値 [-1,1]
名称 計算方法 教師データ 速度 用途
Pπ
線形softmax 人間による800万盤面
CPU
2μs
ロールアウト時にaを決定
Pτ
Pσが求まるまでの暫定値
Pσ
ディープネットワーク
人間による2840万盤面
GPU
2ms
場所aの評価値の重み
Pρ
自分どうしで128万対戦
バリュー関数の訓練に使う
だけで対戦には使わない
vθ
ディープネットワーク
Pσでランダムに作った
3000万盤面 +
Pρで1億6000万回ロール
アウトしてみた勝率
GPU
2ms
盤面sの評価値
3
AlphaGoのニューラルネットワーク
 ポリシーネットワーク
 入力層:(19✕19✕48)の盤面sの特徴量(次頁)
 隠れ層:(19✕19✕k)✕12層
k=128,192,256で試し、論文の対戦では192
 出力層:(19✕19)の次にうつ場所の確率分布P(a|s)
 バリューネットワーク
 入力層:(19✕19✕49)の盤面sの特徴量
 隠れ層:(19✕19✕192)✕12層+(19✕19)✕1層+256✕1層
 出力層:1ノードで盤面sの評価値v(s)
4
入力層に使う特徴量
 ポリシーネットワークPσ 、 Pρ :①=48個の0 or 1
 バリューネットワークvθ :①+②=49個の0 or 1
①
②
5
ポリシーネットワークPσ 、 Pρの構造
 入力層~第1隠れ層:
 周囲2行2列に0パディングして(23✕23)に拡張
 (5✕5)のフィルターk枚による畳込み
 ReLU関数 φ(y) = max(0, y)
 第n隠れ層~第n+1隠れ層:
 (21✕21)(1行1列0パディング)+(3✕3)フィルターk枚
+ReLU関数
 第12隠れ層~出力層
 (1✕1)のフィルター1枚
 座標位置ごとに異なるバイアス
 softmax関数 φ(y)i=eyi
j eyj 総和が1.0になる
6
バリューネットワークvθの構造
 入力層~第12隠れ層:
 ポリシーネットワークと同じ
 第12隠れ層~第13隠れ層:
 (1✕1)のフィルター1枚+ReLU関数?
 第13隠れ層~第14隠れ層:
 全結合+ReLU関数
 第14隠れ層~出力層
 全結合+tanh関数 φ(y) =
ey− e−y
ey+ e−y
7
ポリシーネットワークPσの教師あり学習
 6~9段による16万棋譜(35.4%がハンデ戦)から
(パスを除く)2940万盤面とその時に指した手を抽出
 2940万からテスト用に100万を除いた2840万盤面に、
8通りの対称性を加味して(2億2720万?)訓練データとする
 特徴抽出は事前にやっておく
 確率的勾配降下法を実施:
 誤差関数は交差エントロピーH(a|s, Pσ)=‐ i t(ai)logPσ(ai|s)
だが、
プロが実際に選択したaiでのみt(ai)=1.0で他は0.0なので、
このaiをaとすれば誤差関数はH(s, Pσ)=‐logPσ(a|s)
 m(=16)個の訓練データをランダムに選択
∆σ=
α
m k=1
m 𝜕logpσ(ak|sk)
𝜕σ
 学習率α:初期値0.003で8000万回毎に1/2にしていく
 3.4億回(✕16盤面)の訓練を50GPUで3週間
フェーズ1
8
ロールアウトポリシーPπ 、Pτの学習
 線形softmax回帰
P ai s = eyi
j eyj、yi = j k xjkwk
入力 xik: i:(19✕19)の盤面の位置、k:以下の特徴量
 ロールアウトポリシーPπ :③=109,747個の0 or 1
 ツリーポリシーPτ: ③ +④=141,989個の0 or 1
 800万盤面でwkを学習
③
④
9
フェーズ2
ポリシーネットワークPρの強化学習
 学習したポリシーネットワークどうしを
対戦させてさらに強化
 学習側をポリシーρとし、相手をポリシーρ’とする
 ρ’はそれまでのポリシープールの中からランダムに選ぶ
 初期値はρ=ρ’=σ
 500回ごとにその時点のρをポリシープールに入れる
 n(=128)回対戦させて勝敗zTi(1 or -1)を決める
 n回対戦中の全盤面に対して
報酬の期待値を最大化する確率的勾配降下法:
 ∆ρ=
α
n i=1
n
t=1
Ti 𝜕logpρ(at
i
|st
i
)
𝜕ρ
(zt
i
−v(st
i
))
 以上を1万回(✕128対戦) 、50GPUで一日
v(st
i)の項は0
vθ(st
i)が求まったらそれを使う
10
バリューネットワークvθの強化学習
 PσとPρを使ってvθを強化学習
 訓練データも人間の棋譜ではなく自動生成(>3000万個)
① 一様乱数(1~450)で手数Uを決める
② (U-1)手までPσ(人間のうち方を学習したポリシー)を相互に
使って訓練盤面を作る
③ U手目は一様乱数(1~361)を使って決める(うてるところが出る
まで)
④ Pρ (強化学習したポリシー)を使ってロールアウトし、勝ち負けz
を決定する
 確率的勾配降下法を実施:
 誤差関数は平均二乗誤差:
α
2m k=1
m
(zk
− vθ(sk
))2
 m(=32)個の訓練盤面に対して
∆θ=
α
m k=1
m
(zk
− vθ(sk
))
𝜕vθ(sk)
𝜕θ
 以上を5000万回(✕32盤面) 、50GPUで一週間
フェーズ3
11
MCTSによる対戦
 48CPU、8GPU、40探索スレッド(論文時)
 現在の盤面をルートノードとし、合法手をエッジとする木を構成。
木の先端で、エッジを展開していないノードをリーフと言う
 各エッジ(s,a)には以下の評価値を付与
 P:事前確率 P s, a = Pσ(a|s)
 Nv:leaf evaluation=そのエッジの先で何回vθを計算したか、初期値は0
 Nr:rollout reward=そのエッジの先で何回ロールアウトしたか、初期値は0
 Wv:vθの積算、初期値は0
 Wr:zT(ロールアウトによる勝敗判定)の積算、初期値は0
 Q:action value Q s, a = (1 − λ)
wv(s,a)
Nv(s,a)
+ λ
Wr(s,a)
Nr(s,a)
λ:重み(=0.5)、0/0=0?
 最初は、ルートノードs0 1個のみの木から始める
 自分の手番で、シミュレーションを一定の持ち時間の間繰り返し
最後にs0のエッジ(s0,ai)でNr(s0,ai)が一番大きいaiを選ぶ
 対戦中に、Qの最大値が-0.8未満になったら投了
12
対戦時のシステム構成
論文には明記されていないので
あくまでも想像
探索木
vθ用キュー
Pσ用キュー
CPU✕8?
• キューから依
頼を取り出し
てGPUに投
げる
• vθ計算が終
わったらルー
トまで伝播
• Pσ計算が終
わったら探索
木に反映
GPU✕8
• Pσとvθを
計算
CPU✕40?
• 40並列で探索
木を下る
• リーフまで来た
ら、vθ計算を依
頼し、ロールア
ウトを実行
• 勝敗がついたら
ルートまで伝播
• 閾値を越えたら
リーフを展開し
Pσ計算を依頼
13
シミュレーション手順詳細(1)
① ルートから Q s, a) + u(s, a を最大とするエッジ s, a を辿って木を下る
u s, a = cpuctP(s, a) b Nr(s,b)
1+Nr(s,a)
, cpuct:exploration constant(=5)
 エッジ s, a を辿る時に、Q s, a + u s, a を一時的に下げて、評価が終わるま
で他のスレッドが同じパスを選択しにくくしておく
Nr s, a ← Nr s, a + nvl、Wr s, a ← Wr s, a − nvl(= 3)
② リーフsLに到達したら
 vθ sL が未処理ならば、GPU計算するキューに入れ、非同期に処理
 sLから先を、Pπ(a|s)を使ってロールアウトし、勝敗zT(1 or -1)を決定する
③ 盤面sLに対してvθ sL やzTが求まったら、
ルートノードまでパスを逆に辿って、評価値を更新する
 vθ sL :N 𝑣 s, a ← N 𝑣 s, a + 1、 W𝑣 s, a ← W𝑣 s, a + vθ sL
 zT :Nr s, a ← Nr s, a − nvl + 1、 Wr s, a ← Wr s, a + nvl + zT
14
シミュレーション手順詳細(2)
④ リーフsLの直前のエッジ sL−1, aL−1 で Nr sL−1, aL−1 > nthr = 40 なら
sLで可能なすべての手aiにエッジ sL, ai を作成し以下を実行する
 Nv sL, ai = Nr sL, ai = Wv sL, ai = Wr sL, ai = 0
 P sL, ai = Pτ(ai|sL) (Pσ(∗ |sL)が計算できるまでとりあえず)
 Pσ(∗ |sL)をGPU計算するキューに入れ、非同期に処理する
 Pσ(∗ |sL)が求まったらP sL, ai = Pσ
β
(ai|sL)とする
Pβ
ai = e
(
yi
β
)
/ j e
(
yj
β
)
β :softmax temperature(= 0.67)
 その他
 うった手のサブツリーを破棄しないで残し、相手の手番中も探索を継続する
 持ち時間は中盤に多く配分し、Nr最大の手とQ最大の手が一致しない場合は延長
する
 nthrは、Pσ(a|s)のキューの捌け方と登録がつりあうように動的に調整する
 Q(s,a)は、評価関数と勝率の両方をバランスよく見る
 u(s,a)は、まだ試していないエッジを探索しようとする
メリハリが強くなる
15
まとめ
 従来のMCTSベースの囲碁ソフトとの差異は
 高速なPπ ・Pτと、ディープラーニングで獲得したPσ・Pρの
2種類のポリシーを利用。
 事前にPρでロールアウトした場合の評価近似値を、vθとして
ディープラーニングしておく。
 対戦では、Pπ ・PτとPσ・ vθを併用した評価に基づく探索を
行い、大局観を見失わない強さと学習済み局面に対する強さ
を併せ持った
 論文内の評価報告ではプロ5段相当となっているが、
イ・セドル(9段)との対戦前にさらなる強化・改善
があったと推察される
16

More Related Content

What's hot

分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17Takuya Akiba
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理Taiji Suzuki
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情Yuta Kikuchi
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてSho Takase
 
深層学習の非常に簡単な説明
深層学習の非常に簡単な説明深層学習の非常に簡単な説明
深層学習の非常に簡単な説明Seiichi Uchida
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!TransformerArithmer Inc.
 
OSS強化学習フレームワークの比較
OSS強化学習フレームワークの比較OSS強化学習フレームワークの比較
OSS強化学習フレームワークの比較gree_tech
 
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...Deep Learning JP
 
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健Preferred Networks
 
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~Kenshi Abe
 
研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有Naoaki Okazaki
 
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモAnaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモayohe
 
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -tmtm otm
 
多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識佑 甲野
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデルMasahiro Suzuki
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement LearningPreferred Networks
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習cvpaper. challenge
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験克海 納谷
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIShota Imai
 
Triplet Loss 徹底解説
Triplet Loss 徹底解説Triplet Loss 徹底解説
Triplet Loss 徹底解説tancoro
 

What's hot (20)

分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法について
 
深層学習の非常に簡単な説明
深層学習の非常に簡単な説明深層学習の非常に簡単な説明
深層学習の非常に簡単な説明
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
OSS強化学習フレームワークの比較
OSS強化学習フレームワークの比較OSS強化学習フレームワークの比較
OSS強化学習フレームワークの比較
 
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
 
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
 
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
 
研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有
 
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモAnaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
 
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
 
多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 
Triplet Loss 徹底解説
Triplet Loss 徹底解説Triplet Loss 徹底解説
Triplet Loss 徹底解説
 

AlphaGoのしくみ