# YutaroOgawa-Deep-Reinforcement-Learning-Book **Repository Path**: guodingming/yutaro-ogawa-deep-reinforcement-learning-book ## Basic Information - **Project Name**: YutaroOgawa-Deep-Reinforcement-Learning-Book - **Description**: 《边做边学深度强化学习:PyTorch程序设计实践》 作者:[日] 小川雄太郎 ISBN:9787111650140 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2023-02-04 - **Last Updated**: 2023-02-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README >边做边学深度强化学习:PyTorch程序设计实践
作者:[日] 小川雄太郎
ISBN:9787111650140
作者的GitHub:https://github.com/YutaroOgawa/Deep-Reinforcement-Learning-Book.git ## 前两章介绍 第一章主要内容是强化学习概述: + 机器学习的分类(监督学习、非监督学习、`强化学习`) + 强化学习、深度强化学习的历史 + 深度强化学习的一些应用实例 第二章主要使用走迷宫任务介绍一些基本的强化学习方法。 ### 2.2.1 对应原书第 2.2~2.4 部分内容 + 详细介绍了迷宫任务,状态、动作、策略等 + 随机生成策略求解迷宫路径并可视化路径 + 使用 `softmax` 函数演示了`策略梯度法`求得策略并可视化路径 + `softmax` 函数如下: $$ P(\theta_i) = \frac{exp(\beta\theta_i)}{\sum_{j=1}^{N_a}exp(\beta\theta_j)} $$ + `策略梯度法所`用更新公式如下: $$ new~\theta_{s_i,a_j} = old~\theta_{s_i,a_j} + \eta\cdot\Delta\theta_{s,a_j} $$ $$ \Delta\theta_{s,a_j}=\{N(s_i,a_j)-P(s_i,a_j)N(s_i,a)\}/T $$ ### 2.5 对应第 2.5 部分内容 + 用 $\epsilon$-贪婪法实现了一种 Sarsa 算法 + Sarsa 算法是一种`价值迭代算法` + 介绍了`贝尔曼方程`如下: $$ Q(s_t,a_t) = R_{t+1}+\gamma Q(S_{t+1},a_{t+1}) $$ + Sarsa 算法更新公式如下: $$ Q(s_t,a_t) = Q(s_t,a_t)+\eta*TD \\ TD = R_{t+1}+\gamma Q(s_{t+1},a_{t+1})-Q(s_t,a_t) $$ ### 2.6 对应第 2.6 部分内容 + 使用 Q学习法(Qlearning),与 Sarsa 不同 + Qlearning 更新公式对比如下: $$ \text{QLearning: } Q(s_t,a_t)=Q(s_t,a_t) + \eta * (R_{t+1}+\gamma \max_a Q(s_{t+1},a) - Q(s_t,a_t)) \\ \text{Sara: } Q(s_t,a_t)=Q(s_t,a_t) + \eta * (R_{t+1}+\gamma Q(s_{t+1},a_{t+1}) - Q(s_t,a_t)) $$ + Sarsa 更新时需要求取下一步动作 $a_{t+1}$,这样的特征称为 `策略依赖型(ON)`特征 + QLearning 使用在状态 $s_{t+1}$ 下动作的最大价值进行更新,`策略关闭型(OFF)` ## 第三章 主要使用复杂一些的倒立摆任务 详细内容见笔记 书中使用的一些包版本较低:gym==0.9.7,pyglet==1.2.4 经测试(2020年8月24日),最新版gym==0.17.2,以及较高版本pyglet==1.5.0可用。 原书中可视化的代码已做修改。 ## 第四章 简要介绍了使用 `PyTorch` 实现深度学习 1. 简述了神经网络和深度学习的历史 2. 深度学习的计算方法 3. 使用 `PyTorch` 实现 `MNIST` 手写数字分类任务 书中为了完整展示深度学习的过程,使用了 `scikit-learn`,但库版本较低 ```python # 使用了新版本,所以 from sklearn.datasets import fetch_mldata # 改为了 from sklearn.datasets import fetch_openml ``` 实际上,该部分展示的是监督学习。 ## 第五章 介绍 DQN,Q学习与深度学习的结合,使用深度学习的神经网络替代 Q 表格(本章是 2013 版的 DQN) ## 第六章 深度强化学习的改进版 + 6.1 介绍了深度强化学习算法的发展 + 6.2 介绍了DDQN + 2015 Nature 版 DQN 采用了`目标 Q 网络` 以训练 `主 Q 网络`: $$ Q_m(s_t, a_t)=Q_m(s_t,a_t) + \eta*(R_{t+1}+\gamma\max_a{Q_t(s_{t+1}, a)}-Q_m(s_t,a_t)) $$ + DDQN 中使用: $$ a_m = \arg \max_a Q_m(s_{t+1},a) \\ Q_m(s_t, a_t)=Q_m(s_t,a_t) + \eta*(R_{t+1}+\gamma Q_t(s_{t+1}, a_m)-Q_m(s_t,a_t)) $$