内容紹介
深層強化学習の入門から実装まで、この一冊でわかる!
アルファ碁などのゲームAIやロボットアームの制御、自動運転などで注目されている深層強化学習の基礎と、Pythonによる実装について解説した入門書です。
強化学習に適したライブラリであるChainer(ChainerRL)と、AIシミュレーション環境であるOpenAI gymを用いて解説しています。
ソフトウェアシミュレーションだけでなくRaspberryPiとArduinoを用いた実環境への応用も解説しているので、ソフト・ハード問わず自身の課題に深層強化学習を応用することできるようになっています。
このような方におすすめ
1) 深層学習、強化学習に興味のあるITエンジニア
2) ロボット、産業用ロボットなどの開発者
3) ゲームAIの開発者
目次
主要目次
1章 はじめに
2章 深層学習
3章 強化学習
4章 深層強化学習
5章 実環境への応用
付録
付録1 VirtualBoxのインストール
付録2 RaspberryPiの設定
付録3 Arduinoのインストール
付録4 Graphical Processing Unit(GPU)の利用
付録5 Intel Math Kernel Libraryを用いたNumPyのインストール
詳細目次
1章 はじめに
1.1 深層強化学習でできること
1.2 本書の構成
1.3 フレームワーク:ChainerとChainerRL
1.4 Pythonの動作確認
1.5 Chainerのインストール
1.6 ChainerRLのインストール
1.7 シミュレータ
2章 深層学習
2.1 深層学習とは
2.2 ニューラルネットワーク
2.3 Chainerでニューラルネットワーク
2.3.1 Chainerとニューラルネットワークの対応
2.3.2 Chainerのプログラム
2.3.3 パラメータの設定
2.3.4 データの作成
2.3.5 ニューラルネットワークの登録
1.ニューラルネットワークの設定
2.深層学習のための設定
3.モデルの設定
2.3.6 各種の登録
2.3.7 学習状況の表示
2.3.8 学習状況の保存
2.3.9 学習の実行
2.4 他のニューラルネットワークへ対応
2.4.1 パーセプトロン
2.4.2 5層のニューラルネットワーク(深層学習)
2.4.3 入力中の1の数を数える
2.5 ディープニューラルネットワークによるMNIST認識
2.5.1 手書き文字の入力形式
2.5.2 ディープニューラルネットワークの構造
2.5.3 8×8の手書き文字データ
2.6 畳み込みニューラルネットワークによるMNIST認識
2.6.1 畳み込み
2.6.2 活性化関数
2.6.3 プーリング
2.6.4 実行
1.ニューラルネットワークの構造
2.入力データの作り方
2.7 使いこなすテクニック
2.7.1 ファイルのデータを読み込む
2.7.2 学習モデルを使う
2.7.3 学習を再開する
2.7.4 重みを調べる
2.7.5 ファイルから手書き文字を読み込む
3章 強化学習
3.1 強化学習とは
3.1.1 教師あり学習
3.1.2 教師なし学習
3.1.3 半教師付き学習
3.2 強化学習の原理
3.3 簡単な例で学習:ネズミ学習問題への適用
3.4 Qラーニングの問題への適用
3.4.1 状態
3.4.2 行動
3.4.3 報酬
3.4.4 Q値
3.5 Pythonで学習
3.5.1 プログラムの実行
3.5.2 プログラムの説明
1.get_action関数
2.step関数
3.update_Qtable関数
4.random_action関数
3.6 倒立振子
3.6.1 プログラムの実行
3.6.3 プログラムの説明
1.get_action関数
2.env.stepメソッド
3.update_Qtable関数
4.random_action関数
5.digitize_state関数
6.そのほかOpenAI Gymに必要な関数
3.7 Q値の保存と読み込み方法
4章 深層強化学習
4.1 深層強化学習とは
4.2 ネズミ学習問題への適用
4.2.1 プログラムの実行
4.2.2 プログラムの説明
1.ライブラリのインポート
2.ニューラルネットワークの設定
3.ランダム行動の関数
4.step関数
5.変数の設定
6.深層強化学習の設定
7.学習の繰り返し
4.3 エージェントの保存と読み込み方法
4.4 OpenAI Gymによる倒立振子
4.4.1 プログラムの実行
4.4.2 プログラムの説明
1.ライブラリのインポート
2.ニューラルネットワークの設定
3.OpenAI Gymによる倒立振子の初期化と表示
4.変数の設定
5.深層強化学習の設定
6.学習の繰り返し
4.5 OpenAI Gymによるスペースインベーダー
4.6 OpenAI Gymによるリフティング
4.6.1 プログラムの実行
4.6.2 プログラムの説明
1.__init__(self)
2._step(self, action):
3._reset(self):
4._render(self, mode='human', close=False):
4.7 対戦ゲーム
4.7.1 リバーシ
4.7.2 学習方法
1.初期設定
2.ランダム行動の関数
3.ゲームの進め方
4.学習の表示と保存
4.7.3 盤面の変更
4.7.4 リバーシの実体
4.7.5 人間との対戦方法
4.7.6 畳み込みニューラルネットワークの適用
4.8 物理エンジンを用いたシミュレーション
4.8.1 物理エンジン
4.8.2 プログラムの実行
4.8.3 プログラムの説明
4.9 物理エンジンのリフティング問題への適用
1.設定
2.実行
3.表示
4.その他
4.10 物理エンジンの倒立振子問題への適用
1.設定
2.実行
3.表示
4.その他
4.11 ロボットアーム問題への適用
1.設定
2.実行
3.表示
4.12 ほかの学習方法や拡張手法への変更
4.12.1 DoubleDQNへの学習方法の変更
4.12.2 Experience Replay(経験再生)の変更
4.12.3 DDPGへの学習方法の変更
4.12.4 A3C(DDPG)への学習方法の変更
5章 実環境への応用
5.1 カメラで環境を観察する(MNIST)
5.1.1 カメラの設定
5.1.2 カメラ画像を畳み込みニューラルネットワークで分類
1.モデルの読み込み
2.入力画像への変換
3.分類結果の表示
5.1.3 画像サイズが28×28の手書き文字を使って学習する
5.2 RaspberryPiでネズミ学習問題
5.2.1 問題設定
5.2.2 RaspberryPiで実現
5.2.3 環境構築
5.2.4 入出力に注目して簡略化
5.2.5 環境をカメラで観測
5.3 Arduino+パソコンでネズミ学習問題
5.3.1 環境構築
5.3.2 入出力に注目して簡略化
プログラムの説明
5.3.3 環境をカメラで計測
5.4 RaspberryPi+Arduinoでネズミ学習問題
付録
付録1 VirtualBoxのインストール
* 1.コピー&ペースト
* 2.共有フォルダ
付録2 RaspberryPiの設定
* 1.OSのインストール
* 2.プログラムの転送設定
* (1)RasPiの作業
* (2)パソコンの作業
* 3.サーボモータの設定
付録3 Arduinoのインストール
付録4 Graphical Processing Unit(GPU)の利用
* 1.CuPyのインストールまで
* 2.CuPyの使い方
付録5 Intel Math Kernel Libraryを用いたNumPyのインストール
続きを見る