1.什么是DQN?
DQN: 是深度 Q 网络 deep Q network(仅适用于连续状态的离散动作情况)
作用:逼近最优动作价值函数Q⋆
记作 Q(s, a; w),w 表 示神经网络中的参数。
学习的目标是:对 于所有的 s 和 a,DQN 的预测 Q(s, a; w) 尽量接近 Q⋆(s, a)。
DQN 的输出是离散动作空间 A 上的每个 动作的 Q 值,即给每个动作的评分,分数越高意味着动作越好。
DQN 的输出是 |A| 维的向量 ,包含所有动作的价值。
DQN 的梯度:梯度的形状与 w 完全相同
eg:给定观测值 s 和 a,比如 a = “左”,可以用反向传播计算出梯度 。
2.时序差分算法:让预测值逐步逼近实际观测值
训练 DQN 最常用的算法是时间差分(temporal difference,缩写 TD)。
举例说明:
假设北京驾车去上海,途径济南。出发前模型估计全程时间为 = 14 小时,从北京出发,过了 r = 4.5 小时,我到达济南。此时我再让模型做一次 预测,模型告诉我:
因此,到达济南时,根据模型最新估计,整个旅程的总时间为:
TD 算法将 = 15.5 称为 TD 目标(TD target),比
= 14更可靠,带有部分实际信息。
希望估计值尽量接近 TD 目标
,所以用 两者差的平方作为损失函数:
此处把看做常数,尽管它依赖于 w,1计算损失函数的梯度:
计算损失函数的梯度时,其实是 w 的函数,但TD 算法忽视这一点,将其视为常数。
TD target:带有事实成分的估计值,模型不断逼近的目标。
TD error:模型上一时刻估计值 - (部分真实值 + 模型下一时刻估计值)
注:上一时刻估计值、下一时刻估计值使用的为同一模型,进行梯度更新后,模型才会改变。
梯度下降:最小化损失函数
梯度上升:最大化似然函数
损失函数:衡量模型预测结果与实际值的差异。常用于有标签参照的数据集,MAE,交叉熵...
似然函数:衡量给定观测数据时,模型参数的合理程度。常用于无标签参照的数据集,对数似然...
3.如何用TD训练DQN
TD是算法,DQN是网络。算法≠网络
最优贝尔曼方程:
当我们观测到 st、at、st+1 时,则奖励 Rt 也被观测到,记作 rt,则可以计算出:
它可以看做是下面这项期望的蒙特卡洛近似:
结合最优贝尔曼方程可得:
将最优动作价值函数 Q⋆(s, a) 替换成神经网络 Q(s, a; w)可得:
左边:是神经网络在 t 时刻做出的预测,其中没有任何事实成分。
右边:基于真实观测到的奖励 rt,更可信。
两边使用的是同一模型进行预测
希望 一直逼近Q(st, at; w),定义损失函数:
做一步梯度下降,让 一直逼近Q(st, at; w):
此公式就是训练 DQN 的 TD 算法。
训练流程:
注:
1.算法所需数据为四元组 (st, at, rt, st+1),与控制智能体运动的策略 π 无关。可以用任何策略控制智能体与环境交互,同时记录下算法运动轨迹,作为训练数据。因此,DQN 的训练可以分割成两个独立的部分:收集训练数据、更新参数 w。
2.智能体收集数据、更新 DQN 参数这两者可以同时进行。可以在智能体每执行一个动作之 后,对 w 做几次更新。也可以在每完成一局游戏之后,对 w 做几次更新。
Actor 、learner(目标网络) 初始模型参数一致。但更新频率不一致。
4.Q 学习算法
TD 算法叫做 Q 学习算法 (Q-learning)。TD 算法是一大类算法,常见的有 Q 学习和 SARSA。
Q 学习的目的是学到最 优动作价值函数 Q⋆,而 SARSA 的目的是学习动作价值函数 Qπ。
表格法(维护表格,更新Q值):
Q-learning可使用任意策略收集的经验进行训练。
5.同策略 (On-policy) 与异策略 (Off-policy)
行为策略:控制智能体与环境交互,从而收集经验(即观测的状态、动作、奖励)的策略。
目标策略:强化学习的目的是得到一个策略函数,用这个策略函数来控制智能体。
同策略:用相同的行为策略和目标 策略。(在线,变交互变训练)
异策略:用不同的行为策略和目标策略。(离线,可交互完在训练)
DQN 是异策略,行为策略可以不同于目标策略,可以用任意的行为策略收集经 验,比如最常用的行为策略是 ϵ-greedy:
让行为策略带有随机性的好处在于能探索更多没见过的状态。(增强探索)
在实验中,初始的时候让 ϵ 比较大(比如 ϵ = 0.5);在训练的过程中,让 ϵ 逐渐衰减,在几十万步之后衰减到较小 的值(比如 ϵ = 0.01),此后固定住 ϵ = 0.01。(前期加大探索,后期加大利用)
异策略的好处是可以用行为策略收集经验,把 (st, at, rt, st+1) 这样的四元组记录到 一个数组里,在事后反复利用这些经验去更新目标策略。
这个数组被称作经验回放数组 (replay buffer),这种训练方式被称作经验回放(experience replay)。注意,经验回放只 适用于异策略,不适用于同策略,其原因是收集经验时用的行为策略不同于想要训练出 的目标策略。
总结:
1.DQN 是对最优动作价值函数 Q⋆ 的近似。DQN 的输入是当前状态 st,输出是每个 动作的 Q 值。DQN 要求动作空间 A 是离散集合,集合中的元素数量有限。如果动 作空间 A 的大小是 k,那么 DQN 的输出就是 k 维向量。DQN 可以用于做决策,智 能体执行 Q 值最大的动作。
2.TD 算法的目的在于让预测更接近实际观测。
3.Q 学习算法是 TD 算法的一种,可以用于训练 DQN。Q 学习算法由最优贝尔曼方程 推导出。Q 学习算法属于异策略,允许使用经验回放。由任意行为策略收集经验, 存入经验回放数组。事后做经验回放,用 TD 算法更新 DQN 参数。
4.异策略的好处在于允许做经验回放,反复利用过去收集的经验。但 这不意味着异策略一定优于同策略。
6 SARSA
SARSA 是 State-Action-Reward-State-Action 的缩写,原因是 SARSA 算法用到了这个五元组:
首先,给定当前状态 st,智 能体执行动作 at,环境会给出奖励 rt 和新的状态 st+1。然后基于 st+1 做随机抽样(此处依赖策略π), 得到新的动作
用观测到的 rt、st+1 和计算出的 对期望做蒙特卡洛近似,得到:
进一步得到 TD 目标:
更新表格值:
Q-learning与SARAS的不同之处:
1. Q-learning不依赖于 π,因此 Q-learning属于异策略(off-policy), 可以用经验回放。而 SARSA 依赖于 π,因此 SARSA 属于同策略(on-policy)。
2.SARSA 算法的目标是学到表格 q,作为动作价值函数 Qπ 的近似。Qπ 与一个策略 π相对应,用不同的策略 π,对应 Qπ 就会不同。策略 π 越好,Qπ 的值越大。经验回放数 组里的经验 (sj , aj , rj , sj+1) 是过时的行为策略 πold 收集到的,与当前策略 πnow 及其对 应的价值 Qπnow 对应不上。想要学习 Qπ 的话,必须要用与当前策略 πnow 收集到的经验, 而不能用过时的 πold 收集到的经验。这就是为什么 SARSA 不能用经验回放的原因。
3.Q-learning的是根据
估计最大的
,动作a不是抽取出来的,是模型估计的。 SARSA 的
是根据
由策略π抽取动作at+1,然后模型根据st+1,at+1估计Q值。