カーリングの局面評価関数を学習 with “tensor flow”
TRANSCRIPT
カーリングの局面評価関数を学習WITH “TENSOR FLOW”
KATSUKI OHTO
2016/2/10
自己紹介
大渡 勝己 (Katsuki Ohto)
今は学生です
分野…ゲームAI
LT内容
TensorFlow使ったことないけど軽い気持ちでLT立候補したらいつの間にか人数増えてて会場Googleで穴があったら入りたい
カーリング
氷上で石を投げ合って得点を競うゲーム
オリンピックの時には全国的に騒がれる
複雑な要素を排除すると、ゲーム的には二人零和完全情報不確定ゲーム
カーリングのルール
円の中心に近い方が得点をもらえる
← 黄色が3点
カーリングAI電気通信大学の研究室が設計した戦略シミュレータ
「デジタルカーリング」http://minerva.cs.uec.ac.jp/curling/wiki.cgiを利用
評価関数
局面の良し悪しを点数化
例)私の評価関数
connpassを見たらいつの間にか人数相当増えていた
→ −300実際話している今 → +500(緊張で気分が高揚)
カーリング評価関数
カーリングの各エンド(テニスにおけるセットのようなもの)の得点−8 ~ +8 点
これを繰り返す
→局面の情報から、−8 ~ +8のうちどの得点になるかを予測できれば良い!
カーリング+TENSORFLOW
INPUT 局面情報(石の配置)OUTPUT 予測される得点(の確率分布)
石の配置は画像として扱えるので、TensorFlowのチュートリアルコード(MNIST)を(ほぼ)そのまま使ってみよう!
局面の画像化
先後の石の情報を強引に1枚の白黒にする𝑝画素 𝑠#盤上にある石α, 𝛽係数
𝑑(𝑝, 𝑠#) = 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒(𝑝, 𝑠#)𝑐𝑜𝑙𝑜𝑟5 = ∑ α𝑒789 5,:; <
:;(先)
−∑ α𝑒789(5,:;)<:;(後)
石の影響をガウシアン(正規分布)で加算
線形関数による予測
線形関数による近似
𝑦 = 𝑊𝑥 + 𝑏
y = tf.nn.softmax(tf.matmul(x_placeholder, W) + b)
得点予測率 41%(ランダムだと6%程度)
出力クラス数
W = tf.Variable(tf.zeros([784, 17])) # 行列b = tf.Variable(tf.zeros([17])) # ベクトル
MNISTでは出力クラス数10だったところを変えるだけでOK
突っ込み
そもそも棋譜のうち、「後手1点」の割合が41%<得点の分布(x100)>←後手 [ 0 0 2 8 32 97 239 415 15 139 32 9 3 1 0 0 0 ]先手→
𝑦 = 𝑊𝑥 + 𝑏
バイアス項が発散しているだけ…
CNNによる予測
画像認識に強いCNN(Convolutional Neural Network)ならばもっともまともな特徴抽出ができるのでは
CNNによる予測
画像認識に強いCNN(Convolutional Neural Network)ならばもっともまともな特徴抽出ができるのでは
… (チュートリアルをコピペ中)
得点予測率 53%!!
突っ込み(その2)
実はトレーニングデータとテストデータに同じエンドの別局面が入っている
石が1個増えた
突っ込み(その2)
・連続値が完全一致することはほとんどないので、完全一致した場合は得点も同じ
→石の位置を丸暗記しているだけかも
評価関数の出来
隠れた石を叩こうとしたらガードに引っかかった→相手有利に
[0, 0, 0, 2, 2, 4, 13, 58, 1, 13, 1, 2, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 2, 9, 34, 35, 7, 7, 1, 1, 0, 0, 0, 0, 0]
突っ込み(その3)
そもそもCNNは平行移動に強いのが持ち味
カーリングの石の配置は平行移動可能なのか…部分的には可能かもしれない
扱う対象をよく考えた方が良い
感想
・TensorFlowチュートリアルの内容だけでもすぐに応用できるので、入門としては豪華
・モデル保存が簡単にできる。特に複数の予測器をつなげても楽々(先手と後手で分けたり)
・いろいろ罠にはまらないよう注意…
モデル保存
運命の出会いは突然にやってくる
saver = tf.train.Saver() # 保存(読込)準備
saver.save(sess, “model.ckpt”) #保存
saver.restore(sess, “model.ckpt”)) #読込
感想
・カーリングはとりあえず機械学習を試すにはちょうどいい!
・機械学習の標準問題としてカーリングを!
今後のゲームAI大会
2016/3/9 Game AI Tournament@電通大人狼カーリング…etc
2016/3/19 – 20 コンピュータ囲碁大会2016/5/3 – 5 コンピュータ将棋選手権他 ぷよぷよAIなど