强化学习笔记:DQN和TD算法

释放双眼,带上耳机,听听看~!
本篇文章主要介绍了强化学习中的Deep Q-Network (DQN)和Temporal Difference (TD) Learning算法,以及Action-Value Function的相关内容。文章内容涵盖了DQN的神经网络近似Q函数和TD算法的训练方法,适合对深度强化学习感兴趣的读者阅读。

本文正在参加「金石计划」

导语

本系列笔记为b站Shusen Wang老师的强化学习课程笔记,整体按照老师讲课的思路来记录。本节课主要介绍DQN和利用TD算法来训练DQN。

Action-Value Function回顾

Return UtU_t依赖于从t时刻开始的每一个动作At和状态St,二者都具有随机性。因而UtU_t也具有随机性。

强化学习笔记:DQN和TD算法

我们可以对A和S求积分,可以把他们消掉,只剩下st,ats_t, a_t,得到Qπ(st,at)Q_{pi}(s_t,a_t)

强化学习笔记:DQN和TD算法

进一步,我们可以通过对πpi求最大,可以消掉Policy函数πpi,得到最优的动作价值函数Q⋆Q^{star}。他代表了在当前状态sts_t下不管采用怎样的策略,要使Agent做动作ata_t,那么回报订多就是Q⋆(st,at)Q^{star}(s_t,a_t),不会更好。

强化学习笔记:DQN和TD算法

Q⋆Q^{star}函数与Policy无关,他告诉我们基于当前状态sts_t做出动作ata_t的好坏程度,所以Q⋆Q^{star}函数可以指导Agent做决策。Agent观测到当前的状态sts_t,Q⋆Q^{star}函数可以对所有的动作打分,例如向左是1分,向上是5分,然后Agent可以根据分数来做决策。

Deep Q-Network (DQN)

DQN其实就是用一个神经网络来近似Q函数,Q⋆Q^{star}可以告诉我们选择哪种动作的平均回报。

强化学习笔记:DQN和TD算法

然而,我们肯定无法精确得到Q⋆Q^{star},但是我们可以通过一个神经网络来近似,并将神经网络记作Q(s,a;w)Q(s,a;w)。神经网络的参数是w,其输入是状态s,输出是对每个动作的打分,每个动作对应于一个分数。我们用奖励作为监督信号来训练这个DQN,比如我们让模型玩上万局超级玛丽,这个神经网络就可以很精确的学到Q⋆Q^{star},就可以给出非常精准的预测。

强化学习笔记:DQN和TD算法

对于不同的问题,DQN的结构可能不一样。这里举个例子,假如是玩超级玛丽,那么可以把当前的画面作为状态s经过一个卷积层成为特征向量,最后用几个全连接层把输出映射到输出向量,为对每一个动作的打分。

强化学习笔记:DQN和TD算法

例如,上图的示例中向左是2000分,向上是3000分最大,所以此时应该选择向上。更加规范化的表示如下:

强化学习笔记:DQN和TD算法

TD算法

训练DQN的最常用算法就是Temporal Difference (TD) Learning,即TD算法。

TD算法比较复杂,这里用一个例子先来解释一下。

假设我们想开车从纽约到亚特兰大,有一个模型Q(w)Q(w)可以预测开车出行的时间开销,假设一开始模型给出了估计值为1000分钟,这个值可能是一个随机的数值,但是随着用的人越来越多,可能模型给出的估计就会越来越准确。

但问题是:我们需要什么样的数据,又该如何更新模型?

一个最简单的方法:首先,出发前让模型给出一个预测q,比如q=1000。到了亚特兰大后,发现实际耗时为860,把这个作为target,就得到了损失L,用L去求对w的梯度,

强化学习笔记:DQN和TD算法

有了梯度就可以进行梯度下降,对模型进行更新。这种算法比较朴素,即必须完整的完成一次旅途,才能对模型进行一次更新。这里有个问题:假如我们没有完成整个旅途,到了半路就不走了,那么这种情况下能否更新模型,比如我们路上到了华盛顿就结束旅途,实际上花费了300分钟。

强化学习笔记:DQN和TD算法

这时,模型给出了从华盛顿到亚特兰大的估计是600,那么这时候整体的估计y=300+600=900,是一个更加可信的值。然后可以求梯度,进行梯度下降更新。

强化学习笔记:DQN和TD算法

强化学习笔记:DQN和TD算法

TD算法

强化学习笔记:DQN和TD算法

DQN中应用TD算法

TD算法可以在不完成一次全程旅途的过程中对模型参数进行更新,将它应用到强化学习中也是同样的道理,我们不需要打完一局游戏,就能对DQN模型参数进行更新。

强化学习笔记:DQN和TD算法

要想应用这个算法,那么要有以下的关系,即从纽约到亚特兰大的时间等于从纽约到华盛顿,再从华盛顿到亚特兰大的时间。那在强化学习中,也需要有类似这样的关系,等式的两侧都有一项估计值,而右边需要有一项真实观测值。而在强化学习中,也有这样一个公式,等式左边是DQN在t时刻做的估计,这是未来奖励总和的期望,等式右边有一项rtr_t是真实观测到的奖励。

接下来介绍一下为什么强化学习中存在这个公式,我们来回顾一下Discounted Return,

强化学习笔记:DQN和TD算法

通过将其展开提取γgamma,可以得到下面的等式,即

Ut=Rt+γ⋅Ut+1U_t = R_t + gamma cdot U_{t+1}

接下来需要将TD算法用到DQN上,DQN的输出Q(st,at;w)Q(s_t, a_t; w)是对UtU_t的期望做出的估计。 在下一时刻,DQN的输出Q(st+1,at+1;w)Q(s_{t+1}, a_{t+1}; w)是对Ut+1U_{t+1}的估计。

强化学习笔记:DQN和TD算法

左边是t时刻的预测,右边是rtr_t和t+1时刻的预测。

强化学习笔记:DQN和TD算法

有了这个关系后,在t时刻,模型做出了预测Q(st,at,;wt)Q(s_t, a_t,; w_t),这里的sts_t是当前的状态,ata_t是已经做出的动作,wtw_t是模型当前的参数。

到了t+1时刻,我们观测到了真实的奖励rtr_t,还观测到了新的状态st+1s_{t+1},有了状态st+1s_{t+1},我们就可以用DQN算出下一个动作at+1a_{t+1},在t+1时刻,我们知道了rt,st+1,at+1r_t, s_{t+1}, a_{t+1},我们就可以计算TD target yty_t,他等于奖励rtr_tγgamma乘上DQN在t+1t+1时刻的预测。
而t+1时刻的动作at+1a_{t+1}是通过DQN对每个动作进行打分,然后取得分最大的那个动作得到的。

最终的Loss就是两者差的平方。之后,通过梯度下降就可以更新模型参数。

强化学习笔记:DQN和TD算法

总结

本节课介绍了Value-based Reinforcement Learning,这节课用到了最优动作价值函数Q⋆Q^{star},首先对UtU_t求期望,把除了st,ats_t, a_t之外的变量给去掉,然后再关于策略函数πpi求一个最大化,去掉了πpi

Q⋆Q^{star}函数根据当前状态sts_t对每个动作进行打分,分数代表了每个动作的好坏程度,只要有了Q⋆Q^{star}函数就能使用Q⋆Q^{star}函数控制Agent运动,每一个时刻Agent只需要选出分数最高的动作,执行这个动作就可以了。

然而,我们并没有这样一个Q⋆Q^{star}函数,而价值学习的目标就是为了学习出这样一个Q⋆Q^{star},DQN就是用一个神经网络来近似Q⋆Q^{star}函数,DQN可以记作Q(s,a;w)Q(s,a;w),其参数为w,接收输入为状态ss,其输出是对每一个动作aa的打分,

强化学习笔记:DQN和TD算法

一开始DQN的参数都是随机的,Agent会根据DQN的指导不断的尝试,强化学习就是根据奖励来更新模型参数让模型越来越好,这节课讲了用TD算法来更新模型参数,该算法是学习DQN最常用的算法。TD算法不断重复这个过程:

  1. 首先,观测到当前的状态sts_t和已经执行的动作ata_t;
  2. 用DQN做一次计算,输入是状态sts_t,输出是对每个动作aa的打分,把输出记作qtq_t;
  3. 用反向传播对DQN进行求导,得到梯度dtd_t
  4. 由于Agent已经执行了动作ata_t,环境会给出新的状态st+1s_{t+1}和奖励rtr_t;
  5. 有了st+1s_{t+1}rtr_t后,就可以根据这个公式得出TD target为yty_t;
  6. 最后,做一次梯度下降更新模型的参数w

这样,就完成了一次TD算法的迭代。
强化学习笔记:DQN和TD算法

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

词的分布式表示在自然语言处理中的应用

2023-12-15 13:17:14

AI教程

BP神经网络中为什么常用ReLU激活函数

2023-12-15 13:35:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索