280 likes | 424 Views
九州大学大学院システム情報科学府修士 1 年 末廣 大貴. コンピュータ将棋におけるカーネル法を用いた静的評価関数の学習. 自己紹介 研究背景 関連研究 提案手法 実験 今後の課題. 目次. 九州は福岡から来ました 研究室では主に機械学習について学んでます 学部時代は将棋部で、機械学習がコンピュータ将棋界で流行っていると聞き、研究を始める 研究室は違うが、瀧本先生と共同研究してます そしてこの研究会を紹介されました. 自己紹介. でもまさか一人で行くことになるとは・・・. ゲームのパターン数 オセロ 10の60乗 チェス 10の120乗
E N D
九州大学大学院システム情報科学府修士1年 九州大学大学院システム情報科学府修士1年 末廣大貴 コンピュータ将棋におけるカーネル法を用いた静的評価関数の学習
自己紹介 研究背景 関連研究 提案手法 実験 今後の課題 目次
九州は福岡から来ました 研究室では主に機械学習について学んでます 学部時代は将棋部で、機械学習がコンピュータ将棋界で流行っていると聞き、研究を始める 研究室は違うが、瀧本先生と共同研究してます そしてこの研究会を紹介されました 自己紹介 でもまさか一人で行くことになるとは・・・
ゲームのパターン数 • オセロ10の60乗 • チェス 10の120乗 • 将棋10の220乗 • 囲碁 10の360乗 将棋をしらみつぶしに解くことはほぼ不可能 将棋は「解ける」か? 強い将棋コンピュータを作ろう
局面評価(形勢判断)の正確さ 正確な静的評価関数 • 先読み(探索)の速さ 枝刈り,並列化など 「強い」コンピュータ将棋を作るために
入力:局面を表現するベクトル • 駒の有無(駒割) • 駒の位置関係 • 玉の危険度 出力:実数(評価値) を重みベクトルとしたとき, 静的評価関数
例:駒の有無だけを考えた静的評価関数 例:駒の重み(手番で符号を入れ替える) 静的評価関数
先手は後手より 先手は後手より 馬1枚得(+160) 角1枚得(+140) で300点優勢 静的評価関数
従来・・・人間の手作業による調整 • 大変な労力 • 作成者の棋力,感覚に依存 ボナンザメソッド(保木,2006) 機械学習による、特徴ベクトルの重みの自動調整 静的評価関数の作りかた
特徴ベクトルの要素は作成者が用意しなければならない特徴ベクトルの要素は作成者が用意しなければならない →やはり作成者の感覚、棋力に依存 実際、現在の強豪プログラムの多くは、将棋の高度な知識が必要とされるような特徴ベクトルを多く用い、学習を行っている 問題提起
局面の単純な情報のみから、必要な特徴を自動的に作成し、学習できないか局面の単純な情報のみから、必要な特徴を自動的に作成し、学習できないか 問題提起
サポートベクターマシン カーネル法と相性の良い優秀な学習器 カーネル法 特徴ベクトルの要素同士の組み合わせから成る新しい特徴を構成する(今回の手法の骨子) 提案手法 • サポートベクターマシンとカーネル法に注目
SVM(サポートベクトルマシン) 座標上に学習サンプルが与えられる 超平面 マージン(超平面と一番近い例との距離) が最大となるような超平面を作成 ? 未知の例が与えられる 超平面に応じて分類
これは二次計画問題なので,効率よく 解くことが出来る SVM(サポートベクトルマシン) 線形分離不可能なデータには性能が不十分
データを高次元の特徴空間上へ写像し、 SVMを線形分離不可能な問題にも対応させるデータを高次元の特徴空間上へ写像し、 SVMを線形分離不可能な問題にも対応させる カーネル法 超平面
カーネル関数 先ほどの式のをに置き換え るだけで,特徴空間上でのマージン最大化超平面 を求めることが出来る カーネル法
次元の点を次元の特徴空間に写像 例: が2次元ベクトル、 多項式カーネル
無限次元の特徴空間に写像 ガウシアンカーネル カーネルを使えば,元の特徴のn項関係を特徴とする特徴空間上で超平面を学習できる
プロ棋士の棋譜を用意 • 棋譜の全ての局面に対し • プロが指した手の後の局面(棋譜の次局面)を正例 • その他の合法手後の局面を負例 とする • 全ての局面を単純な特徴ベクトルで表したものを学習サンプルとして、SVMとカーネル法を用いた学習を行う 提案手法
単純な特徴ベクトル(値は 0 or 1)の例 • 盤上の駒kの数mB[k][m] • 持ち駒kの枚数mH[k][m] • 盤上の位置pに駒kがある P[p][k] • 盤上の位置pに駒kが利いている E[p][k] など 要素の数は,トータルで6000弱 提案手法
特徴ベクトルファイルの具体例 (SVMlight,LIBSVM形式) 提案手法
学習で得たSVMの超平面を用意 局面の全ての合法手後の局面の単純な特徴ベクトルを書き出す 超平面と局面のベクトル表現との内積をその局面の評価値とする 最も評価値の高い局面を選択する minimax法は用いない 対局方法
学習から対局までの概略図 超平面 学習! プロの指した 後の局面 +1 9:0 28:0・・・ -1 9:0 28:0・・・ -1 9:0 28:0・・・ ・ ・ その他の合法手後の局面 SVMとカーネル 棋譜のある局面
学習から対局までの概略図 超平面との内積計算 ! すべての合法手後の局面 9:0 28:0・・・ 9:0 28:0・・・ ・ ・ SVMとカーネル 対局中のある局面 1.05499 - 0.43635 0.53457 ・ ・ ・
以下のプログラム同士を対戦させた • ランダムに指すプログラム • 10局学習したプログラム(カーネル法有る無し) • 20局学習したプログラム(カーネル法有る無し) • Passive Aggressive(オンラインアルゴリズム)の カーネルなしで2000局学習 • SVMlightを使用(http://svmlight.joachims.org/) • カーネルは多項式カーネル( )を用いた • 特徴ベクトルは先ほどあげた6000弱のもの • 全てに詰め将棋ルーチン(7手詰)を搭載 実験
なぜ最高で20局しか学習していないのか? →学習サンプルがメモリに乗らない (100局で約1.5G) →サンプル数を増やすと,計算時間が急速に増大 現在棋譜を50000局用意しているが・・・ 重要な問題
学習に時間がかかりすぎる(→並列化?) メモリに乗らない(→オンライン?) 基本特徴ベクトルの追加(相対位置、王手など) SVMのパラメータの最適化 やたら駒を切りたがるので,カーネルに期待しつつ,静的評価関数の正確さを測るため探索も入れた方が良いかも ランキング問題として考えてみる 課題