价值学习 --- DQN 、TD 、Q-learning 、SARSA

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值。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值