Ⅰ部 導入編
1章 コンピュータ将棋について
省略
Ⅱ部 理論編
2章 コンピュータ将棋のアルゴリズム
ゲームの木、ミニマックス法、αβ法、評価関数について簡単な説明
3章 コンピュータ囲碁のアルゴリズム
モンテカルロ法とその発展版UCTアルゴリズム
4章 AlphaGoの手法
優先順位制御の改善 -> 方策ネットワーク
プレイアウトの改善 -> 価値ネットワーク
方策ネットワーク
囲碁の局面を画像のように認識して多くの棋譜を学習させてどの着手から優先して指すか決める
価値ネットワーク
囲碁の局面を画像のように認識して直接その局面を評価する。
5章 ディープラーニングについて
畳み込みニューラルネットワーク(CNN)の説明。
ディープラーニングの将棋AIへの応用
・方策ネットワーク
局面を19×19の画像として与え、石の色ごとにわけ、学習させる。石の位置だけではなく呼吸点、シチョウなどの特徴点を別のチヤンネルで与え全部で48のチヤンネルを入力とする。
出力は与えられた局面の着手となる。
・価値ネットワーク
価値ネットワークも局面を与えられ勝率を出力する。-1から+1で-1が負け、+1が勝ちとなる。
6章 ディープラーニングフレームワーク
Chainer,TensorFlow,Keras,PyTorchなどの紹介と採用したChainerのインストールなどの説明
7章 方策ネットワーク
具体的にソースコードを示しながら実装している。
プログラムの局面管理、棋譜読み込みなどはPythonで書かれたpython-shogiを活用。
8章 将棋AIの実装
GUIソフトを使って対局ができるようにUSIエンジンを実装していく。
10章 価値ネットワーク
具体的にソースコードを示しながら実装している。
学習させたプログラムで1手探索させることができる。しかしまだ精度が不足しているの対策が必要
11章 学習テクニックその2
精度を上げる手法
・転移学習
・マルチタスク学習
・Residual Networkの採用
12章 モンテカルロ木探索
これまで探索をしてこなかったので悪手を指すことがよくあった。探索方法としてモンテカルロ探索を採用実装している。
ここまでの実装で基本形が完成。
13章 さらに発展させるため
前章までのプログラムを発展させるための方法
・C/C++で実装することで高速化
・大規模学習(訓練棋譜を増やす方法)