插话阅读知乎文章笔记
文章地址:
DQN 从入门到放弃1 DQN与增强学习
DQN 从入门到放弃2 增强学习与MDP
DQN 从入门到放弃3 价值函数与Bellman方程
DQN 从入门到放弃4 动态规划与Q-Learning
DQN从入门到放弃5 深度解读DQN算法
DQN从入门到放弃6 DQN的各种改进
DQN从入门到放弃7 连续控制DQN算法-NAF
在增强学习的世界,我们相信如果输入是确定的,那么输出也一定是确定的。试想一下,有一个机械臂在练习掷筛子,以掷出6点作为目标。但是如果无论机械臂如何调整其关节的角度及扭矩,掷出的点数永远是随机的,那么无论如何也不可能通过算法使机械臂达成目标。因此,增强学习算法要有用,就是相信在增强学习中每一次参数的调整都会对世界造成确定性的影响。
未完待续…哎开学了静下心学习的机会不多了呀~
神经网络方法求解RL
为什么引入神经网络
前面学习了Q表格求解RL,但是Q表格毕竟是动作种类和状态种类数量较少的情况,像如果用强化学习来训练小人走路那么关节动作的角度是无穷个状态的情况,这个时候就不能用Q表格来解决问题,需要使用值函数来做逼近处理。
Q表格缺点 | 值函数近似的优点 |
---|---|
表格可能占用极大的内存 | 仅需存储有限的参数 |
当表格较大时,查表效率低 | 状态泛化,相似的状态可以输出一样 |
DQN:使用神经网络求解RL问题的算法
本质:Q-learning
DQN算法两大创新点:
经验回放 | 固定Q目标 |
---|---|
解决序列决策的样本关联问题 | 解决算法非平稳问题 |
解决样本利用率低的问题 |
解决序列决策的样本关联问题:
对于正常的监督学习的训练网络,样本之间是没有互相联系的关系的。但是强化学习是一个序列决策的问题,状态之间是相互连续的,因此需要打破数据间的关系。DQN利用off-policy的特点先存储了一批数据,然后打乱顺序从中选取一个小的batch的数据来更新网络这种方式既可以打乱数据间的相关性又可以使神经网络更有效率。
解决算法非平稳问题:
对于监督学习,输入x目的是让输出的y去逼近真实的y,这个真实值是固定的稳定的。但是强化学习的真实y是不定的,DQN让Q_target固定住然后定期拷贝神经网络的同步参数。—没咋听懂,核心应该是固定住Q目标
经验回放源码:
DQN代码实现
model.py:
algorithm.py
def sync_target(self):
self.model.sync_weights_to(self.target_model)
def predict(self,obs):
return self.model.value(obs)
- 首先拿到model.py里面传过来的模型
- 将该模型复制一份给target_model
- 使用sync_target函数将model的参数同步到target_model网络
- 使用predict函数返回网络输出值
。。。。。。有点看不明白了,先看实践
单摆游戏
运行:PARL\examples\tutorials\lesson3\dqn\train.py文件即可
代码分析
文件目录: