强化学习:DQN的理解

分类目录——强化学习

还是根据Q(s, a)值来进行动作判断的一种机制

image-20191229153052489

传统的Q-Learning强化学习会生成一个状态动作的组合表,通过一轮轮的迭代使这个表格收敛。

**问题:**现实中的活动往往状态空间很大,比如下围棋,理论上Q表的矩阵要达到(19**2)*(19**2)的规模,存储这么一个表格是一个问题,学习并让这个表格收敛更是一个大问题。

——如果能有一个公式能通过输入当前的状态和动作参量,输出他们对应的Q值就好了

欸,(深度学习)神经网络就很适合干这种无规则(人主观看起来无规则)的数据之间的映射

以下是两种可能的网络类型

类型1

类型1

类型1_

类型二(在DQN及其变体中的Q网络基于此类型)

类型2

类型2_

问题:能够进行深度学习是建立在学习数据相互独立的基础之上的,但是在强化学习中,连贯的动作前后往往存在着极强的相关性,这阻碍了深度学习的应用。

——打破学习数据之间的相关性,每次从所有的(s,a)集合中随机取一小份数据,(这就是 经验重放 机制)学习一下/更新一下参数/向着收敛前进一步。而这种操作是离线学习(off-policy)的操作,我认为这也是为什么Deep能和Q-Learning凑到一块的原因。(在线学习(on-policy)是不行的,在线学习是聚焦在一个回合内的。如果用在线学习就是没每进一步就学习一下,这样的数据是强相关的,神经网络是极难收敛的)

问题:我们知道神经网络是想着minimize(error),即向着误差最小化的方向学习收敛的。神经网络的误差通过(预测值-真实值)来构造,但强化学习是不需要标定好的数据的,也就是没有 真实值 这个概念。通过生成Q值的网络,可以得到一个 q_估计,少一个 q_现实 来构造 error=q_估计-q_现实(形象化理解,不符合公式)

在Q-Learning中我们知道,Q_现实=Q_现实

我在看机器学习的时候get到一种理念,就是,什么都是可以学习的。再搞一个网络来生成q_现实,有一个情况就是,q_估计和q_现实是在同一个环境下的同样性质的值。DQN的提出者给出的方案就是构造两个结构相同的网络用来分别生成q_估计和q_现实,如何来区别两者以生成两种q值呢——通过给q_现实的网络延迟参数的更新。最后来捋一捋

q_估计网络:实时跟进的网络,

q_现实网络:延迟更新的网络,

对上面问题下的 q_现实 的重新理解

为了便于理解,我在上面用了 q_现实 这个概念,而实际上

image-20191229172447280

image-20191228094733306

  • DQN的延迟更新——冻结参数机制

至少在莫大大的实践和另外的论文中得到了证实,延迟更新 是学习n次,Q估计网络 就吧最新的参数更新到 Q现实网络,并不是Q估计的参数于Q现实的参数时刻保持着n步的差异。

  • 参考文献

    什么是 DQN

  • 相关文献

    分类目录——强化学习(更新中)

    什么是gym

    gym自定义可视化环境绘制

    gym自定义可视化环境实例

    强化学习调用gym环境实例

    从Q_Learning看强化学习

    一个Q_Learning强化学习自定义gym环境可视化实例

    tkinter绘制强化学习可视化环境

    Pytorch实现DQN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章