Document

Bonanza Method を用いた
囲碁評価関数の設計
橋本剛,松井利樹,野口陽来
北陸先端科学技術大学院大学
こちらの分野のホットな話題
(昨年のスライドより)
 コンピュータ将棋:
評価関数の自動学習(B
onanza Method, 保木2006)
 プロレベルまであと少し
 コンピュータ囲碁:
モンテカルロ法(+UCT)
が猛威を振るう
 9路盤ではプロに勝った?
19路盤でも有段者に
今日の発表:コンピュータ将棋の学習方法で
コンピュータ囲碁の評価関数を学習
本日の発表の流れ
 モンテカルロ法を使ったコンピュータ囲碁
 ゲーム評価関数の学習とBonanza method
 Bonanza Methodを用いた囲碁評価関数の設
計
 まとめ
 今後の目標
モンテカルロ法を使ったコンピュー
タ囲碁
コンピュータと囲碁
Search Space
チェッカー
オセロ
全宇宙の原子の数
チェス
将棋
囲碁
探索空間
10の30乗
10の60乗
10の78乗
10の120乗
10の220乗
10の360乗
強さ
solved
世界最強
どうやって数えた?
世界最強
奨励会3段~4段
アマ二段
Target
•目標は名人に勝つこと
•欧米ではゲーム研究現在のメインターゲット
(フランスが強い: Crazy Stone, MoGo)
•日本では将棋後のメインターゲット?
コンピュータ囲碁とモンテカルロ法
従来は…
MINMAX + 評価関数
石の働きがダイナミックに変化
パターンや空間の認識が重要
評価関数の作成が困難: (苦労の割には)精度悪い、 重い
現在大流行: モンテカルロ法
1. 全ての合法手からランダムに一手選び手を進める
2. 終局まで繰り返し、勝った数をカウントする
3. 勝ち数が一番多い手を最善手として選ぶ
評価関数が不必要
モンテカルロ法 オセロに実装 例
•白の手は a2,a3,a4,b4の 4種類
•a2 と指した後の勝率は 68%
(6810/10000) と一番高いので
a2を選ぶ
•a3 だと勝率が32%で、悪手の
可能性高い
モンテカルロ木探索
(Monte-Carlo Tree Search, MCTS)
 MINMAXとモンテカルロの合体
 「選んだ」ノードでモンテカルロシュミレーションを
行い、勝率を計算
 MINMAXで勝率の最も高いノードを選ぶ
 どのノードを選ぶ?
⇒ Multi-Armed Bandit Problem
Multi-Armed Bandit Problem
スロットマシンをプレイ(日本人はパチンコをイメージ
するとわかりやすいかも)
 どのマシンがいいかわからない


どのマシンをどの程度プレイすれば最も儲かるか?
少しずつプレイして、一番よさそうな台でしばらくやっ
てみよう!
 でももっといい台があるかもしれない⇒他のも試さな
いと…

「 収 穫 と 探 検 の ジ レ ン マ 〈exploitation-exploration
dilemma〉」
Upper Confidence Bound method
(UCB)A [Auer, 2002]
以下に定義されるUCBスコアが最大になる台を選ぶ
logn
Xi c
Ti
n : 試行した回数
X i : マシン i の報酬期待値 Ti: マシン
i がプレイされた回数
UCT [Kocsis, Szepevari 2006]
 UCB for Trees
 現在ほとんどの囲碁プログラム、AMAZONSな
どで採用されているアルゴリズム
From:
Sylvain Gelly, Yizao Wang, Remi Munos and
Olivier Teytaud
Modifications of UCT with Patterns in
Monte-Carlo Go.
Technical Report 6062, INRIA ,2006
モンテカルロ囲碁と評価関数
コンピュータ囲碁を強くするためには??
やはり評価関数が必要!
ただし手の評価関数
Progressive Widening (In UCT)
手に評価値を与えて評価の高い手から生成していく
精度の高い評価関数を必要とする
特徴の設計が重要である
7
評価関数を使ったプレイアウト(In MC)
手に評価値を与えて確率分布を生成する
高速な評価関数を必要とする
評価関数を使った
評価値の重み付けが重要である
プレイアウト 例
二種類の評価関数が必要
機械学習!!
5
3
ゲーム評価関数の学習と
Bonanza Method
局面評価関数の学習

TD-Gammon (G. Tesauro, 1998]
バックギャモン(双六に似たゲーム)思考部の学習
 Temporal difference + neural network


Logistello (M. Buro, 1999)
オセロプログラム(人間チャンピオンに勝利したことで有
名)
 パターンの重み学習
 最小二乗法


Bonanza Method [保木, 2006]
Minimax 探索結果の最適制御
 コンピュータ将棋Bonanzaで大成功 ⇒ 現在大流行中

Logistello(オセロ)の評価関数
• 左の各パターンセットの
全パターン値を計算しておく
オセロの重要な概念
1. 確定石
2. 着手数
3. 偶数理論
などを近似している
線形回帰でパターン値を計算
(訓練用セット 8万対局300万局面,
すべての局面でNegamax探索
した石差を記述)
From: M. Buro, Experiments with Multi-ProbCut and a New High-Quality
Evaluation Function for Othello , Games in AI Research, 2000
結論の出しやすいオセロならではの手法!
13段階(13-16石,17-20石、…)
で計算
評価値は各パターン値の線形和
将棋などの局面評価関数の学習がな
ぜ困難だったか?

大量のデータをどう扱う?

これまでTD法、ニューラルネットなどによる学習が試みら
れた
• 非現実的な時間がかかり実用化に到らず


⇒BonaMetho: 最適制御法+さまざまな工夫
教師データをどうするか?
棋譜は表面的な情報(プロは深い読みの結果手を選んで
いる)
 ⇒BonaMetho: 一手探索+静止探索の最善応手手順末
端局面で比較、学習する

Bonanza Method 1

最大(小)化問題として力学
系の最適制御理論を用い
る




ラグランジュ形式の解析力学
パルス整形による化学反応
制御
最小燃料のロケット弾道
池の鯉に与える餌
t を手数、xを局面、uを特徴
ベクトルとみなし機械学習
を行う
 棋譜の指し手とminimax探
索がよく一致する特徴ベク
トル (評価関数)を求める


T
0
l ( x, u, t )dt
t : 時間に関する数
x(t): 系の状態
u: 制御変数
Bonanza Method 2:誤差関数の設計
棋譜中で選択された手 p0 を最良(教師信号)とし,
その他の手 pm を教師信号より小さくする学習を行う.
N M 1
J x S    T  f x  pi ,m   f x  pi ,0   x  min
i 1 m 1
f: minmax探索の評価値
N: サンプルされた棋譜の全局面数
Φ: 拘束条件
M: 局面Pでの合法手の数
m=0: 棋譜で指された手
T[x]: 評価値の差を、棋譜の指し手との一致度に変換する関数
T[x]:シグモイド関数
難しい手は学習したくない
誤差の影響を小さくしたい
1
T ( x) 
1 ex
Bonanza Method 3 ベクトルの更新

ベクトルの要素数が多
く、目的関数の勾配を
求めて最適化
目的関数が十分滑らか
ではない
 2次収束を持つ手法はう
まくいかない


軽い探索の結果得られ
る最善応手手順の末端
局面同士を比較
new
l
v

old
l
v
 J 
 hsign  
 vl 
Bonanza Method の 長所
 学習の時間が比較的早い
 これまで実用的な時間で十分な性能を得られる
手法はなかった
 大量の評価項目を持てる
 従来はハンドチューニングが基本:
数が限られていた
 人間らしい指し手が可能になった
• 2駒、3駒の位置関係をすべて学習
将棋の学習結果例はこちら
評価項目の
Bonanza Method を用いた
囲碁評価関数の設計
BackGround
 モンテカルロ囲碁: UCT と プレイアウトに手の
評価関数が必要 ⇒ 評価項目の掛け算
 これまでにいくつか学習方法は提案されてい
る
 Bonanza Method を使うともっといい学習結果
が得られないだろうか?
⇒ Challenge!
Design of Feature Vector
パターンやヒストリーで特徴を構成する
一.盤端からの距離(15)
二.12近傍パターン(18)
三.8近傍パターン(18)
四.トリに関する特徴(12)
五.ノビに関する特徴(12)
六.アタリに関する特徴(3)
七.ヌキに関する特徴(3)
八.直前の手からの距離(15)
九.二手前の手からの距離(15)
モンテカルロ用評価関数:
高速性が重要
UCT用評価関数:
精度が重要
⇒ 特徴が異なる
赤字はUCT用評価関数でのみ使用する特徴
Design of Machine Learning
Approach
棋譜が選択した手を教師信号とした教師あり学習
勾配法(Bonanza Method) を使って設計
•合法手で最大評価の手 = 棋譜の手 となるよう無理矢理 調整
•コンピュータ将棋で盛んな手法 (保木2006)
Another Method
少数化最大化法
Computing Elo Rating of Move patterns in
the Game of GO , Remi Coulom 2007
最大エントロピー法
Move Prediction in Go with the Maximum
Entropy Method, 荒木 2008
Design of Evaluation Function
Evaluation function
ALL
  p    l j  p x j
γ(p) 評価関数(確率)
l(p) 特徴ベクトル
x
パラメータベクトル
j
 1
l j  p  : 
1 x j
exist
otherwise
局面の評価値は積で表現
x : x1 , x2 ,, x ALL  x  0
T
probability function
f  pi  
  pi 
ALL
  p 
move
move
学習による自動調整
を行おう!!
Design of Gradient Method

J x   T  f v  pi   f 0  pi   min
i
f v  pi  
  pi 
ALL
  p 
微分可能で連続
move
move
T 
 : 誤差汎化関数
シグモイド関数
教師信号は棋譜で選択された手
f v  p0 
学習時に探索は行わない
p0 : 棋譜で遷移した局面
Design of Machine Learning
一致率と確率関数には大きな誤差がある
0.4
0.35
一致率<確率関数
確率関数を過大評価
0.3
一致率>確率関数
確率関数を過小評価
確率[%]
Hypothesis
0.25
一致率
0.2
0.15
確率関数の累積確率
0.1
0.05
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
順位
一致率と確率関数が等しければ最適と仮定
フィルタを設計する!!
f  pi  
  pi 
ALL
  p 
move
move
Design of Filter
学習後にパラメータを n 乗して代入する
n
xx


J n   f fil  pmax,i   T  min
All
i
pmax,i : 第一合法手の局面
パラメータベクトルを累乗しても順位
は保証される
T : 第一合法手の一致率
f fil :
nをどうやって定めるのか??
調整後の関数
0.4
学習で決める!!
0.35
うまくいった! n =1.75497
確率[%]
0.3
0.25
0.2
一致率
0.15
確率関数の累積確率
0.1
補正関数の累積確率
0.05
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
順位
Experiments: 対戦実験



我々のプログラム誤碁能美譚(nomitan)で対戦
9路盤プログラム, 一手30秒, 200戦先後入れ替え
提案手法 vs. 少数化最大化法: 142-58
 提案手法の優秀性を証明!
UEC杯(2008年12月)の結果
7位(28プログラム中)
開発期間は1年あまり
若手奨励賞受賞
 準優勝不動碁作者の自
戦記:
「対局が始まると不動碁はジ



リジリ引き離されて必敗の局
面に.」
まとめ
 コンピュータ囲碁はモンテカルロ+UCT
に手の評価関数で強くなる!
 機械学習では将棋で開発された
Bonanza Method が成功を収める
 囲碁評価関数をBonanza Method で学習
する手法を提案
 我々のプログラム「誤碁能美譚」でその
優秀性を証明、大会でも好成績を収め
た
今後の目標
 コンピュータ将棋:
名人に勝つ!
数年~10年後ぐらい? (現在は羽生さん)
 評価項目をどのように選べば強くなるか?
 ペナルティの設定など泥臭い調整が必要⇒より
自動的で高性能の学習を目指す

 コンピュータ囲碁:
名人に勝つ!
 50年後などと言われていたが、案外早いかも?
 評価関数の計算がボトルネック⇒より早くかつ高
精度の評価関数が必要