DQN简介

DQN可以视为Q-learning的进阶版,DQN与Q-learning十分相似,DQN解决了Q-learning解决不了的问题。

一、DQN解决的问题

Q-learning的核心在于Q表格,通过建立Q表格来为行动提供指引,但这适用于状态和动作空间是离散且维数不高时,当状态和动作空间是高维连续时Q表格将变得十分巨大,对于维护Q表格和查找都是不现实的。设想一下如果AlphaGo使用Q-learning将会是什么样的场景,围棋的可能性量级为10^170,如此巨大的Q表格已经丧失了的它的价值。
Q表格无法解决,人们开始尝试使用函数来拟合,拟合一个函数来输出Q值,一般为输入一个状态,给出不同动作的Q值。深度学习在复杂特征提取效果良好,将Rl与DL结合变得到了DQN。
这将带来两个好处:
1.只需要存储DL的网络结构与参数
2.相近的的输入会得到相近的输出,泛化能力更强

二、DQN面临的问题

DQN≈Q-learning+神经网络,如果只是简单的结合将会带来两个问题
1.神经网络的样本之间相互独立,互不关联,而强化学习输入的状态是相互关联的
2.引入非线性函数,使用神经网络来近似Q表格,训练结果可能不收敛

三、DQN的两大改进

1.experience replay 经验池

DQN引入了经验池,DQN利用到了Q-learning是off-policy的特性,behavior-policy在探索或行动获取经验后会将经存储到经验池中,一条经验可以由(s,a,r,s’)来表示。target-policy随机从经验池中抽取一条经验来更新网络,这将带来两个好处:
1、随机抽取,可以切断经验的相关性
2、每一条经验可以重复学习多次,提高了经验的利用率
流程如下:

s,a,r,s'
随机抽取一条经验
behavior-policy
经验池
target-policy

2.固定Q-target

DQN中会有两个结构完全相同但是参数却不同的网络,一个用于预测Q估计(MainNet),一个用于预测Q现实(target),MainNet使用最新的参数,target会使用很久之前的参数,Q现实的targetQ计算为:
t a r g e t Q = r + γ ∗ Q m a x ( s ′ , a ′ , θ ) targetQ=r+γ*Qmax(s',a',θ) targetQ=r+γQmax(s,a,θ
根据targetQ与Q估计得到损失,损失函数一般采用均方误差损失

L O S S ( θ ) = E [ ( T a r g e t Q − Q ( s , a ; θ ) ) 2 ] LOSS(θ)=E[(TargetQ−Q(s,a;θ))^2] LOSS(θ)=E[(TargetQQ(s,a;θ))2]
过程描述:初始化MainNet和target,根据损失函数从而更新MainNet参数,而target则固定不变,在经过多次迭代之后,将MainNet的参数全部复制给target网络,并一直如此循环迭代。这样一段时间内的targetQ是固定不变的,从而使得算法更新更加稳定

四、DQN算法

DQN简介_第1张图片

你可能感兴趣的:(深度学习,神经网络,强化学习)