あらすじ
※この商品はタブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字だけを拡大することや、文字列のハイライト、検索、辞書の参照、引用などの機能が使用できません。
人より強い“将棋プログラム”を作ろう
2016年3月、プロ棋士に勝つには後10年かかると言われていたコンピュータ囲碁でAlphaGoがトップ棋士に勝利しました。そこで使われた手法がディープラーニングです。
AlphaGoは局面を「画像」として認識し、打ち手の確率と局面の勝率を予測することで、次の打ち手を決めています。画像とはどのようなものか、次の打ち手をどうやって決めるのか?AlphaGoの論文をヒントに、ディープラーニングを使い棋譜を学習した将棋AIの開発を行います。強化学習のみでトップレベルの強さを持つAlphaZeroの手法も取り入れています。
[導入編]では、コンピュータ将棋の歴史とディープラーニングの関係、コンピュータ将棋の大会の概要を紹介します。
[理論編]では、従来のコンピュータ将棋のアルゴリズム、コンピュータ囲碁で用いられているモンテカルロ木探索とAlphaGoがどのようにディープラーニングを応用したか。基礎的な知識について解説しつつ、これらを将棋AIに応用する方法について述べます。
[実践編]では、ディープラーニングを使った以下の3つの将棋AIについて、PythonとChainerで実装していきます。
方策ネットワーク(policy network)を使って指し手の予測のみでプレイするAI
価値ネットワーク(value network)を使って1手探索を行うAI
方策ネットワークと価値ネットワークを使ってモンテカルロ木探索を行うAI
最後に、より強い将棋AIを作りたいという方のために、ヒントとなる情報を紹介します。
感情タグBEST3
Posted by ブクログ
Ⅰ部 導入編
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++で実装することで高速化
・大規模学習(訓練棋譜を増やす方法)
Posted by ブクログ
本書は、囲碁におけるAlphaGoの手法を参照しつつ、コンピュータ将棋のアルゴリズムを、モンテカルロ法+ディープラーニングを使って、実装する方法を解説している。
コンピュータ将棋の従来手法
→ミニマックス法。
評価関数の質が要であり、2006年のBonanzaが初めて、評価関数の機械学習を導入した。
コンピュータ囲碁で用いられているモンテカルロ法
→ランダムに終局までプレイして、
その勝敗の平均値から、最も勝率の高い手を選択する。
AlphaGoにおける、ディープラーニングの適用範囲は、次の2点
方策ネットワーク(Policy Network)
→ 合法手の中から探索すべき手を選択 → 多クラス分類問題
価値ネットワーク(Value Network)
→ 「勝ち」になる確率を算出(≒評価関数) → 2値分類問題
学術的な内容を避けて、扱うテーマをよく吟味しているのだと思うが、理解して貰おうという親切心が紙面に感じられ、とても分かりやすい。
また、Chainer初心者としては、本書のコードがTrainerライブラリを使わずに実装してあり、
損失の求め方や、逆伝播の仕組み、学習のループ構造など、
ブラックボックスになりがちな箇所が、明示されているのがありがたかった。
Chainer自体についての理解にも役に立った。