本書の詳細
サンプルを作りながら、最新・最強の機械学習フレームワーク「AlphaZero」が学べる!
Google傘下の英国DeepMind社が開発した「AlphaGo」は、2015年に「囲碁」の一流棋士に圧勝したことで、世界中の大きな注目を集めました。それを発展させ、「囲碁」だけでなく「チェス」「将棋」でも最強のコンピュータソフトを目指して作られたのが、2017年末に発表された「AlphaZero」です。
本書では、この最新・最強の機械学習フレームワークである「AlphaZero」の仕組みを解き明かします。「AlphaZero」は、これまでも使われてきた「深層学習」「強化学習」「探索」のアルゴリズムを組み合わせて作られており、それぞれの構成要素を理解することで、全体像を把握できます。
「深層学習」「強化学習」「探索」のそれぞれの構成要素ごとにサンプルプログラムを用意しているので、動作を確認しながら、ステップバイステップで学んでいくことが可能です。機械学習の実行にはマシンリソースが必要ですが、本書では無償で利用できるクラウド上の「Google Colaboratory」を利用することで、Webブラウザだけで実行と確認を行うことができます。
「AlphaZero」の仕組みが理解できたところで、本書の最終章でそれを応用し「コネクトフォー」「リバーシ」「簡易将棋」の3つのサンプルを作成してみます。AIと人間で対戦して、「AlphaZero」でどのぐらい強いプログラムができるのかを実際に確認してみることが可能です。
ダウンロードデータは、ZIP形式で圧縮されています。WinZip(Windows)やStuffit(Macintosh)等のアプリケーションで解凍してご使用ください(ファイルサイズ:約120MB)。
以降の正誤は、2刷で修正済み
■P.132の表4-2-2とP.133の表4-2-3
※表の内容が逆になっていました。
■P.137の最後のリスト中
誤:
# 方策に従って行動と次の状態の取得
[s_next, a] = get_s_a_next(pi, s)
正:
# 方策に従って行動を取得
a = get_a(pi, s)
# 行動に従って次の状態を取得
s_next = get_s_next(s, a)
■P.139(4章)の数式
正しい数式はこちらです
■P.139(4章)のリスト中
誤:delta_theta[i, j]=(n_ij + pi[i, j] * n_i) / total
正:delta_theta[i, j]=(n_ij – pi[i, j] * n_i) / total
誤:stop_epsilon = 10**-3 # 閾値
正:stop_epsilon = 10**-4 # 閾値
誤:for episode in range(1000):
正:for episode in range(10000):
■P.169(4章)とP.171(4章)のリスト中
修正箇所が長いので、以下のテキストファイルをご覧ください。
p169とp171の正誤情報
■P.217の一番上のリスト
誤:create_dual_network()
正:dual_network()
■p247の一番上のリスト
誤:retrain_network()
正:train_network()
目次
1章 AlphaZeroと機械学習の概要
1-1 「AlphaGo」と「AlphaGo Zero」と「AlphaZero」
1-2 深層学習の概要
1-3 強化学習の概要
1-4 探索の概要
2章 Pythonの開発環境の準備
2-1 PythonとGoogleColabの概要
2-2 Google Colabの使い方
2-3 Pythonの文法
3章 深層学習
3-1 ニューラルネットワークで分類
3-2 ニューラルネットワークで回帰
3-3 畳み込みニューラルネットワークで画像分類
3-4 ResNet(Residual Network)で画像分類
4章 強化学習
4-1 多腕バンディット問題
4-2 方策勾配法で迷路ゲーム
4-3 SarsaとQ学習で迷路ゲーム
4-4 DQN(deep Q-network)でCartPole
5章 探索
5-1 ミニマックス法で三目並べ
5-2 アルファベータ法で三目並べ
5-3 原始モンテカルロ探索で三目並べ
5-4 モンテカルロ木探索で三目並べ
6章 AlphaZeroの仕組み
6-1 AlphaZeroで三目並べ
6-2 デュアルネットワークの作成
6-3 モンテカルロ木探索の作成
6-4 セルフプレイ部の作成
6-5 パラメータ更新部の作成
6-6 新パラメータ評価部の作成
6-7 ベストプレイヤーの評価
6-8 学習サイクルの実行
7章 人間とAIの対戦
7-1 ローカルのPython開発環境の準備
7-2 TkinterでGUI作成
7-3 人間とAIの対戦
8章 サンプルゲームの実装
8-1 コネクトフォー
8-2 リバーシ
8-3 簡易将棋