マナティ

購入形態

EPUB
3,498円
数量:

カートに追加されました。カートを見る

カートに入れる
紙の本を買う

将棋AIで学ぶディープラーニング

マイナビ出版

人より強い"将棋プログラム"を作ろう

将棋プログラムの作成を通してディープラーニングをより深く理解できる。

2016年3月、プロ棋士に勝つには後10年かかると言われていたコンピュータ囲碁でDeepMindが開発したAlphaGoがトップ棋士に勝利しました。そのAlphaGoで使われた手法がディープラーニングです。

AlphaGoでは局面を「画像」として認識し打ち手の確率と局面の勝率を予測することで、次の打ち手を決めています。画像とは具体的にどのようなものか、次の打ち手をどうやって決めるのか?AlphaGoの論文をヒントに、ディープラーニングを使い棋譜を学習した将棋AIの開発を行います。強化学習のみでトップレベルの強さを持つAlphaZeroで用いられた手法についても取り入れています。

[導入編]では、コンピュータ将棋の歴史とディープラーニングの関係、コンピュータ将棋の大会の概要と参加方法について紹介します。
[理論編]では、実装する将棋AIの前提となる理論について解説します。従来のコンピュータ将棋のアルゴリズム、コンピュータ囲碁で用いられているモンテカルロ木探索とAlphaGoがどのようにディープラーニングを応用したか。基礎的な知識について解説しつつ、これらを将棋AIに応用する方法について述べます。
[実践編]では、ディープラーニングを使った、実際に対局できる以下の3つの将棋AIについて、PythonとChainerで実装していきます。

方策ネットワーク(policy network)を使って指し手の予測のみでプレイするAI。
価値ネットワーク(value network)を使って1手探索を行うAI。
方策ネットワークと価値ネットワークを使ってモンテカルロ木探索を行うAI。

最後に、より強い将棋AIを作りたいという方のために、ヒントとなる情報を紹介します。

発売日:2018-03-14

ページ数:288ページ

目次

はじめに
本書の読み方

第Ⅰ部 導入編
第1章 コンピュータ将棋について
1.1 コンピュータ将棋の歴史
1.2 コンピュータ将棋とディープラーニング
1.3 コンピュータ将棋の大会

第II部 理論編
第2章 コンピュータ将棋のアルゴリズム
2.1 ゲーム木
2.2 ミニマックス法
2.3 評価関数
2.4 αβ法
2.5 評価関数の機械学習
2.6 強化学習
2.7 まとめ
第3章 コンピュータ囲碁のアルゴリズム
3.1 コンピュータ囲碁の課題
3.2 モンテカルロ法
3.3 モンテカルロ木探索
3.4 マルチアームドバンディット問題
3.5 UCTアルゴリズム
3.6 まとめ
第4章 AlphaGoの手法
4.1 方策ネットワーク(policy network)
4.2 価値ネットワーク(value network)
4.3 AlphaGoの探索アルゴリズム
4.4 AlphaGo Zeroの手法
4.5 AlphaZeroの登場
4.6 まとめ
第5章 ディープラーニングについて
5.1 ニューラルネットワーク
5.2 ニューラルネットワークの学習
5.3 分類問題と回帰問題
5.4 畳み込みニューラルネットワーク
5.5 ディープラーニングの将棋AIへの応用
5.6 まとめ

第III部 実践編
第6章 ディープラーニングフレームワーク
6.1 ディープラーニングフレームワークについて
6.2 フレームワークの選択
6.3 GPU
6.4 インストール
6.5 サンプル実行
6.6 Chainerの基本
第7章 方策ネットワーク(policy network)
7.1 ソースコードの構成
7.2 モジュールインストール
7.3 方策ネットワークの構成
7.4 方策ネットワークの実装
7.5 訓練データの準備
7.6 python-shogi
7.7 共通処理の実装
7.8 学習処理の実装
7.9 学習実行
第8章 将棋AIの実装
8.1 ソースコードの構成
8.2 USIエンジン
8.3 USIエンジンの実装
8.4 コマンドラインからテスト
8.5 GUIソフトに登録できるようにする
8.6 USIエンジンに登録
8.7 対局
8.8 ソフトマックス戦略
8.9 まとめ
第9章 学習テクニック
9.1 ハイパーパラメータの調整
9.2 最適化手法
9.3 Batch Normalization
第10章 価値ネットワーク(value network)
10.1 ソースコードの構成
10.2 価値ネットワークの構成
10.3 価値ネットワークの実装
10.4 学習処理の実装
10.5 学習実行
10.6 「1手」探索のAI作成
10.7 USIエンジンに登録
10.8 対局
10.9 まとめ
第11章 学習テクニック その2
11.1 転移学習
11.2 マルチタスク学習
11.3 Residual Network
第12章 モンテカルロ木探索
12.1 ソースコードの構成
12.2 ハッシュ
12.3 モンテカルロ木探索の実装
12.4 テスト
12.5 対局
12.6 並列化
12.7 まとめ
第13章 さらに発展させるために
13.1 C++による高速化
13.2 大規模学習
13.3 終盤の課題

参照文献

付録 Linuxでのインストール手順

著者プロフィール

  • 山岡忠夫(著者)

    東京工業大学工学部電子物理工学科卒業。システムエンジニア。趣味でスマートフォン向けアプリの開発を行っている。AlphaGoでディープラーニングに興味を持ち将棋ソフト「dlshogi」を開発中。開発状況は随時ブログに掲載中。http://tadaoyamaoka.hatenablog.com/