ゼロから作るDeep Learning ❹

―強化学習編

[cover photo]
TOPICS
Data Science , Python
発行年月日
PRINT LENGTH
376
ISBN
978-4-87311-975-5
FORMAT
Print PDF EPUB
Ebook
3,960円
Ebookを購入する
Print
3,960円

人気シリーズの第4弾。今回のテーマは強化学習です。実際のコードを提示し動かしながら学ぶという本シリーズのスタイルを踏襲し、外部ライブラリに頼らず、強化学習を支える基本的な技術やアイデアをゼロから実装しながら学びます。本書では読者が強化学習独特の理論を確実にマスターできるように、強化学習という難解なテーマの構成要素の一つひとつを「理論」と「実践」の双方から丁寧に解説します。数式だけで説明する理論書とは異なり、読者はコードを通してハッとする気づきを数多く得られるでしょう。

関連ファイル

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

正誤表

目次

まえがき

1章 バンディット問題
    1.1 機械学習の分類と強化学習
        1.1.1 教師あり学習
        1.1.2 教師なし学習
        1.1.3 強化学習
    1.2 バンディット問題
        1.2.1 バンディット問題とは
        1.2.2 良いスロットマシンとは
        1.2.3 数式を使って表す
    1.3 バンディットアルゴリズム
        1.3.1 価値の推定方法
        1.3.2 平均値を求める実装
        1.3.3 プレイヤーの戦略
    1.4 バンディットアルゴリズムの実装
        1.4.1 スロットマシンの実装
        1.4.2 エージェントの実装
        1.4.3 動かしてみる
        1.4.4 アルゴリズムの平均的な性質
    1.5 非定常問題
        1.5.1 非定常問題を解くために
        1.5.2 非定常問題を解く
    1.6 まとめ

2章 マルコフ決定過程
    2.1 MDPとは
        2.1.1 MDPの具体例
        2.1.2 エージェントと環境のやりとり
    2.2 環境とエージェントの定式化
        2.2.1 状態遷移
        2.2.2 報酬関数
        2.2.3 エージェントの方策
    2.3 MDPの目標
        2.3.1 エピソードタスクと連続タスク
        2.3.2 収益
        2.3.3 状態価値関数
        2.3.4 最適方策と最適価値関数
    2.4 MDPの例
        2.4.1 バックアップ線図
        2.4.2 最適方策を見つける
    2.5 まとめ

3章 ベルマン方程式
    3.1 ベルマン方程式の導出
        3.1.1 確率と期待値(ベルマン方程式のための下準備)
        3.1.2 ベルマン方程式の導出
    3.2 ベルマン方程式の例
        3.2.1 2マスのグリッドワールド
        3.2.2 ベルマン方程式の意義
    3.3 行動価値関数とベルマン方程式
        3.3.1 行動価値関数
        3.3.2 行動価値関数を使ったベルマン方程式
    3.4 ベルマン最適方程式
        3.4.1 状態価値関数におけるベルマン最適方程式
        3.4.2 Q関数におけるベルマン最適方程式
    3.5 ベルマン最適方程式の例
        3.5.1 ベルマン最適方程式の適用
        3.5.2 最適方策を得る
    3.6 まとめ

4章 動的計画法
    4.1 動的計画法と方策評価
        4.1.1 動的計画法の概要
        4.1.2 反復方策評価を試す
        4.1.3 反復方策評価の別の実装方法
    4.2 より大きな問題へ
        4.2.1 GridWorldクラスの実装
        4.2.2 defaultdictの使い方
        4.2.3 反復方策評価の実装
    4.3 方策反復法
        4.3.1 方策の改善
        4.3.2 評価と改善を繰り返す
    4.4 方策反復法の実装
        4.4.1 方策の改善
        4.4.2 評価と改善を繰り返す
    4.5 価値反復法
        4.5.1 価値反復法の導出
        4.5.2 価値反復法の実装
    4.6 まとめ

5章 モンテカルロ法
    5.1 モンテカルロ法の基礎
        5.1.1 サイコロの目の和
        5.1.2 分布モデルとサンプルモデル
        5.1.3 モンテカルロ法の実装
    5.2 モンテカルロ法による方策評価
        5.2.1 価値関数をモンテカルロ法で求める
        5.2.2 すべての状態の価値関数を求める
        5.2.3 モンテカルロ法の効率の良い実装
    5.3 モンテカルロ法の実装
        5.3.1 stepメソッド
        5.3.2 エージェントクラスの実装
        5.3.3 モンテカルロ法を動かす
    5.4 モンテカルロ法による方策制御
        5.4.1 評価と改善
        5.4.2 モンテカルロ法を使った方策制御の実装
        5.4.3 ε-greedy法(1つ目の修正)
        5.4.4 固定値α方式へ(2つ目の修正)
        5.4.5 [修正版]モンテカルロ法を使った方策反復法の実装
    5.5 方策オフ型と重点サンプリング
        5.5.1 方策オン型とオフ型
        5.5.2 重点サンプリング
        5.5.3 分散を小さくするには
    5.6 まとめ

6章 TD法
    6.1 TD法による方策評価
        6.1.1 TD法の導出
        6.1.2 MC法とTD法の比較
        6.1.3 TD法の実装
    6.2 SARSA
        6.2.1 方策オン型のSARSA
        6.2.2 SARSAの実装
    6.3 方策オフ型のSARSA
        6.3.1 方策オフ型と重点サンプリング
        6.3.2 方策オフ型のSARSAの実装
    6.4 Q学習
        6.4.1 ベルマン方程式とSARSA
        6.4.2 ベルマン最適方程式とQ学習
        6.4.3 Q学習の実装
    6.5 分布モデルとサンプルモデル
        6.5.1 分布モデルとサンプルモデル
        6.5.2 サンプルモデル版のQ学習
    6.6 まとめ

7章 ニューラルネットワークとQ学習
    7.1 DeZeroの基礎
        7.1.1 DeZeroを使う
        7.1.2 多次元配列(テンソル)と関数
        7.1.3 最適化
    7.2 線形回帰
        7.2.1 トイ・データセット
        7.2.2 線形回帰の理論
        7.2.3 線形回帰の実装
    7.3 ニューラルネットワーク
        7.3.1 非線形なデータセット
        7.3.2 線形変換と活性化関数
        7.3.3 ニューラルネットワークの実装
        7.3.4 レイヤとモデル
        7.3.5 オプティマイザ(最適化手法)
    7.4 Q学習とニューラルネットワーク
        7.4.1 ニューラルネットワークの前処理
        7.4.2 Q関数を表すニューラルネットワーク
        7.4.3 ニューラルネットワークとQ学習
    7.5 まとめ

8章 DQN
    8.1 OpenAI Gym
        8.1.1 OpenAI Gymの基礎知識
        8.1.2 ランダムなエージェント
    8.2 DQNのコア技術
        8.2.1 経験再生(Experience Replay)
        8.2.2 経験再生の実装
        8.2.3 ターゲットネットワーク(Target Network)
        8.2.4 ターゲットネットワークの実装
        8.2.5 DQNを動かす
    8.3 DQNとAtari
        8.3.1 Atariのゲーム環境
        8.3.2 前処理
        8.3.3 CNN
        8.3.4 その他の工夫
    8.4 DQNの拡張
        8.4.1 Double DQN
        8.4.2 優先度付き経験再生
        8.4.3 Dueling DQN
    8.5 まとめ

9章 方策勾配法
    9.1 最も単純な方策勾配法
        9.1.1 方策勾配法の導出
        9.1.2 方策勾配法のアルゴリズム
        9.1.3 方策勾配法の実装
    9.2 REINFORCE
        9.2.1 REINFORCEアルゴリズム
        9.2.2 REINFORCEの実装
    9.3 ベースライン
        9.3.1 ベースラインのアイデア
        9.3.2 ベースライン付きの方策勾配法
    9.4 Actor-Critic
        9.4.1 Actor-Criticの導出
        9.4.2 Actor-Criticの実装
    9.5 方策ベースの手法の利点
    9.6 まとめ

10章 さらに先へ
    10.1 深層強化学習アルゴリズムの分類
    10.2 方策勾配法系列の発展アルゴリズム
        10.2.1 A3C、A2C
        10.2.2 DDPG
        10.2.3 TRPO、PPO
    10.3 DQN系列の発展アルゴリズム
        10.3.1 カテゴリカルDQN
        10.3.2 Noisy Network
        10.3.3 Rainbow
        10.3.4 Rainbow以降の発展アルゴリズム
    10.4 ケーススタディ
        10.4.1 ボードゲーム
        10.4.2 ロボット制御
        10.4.3 NAS(Neural Architecture Search)
        10.4.4 その他の例
    10.5 深層強化学習の課題と可能性
        10.5.1 実システムへの適用
        10.5.2 MDPとして定式化する際のヒント
        10.5.3 汎用人工知能システム
    10.6 まとめ

付録A 方策オフ型のモンテカルロ法
    A.1 方策オフ型のモンテカルロ法の理論
    A.2 方策オフ型のモンテカルロ法の実装

付録B nステップのTD法

付録C Double DQNの理解
    C.1 過大評価とは
    C.2 過大評価の解決方法

付録D 方策勾配法の証明
    D.1 方策勾配法の導出
    D.2 ベースラインの導出

おわりに
参考文献
索引