王树森 强化学习RL
创始人
2025-05-28 17:29:20
0

王树森关于强化学习的视频课程讲的非常好,这篇文章算是我对课程的一份笔记,便于之后回顾。

视频时长有限,难免其中有些点没有讲透彻,或者前后知识点的关联没有说明。因此这份笔记并不是完全照搬原视频的章节顺序和内容,而是根据自己的理解做了调整,容易和重复的部分我会精简,困难和含糊的地方会多做解释,并会结合其它课程和资料进行补充。

文章目录

    • 基本概念
    • 价值学习(Value-Based)
      • DQN原理
      • Temporal Difference (TD)算法
      • DQN+TD算法
    • 策略学习(Policy-Based)
      • 策略学习原理
      • Polocy Gradient
      • 策略学习总结
    • Actor-Critic
    • Sarsa vs Q-Learning
    • 价值学习技巧
      • Multi-Step TD Target
      • Experience Replay
      • Prioritized Experience Replay
      • Target Network & Double DQN
      • Dueling Network
    • 策略学习技巧
      • Baseline
      • REINFORCE with Baseline
      • Advantage Actor-Critic (A2C)
      • REINFORCE vs A2C
    • 连续控制问题
      • Discrete vs Continuous Control
      • Deterministic Policy Gradient (DPG)
      • Stochastic Policy for Continuous Control

基本概念

强化学习中的概念很多,之后所有的数学推导都是基于这些概念的,一开始一定要区分清楚。
环境、状态、动作这些最基础的定义就不赘述了。
在这里插入图片描述
折扣回报UtU_tUt​依赖于未来的每一个动作和状态,所以它的随机性来源于策略函数π\piπ和状态转移函数ppp。
在这里插入图片描述
动作价值函数QπQ_\piQπ​,是UtU_tUt​的期望,相当于未来所有状态和动作的随机性都被消除了,QπQ_\piQπ​只依赖于当前状态sts_tst​和动作ata_tat​,且与策略函数π\piπ有关。
QπQ_\piQπ​的含义为:给定策略函数π\piπ,QπQ_\piQπ​能给状态sts_tst​下所有动作打分。
在这里插入图片描述
如果将QπQ_\piQπ​关于π\piπ求最大化,可以进一步消除π\piπ,即在所有可能的策略函数π\piπ中,选择最好的也就是使QπQ_\piQπ​最大的那个π\piπ,这样就得到了最优价值函数Q∗Q^*Q∗。
Q∗Q^*Q∗与π\piπ无关,它可以给状态sts_tst​下所有动作打分,所以Q∗Q^*Q∗可以指导Agent的决策。
在这里插入图片描述
如果将QπQ_\piQπ​对随机变量AAA求期望,就得到了状态价值函数VVV。
VπV_\piVπ​和动作AAA无关,给定策略函数π\piπ,VπV_\piVπ​可以用来评价状态sts_tst​的好坏,即为当前局势打分。

动作AAA的概率密度函数是π\piπ,如果AAA是离散变量,这个期望就是求连加,如果AAA是连续变量,就是求积分。连续动作空间的强化学习是另一个方向,在最后几节会提到,在那之前我们都默认动作是离散的。

在这里插入图片描述
VπV_\piVπ​再对SSS求期望,可以消除状态的影响,评价策略函数π\piπ的好坏。
在这里插入图片描述
强化学习的任务就是学习策略函数π\piπ或者最优价值函数Q∗Q^*Q∗,如果有π\piπ函数,那么就可以通过随机采样选取动作。如果有Q∗Q^*Q∗函数,那就选择价值最大的那个动作,这两者都可以指导Agent运动。
前者叫做策略学习(Policy-Based),后者叫做价值学习(Value-Based)。
在这里插入图片描述

价值学习(Value-Based)

DQN原理

DQN是一种价值学习方法,用一个神经网络来近似Q∗Q^*Q∗函数,目标是获得最多的回报,WWW是神经网络的参数。
在这里插入图片描述
对超级玛丽游戏,DQN的网络结构可以如下图,输入状态sts_tst​,输出各个动作的价值,选择最大价值的动作。
这里需要注意一下,下面两个图讲的是DQN的使用流程,在训练时并不是一直选择最大价值的动作,而是需要随机探索不同动作的。
在这里插入图片描述
重复以下步骤就可以玩游戏了
在这里插入图片描述

Temporal Difference (TD)算法

训练DQN,或者说学习Q∗Q^*Q∗最常用的是TD(时序差分)算法,下面用一个例子来帮助理解TD算法。

假设要从NYC去Atlanta,模型QQQ预测需要花费1000分钟,而我们走完这段路,发现实际用了860分钟,那么则很容易就可以定义损失LOSS,用梯度下降法更新模型QQQ的参数。
在这里插入图片描述
可如果我们只走了一段路程,还没有到达终点,那么模型能不能只根据我们已经走了的这段路程进行学习呢?答案是可以的,这就是TD算法解决的问题。
例如我们走到途中的一站DC时,实际花费了300分钟,而模型估计到达Atlanta还需要600分钟,那么原来估计的1000分钟就被更新为900分钟,这个900就被称为TD target,它比1000分钟更可靠,因为其中包含了一部分真实观测值300。所以可以把TD target作为目标去更新模型原来的估计1000,1000和900的差值就称为TD error

在这里插入图片描述
在这里插入图片描述

也可以这样理解TD算法,模型估计NYC到DC的时间其实是1000-600=400,而实际观测时间是300,我们自然可以更新这一段估计。
在这里插入图片描述

DQN+TD算法

根据折扣回报的定义,可得到以下式子:
在这里插入图片描述
等式两边做期望,对UtU_tUt​的期望用神经网络QQQ的输出来近似,对RtR_tRt​的期望用当前时刻奖励rtr_trt​来近似。
在这里插入图片描述
对照TD算法,式子左侧就是模型在ttt时刻的估计,式子右侧是模型在得到真实奖励rtr_trt​后,在t+1t+1t+1时刻的估计,也就是TD target。
在这里插入图片描述
这样就可以用TD算法来更新模型参数了,那么这里t+1t+1t+1时刻的动作at+1a_{t+1}at+1​是怎么选的呢?其实就是QQQ函数对动作aaa求最大化,选择让QQQ函数输出最大的那个动作。
在这里插入图片描述
DQN使用TD算法训练步骤:
在这里插入图片描述

策略学习(Policy-Based)

策略学习原理

策略学习就是想办法近似策略函数π\piπ。
在这里插入图片描述
如果状态是有限的,我们可以列一个表直接学习π\piπ函数:
在这里插入图片描述

但很多情况下状态是无限的,比如超级玛丽游戏,这时候我们就要找一个函数来做函数近似,一般选择用神经网络来做近似,这个神经网络就被称为policy network
在这里插入图片描述
回顾一下状态价值函数的定义,是QπQ_\piQπ​对动作AAA的期望, 这里我们只讨论离散动作,它就可以写成一系列连加的形式:
在这里插入图片描述
我们用神经网络近似π\piπ函数,参数为θ\thetaθ,那么状态价值函数VπV_\piVπ​也被近似。
在这里插入图片描述
给定状态sss,如果策略网络π\piπ越好,VVV的值越大。因此我们可以把策略学习的目标函数设为VVV关于状态SSS的期望J(θ)J(\theta)J(θ),它就是对策略的评价。接下来的目标就是改进θ\thetaθ来增大JJJ,如果可以求得VVV对θ\thetaθ的梯度(Polocy gradient),就可以用随机梯度上升的方式学习θ\thetaθ。这里VVV对θ\thetaθ的梯度,可以看成是JJJ对θ\thetaθ的随机梯度,随机性来自于SSS。
在这里插入图片描述

Polocy Gradient

接下来的重点是如何求Polocy Gradient,根据以下推导可以得到Polocy Gradient的第一种形式。这里我们假设QπQ_\piQπ​与θ\thetaθ无关,以下两个推导都进行了简化,但不影响结果。
如果动作AAA是离散的,可以按照这个式子算出梯度,但实际上我们一般不这么算,而是采用第二种形式。
在这里插入图片描述
第二种形式是将式子右侧凑成一个期望,然后用蒙特卡洛近似来算这个梯度。
在这里插入图片描述
我们得到了Polocy Gradient的两种形式:
在这里插入图片描述
对第一种形式,我们可以对每个动作分别计算然后求和,如果动作空间过大,计算量就会很大,如果动作是连续的,那就没办法求了。
在这里插入图片描述
对连续动作,可以用第二种形式,因为我们把式子右侧凑成了关于函数ggg的期望,所以ggg就是策略梯度的无偏估计。我们根据概率密度函数π\piπ随机采样一个动作a^\hat aa^,计算相应的ggg值,就可以用来近似策略梯度了。这种用采样近似期望的方式就是蒙特卡洛近似,其实就是期望的点估计。第二种形式的算法对离散动作也是适用的。
在这里插入图片描述

策略学习总结

策略学习算法步骤:
在这里插入图片描述
这里还有一个问题我们一直没有考虑,就是这个QπQ_\piQπ​的值怎么算?

第一种方法是REINFORCE。因为QπQ_\piQπ​的定义是回报UtU_tUt​的期望,所以我们可以玩完一局游戏后,把真实观测到的utu_tut​作为qtq_tqt​的近似。
在这里插入图片描述
第二种方法是再用一个神经网络来近似QπQ_\piQπ​,这就有了两个网络,一个负责动作,一个负责评价,这就是Actor-Critic算法。
在这里插入图片描述

Actor-Critic

Actor-Critic方法是价值学习和策略学习的结合。
在这里插入图片描述
我们用策略网络来近似π\piπ函数,负责做动作,称为actor。用价值网络近似QπQ_\piQπ​,负责给动作打分,称为critic。
如果我们细心的话就会发现,这里的价值网络学的是QπQ_\piQπ​,而不是之前在DQN中学习的Q∗Q^*Q∗。这是Sarsa算法和Q-Learning算法的区别。
在这里插入图片描述
策略网络和价值网络结构大致如下:
在这里插入图片描述
在这里插入图片描述
训练策略网络π\piπ是为了让VVV值增大,这里对动作的评分是由价值网络qqq作出的。
训练价值网络qqq是为了让评分更精准,qqq是根据从环境中真实获得的奖励来学习的。
在这里插入图片描述
总体训练步骤
在这里插入图片描述
详细说明:用TD算法更新价值网络qqq,用策略梯度更新策略网络π\piπ。
在这里插入图片描述
在这里插入图片描述
算法总结
在这里插入图片描述
在实际实现中,最后一步常用δt\delta_tδt​代替qtq_tqt​,这其实是使用了Baseline,任何接近qtq_tqt​的值都可以作为Baseline,使用Baseline不会影响策略梯度的期望,但能降低方差,加快收敛,往往效果更好。关于Baseline的内容这里做个了解就行,之后会专门细讲。
在这里插入图片描述
在训练结束之后,只使用策略网络π\piπ指导Agent运动,价值网络qqq不再使用。
在这里插入图片描述

Sarsa vs Q-Learning

SarsaQ-Learning使用的都是TD算法,也都有表格版本(适用于有限的动作和状态)和DQN版本。区别就在于一个是学习动作价值函数QπQ_\piQπ​,一个是学习最优动作价值函数Q∗Q^*Q∗。Sarsa用在Critic,Q-Learning用在DQN。

在这里插入图片描述
在这里插入图片描述
视频中并没有给出这两者的更多对比,我看了些其它资料,大概总结如下:

  • SarsaQ-Learning的本质区别来自于对于Q值的更新方式不同,Sarsa使用下一步的实际动作来作为更新,而Q-Learning选取下一步Q值最大的动作作为更新,但并没有真正采取这个动作。
  • Q-Learning的Target Policy是绝对的greedygreedygreedy策略,但在学习探索过程中决定Agent行动的Behavior Policy的却和Sarsa同是ϵ−greedy\epsilon-greedyϵ−greedy策略,即以ϵ\epsilonϵ的概率进行随机探索。Q-Learning行动的策略和改进的策略不是同一个,因此它是Off-policy的,Sarsa则是On-policy的。
  • 因为Q-Learning一直追求最大价值,虽然随机探索会遭遇危险,但它不在乎,所以最终策略表现得贪婪勇敢,而Sarsa则表现得比较稳健。

我觉得可以这样理解:Q-Learning是一个有理想信念的人,为了实现中华民族伟大复兴和共产主义,为了所有程序员不必996,都有一头茂密的秀发,它愿意为之不断战斗流血牺牲,虽然会遭遇危险,但不会停下奔向理想的脚步。而Sarsa只是个普通人,没有那么崇高的理想,只能考虑每一步的收获和代价,一边抱怨着996一边加班写技术博客,在生活的压力下,拼尽全力成为一个普通人。

不说了,已经在哭了。

价值学习技巧

根据前边讲的DQN和TD算法,可以开始训练一个Agent了,但效果一般不太好。下面介绍一些训练的高级技巧,可以提升效果加快收敛。

Multi-Step TD Target

可以使用多步的奖励来定义TD Target,效果更好,单步的TD Target可以看作多步的特例。
在这里插入图片描述
思路和实现都很简单,没什么可讲的,就贴一下SarsaQ-Learning的区别。
在这里插入图片描述
**在这里插入图片描述**

Experience Replay

之前我们使用完一条transition之后,这条经验就被丢弃了,这是一种浪费。第二个问题是我们总是顺序使用相邻的transition进行训练,实验表明这种相邻经验的相关性对训练是有害的。因此我们选择经验回放的方式进行训练。
在这里插入图片描述
在这里插入图片描述
将一系列transition存入一个Replay Buffer,这个序列是有限的,长度为n,当序列满了之后再加入新的transition会删除最早的那条transition,n为超参数,一般设的很大。
在这里插入图片描述

在这里插入图片描述
在训练中,我们从这个Replay Buffer中随机抽取一条或多条transition进行梯度下降,这是SGD(随机梯度下降)和Mini-Batch GD(小批量梯度下降)的区别。
在这里插入图片描述

Prioritized Experience Replay

Experience Replay有许多改进,优先经验回放是其中的一种。它的思路是每个transition重要性应该不同,对比较少出现的transition,应该加大学习力度。我们用TD Error δt\delta_tδt​来衡量transition的重要性,因为对比较少见的transition,预测值和真实值的差距会更大。
显然,经验回放不管是策略学习和价值学习都可以用,但优先经验回放需要计算TD Error,只适用于价值学习。
在这里插入图片描述
优先经验回放就是用重要性抽样代替均匀抽样,有2种方式,一种就是将抽样概率直接正比于 δt\delta_tδt​,第二种是将抽样概率反比于δt\delta_tδt​的排序。总之,δt\delta_tδt​越大,抽样概率越大。在这里插入图片描述
使用重要性抽样后会导致一条transition被多次学习,应当相应调整学习率。β\betaβ是个超参数,抽样概率越大,学习率越小。
在这里插入图片描述
每次选择一条transition进行训练的时候,更新它的δt\delta_tδt​。对最新收集到还没进行训练的transition,把它的δt\delta_tδt​设成最大,拥有最高的优先级。
在这里插入图片描述
总结:δt\delta_tδt​越大,抽样概率越大,学习率越小。
在这里插入图片描述

Target Network & Double DQN

DQN在更新参数的时候,又使用了自己对下个动作的预测值,这是一种Bootstrapping(自举)。
在这里插入图片描述
在这里插入图片描述
用TD算法训练DQN会存在高估问题,原因有二:TD Target中的最大化操作导致高估,再用自己更新自己(自举)会加大高估。
在这里插入图片描述
DQN相当于对动作价值加了噪声的估计,加噪声不影响均值,但会影响最大值,对它求最大化会导致高估真实动作价值。
在这里插入图片描述
总之,求最大化导致高估TD Target,导致DQN高估。
在这里插入图片描述
用高估的值再作为目标来更新,更加剧了高估。
在这里插入图片描述
高估本身不是问题,因为最终从DQN的输出中选择的是价值最大动作,只要高估是均匀的,并不会影响结果。但不幸的是,因为每一次更新都会加剧高估,所以高估的程度和同一个(st,at)(s_t,a_t)(st​,at​)的transition出现的频率有关,而这显然是不均匀的。
在这里插入图片描述
介绍缓解高估问题的2个方式:Target Network 和 Double DQN。

Target Network 是使用一个新的网络来计算TD Target,这样可以缓解Bootstrapping带来的问题。
在这里插入图片描述
和原来唯一的区别就是TD Target是用Target Network计算的。
在这里插入图片描述
Target Network的参数隔一段时间更新,可以直接拷贝源网络的参数,也可以用加权平均。
在这里插入图片描述
因为最大化方式的存在,而且Target Network依赖于原网络,并不能完全解决高估问题。
在Target Network基础上,Double DQN做了个非常小的改动,但能取得更好的效果,缓解最大化导致的高估问题。

我们把计算TD Target分成2步,第一步是选择动作a∗a^*a∗,第二步是带入动作计算TD Target。Target Network就是把原来在DQN上进行的这两步,都变成了在Target Network上进行。而Double DQN则是在DQN上选择动作,在Target Network上计算TD Target,显然这样得到的TD Target值会较小。
在这里插入图片描述
Double DQN同时缓解了最大化和自举两个方面的高估影响。
在这里插入图片描述

Dueling Network

Dueling Network是对DQN网络结构的改进,在介绍它之前要先做一些数学定义和推导。

在这里插入图片描述
定义最优优势函数A∗A^*A∗为最优动作价值函数Q∗Q^*Q∗和最优状态价值函数V∗V^*V∗的差。Q∗Q^*Q∗评价当前状态下做动作aaa的好坏,V∗V^*V∗评价当前状态的好坏,将V∗V^*V∗作为baseline,A∗A^*A∗表示动作aaa对于baseline的优势。动作aaa越好,A∗A^*A∗越大。

在这里插入图片描述
这里直接给出定理1:V∗V^*V∗等于Q∗Q^*Q∗对动作aaa求最大化。
对最优优势函数等式两边关于动作aaa求最大化,等式依然成立。可以得到A∗A^*A∗关于aaa的最大化等于0。
在这里插入图片描述
将最优优势函数的定义移项,并在最后减去上一步我们推出的等于0的这一项,减去这一项的作用我们之后讲。这就得到了Dueling Network中最重要的等式,记作定理2。
在这里插入图片描述
用两个网络分别近似V∗V^*V∗和A∗A^*A∗,通过两个网络组合得到Dueling Network,跟DQN一样也记作QQQ网络。Q网络就是对最优动作价值函数的近似,它和DQN具有完全相同的作用。在这里插入图片描述
AAA网络和VVV网络共用卷积层参数,AAA网络的输出是一系列动作的价值,VVV网络的输出是一个实数,它们相加之后再减去AAA网络输出中的最大值,就是Dueling Network的输出,和普通DQN的输出含义完全一样。
在这里插入图片描述
Dueling Network只是网络结构的改进,训练过程跟DQN也完全一样,没有任何区别,同样可以应用前几节的价值学习技巧,效果更好。唯一要注意的是,Dueling Network也是作为一个网络一起训练的,并不是单独训练AAA网络和VVV网络。
在这里插入图片描述
最后回答一下为什么需要在等式最后减去等于0的一项,这是为了解决不唯一性的问题,不唯一性是指对同一个QQQ网络的输出,AAA网络和VVV网络不是唯一确定的,例如AAA网络输出都增大10,VVV网络输出减少10,那么总的网络输出不变。这样会导致网络可以随意波动不易训练,而减去AAA网络输出的最大值可以避免这个问题,对训练中保持网络的稳定很重要。
在这里插入图片描述
实际中,用mean代替max效果更好,暂无理论依据,纯粹是实验结果。
在这里插入图片描述

策略学习技巧

接下来讲策略学习中的技巧,如果对策略学习的流程已经迷糊了,可以先回去复习一下。

Baseline

回顾一下策略梯度,之前推导过。
在这里插入图片描述
下面一通操作,就是把lnlnln的求导展开,证明只要bbb和AAA无关,这个式子恒等于0,所以可以把它作为baseline。
在这里插入图片描述
得到带有baseline的策略梯度:
在这里插入图片描述
回忆一下,策略学习中我们是用蒙特卡洛近似,用g(at)g(a_t)g(at​)来近似策略梯度进行梯度上升。
在这里插入图片描述
我们已经证明了bbb的取值不会影响g(at)g(a_t)g(at​)的期望,但会影响具体g(at)g(a_t)g(at​)的值,也就是说会影响方差,如果b选的比较好,比较接近QπQ_\piQπ​,可以降低蒙特卡洛近似的方差,加快梯度上升的收敛。

bbb取0就是不使用baseline,没什么好说的。bbb另一个常见的取值是VπV_\piVπ​,因为VπV_\piVπ​是QπQ_\piQπ​的期望,它很接近QπQ_\piQπ​,且与动作AAA无关。
在这里插入图片描述
在这里插入图片描述
最后在这里填一下远古的坑,在Actor-Critic章节的最后,提了一下用δt\delta_tδt​代替qtq_tqt​,算是一种baseline,视频中没有比较过这种baseline的好坏,但我觉得效果肯定是不如用VπV_\piVπ​的,不然何至于如此麻烦,下一节还要专门用一个网络来近似VπV_\piVπ​。

REINFORCE with Baseline

策略学习的核心就是近似策略梯度,回忆一下,在Actor-Critic章节中,我们用两个神经网络近似了π\piπ函数和QπQ_\piQπ​函数,一个负责行动,一个负责打分。当时提到过,如果不用神经网络近似QπQ_\piQπ​,还可以选择玩完一局游戏,用真实的回报utu_tut​来近似QπQ_\piQπ​,这种方式叫REINFORCE ,这节介绍的就是带上了baseline的REINFORCE。

QπQ_\piQπ​用utu_tut​近似了,可又多了一个baseline VπV_\piVπ​,,这项怎么算呢?还是用万能神经网络近似。

在这里插入图片描述
在这里插入图片描述
这里用了3个近似:策略梯度的近似;QπQ_\piQπ​的近似;VπV_\piVπ​的近似;前两个都是蒙特卡洛近似。
在这里插入图片描述
在这里插入图片描述
策略网络π\piπ和价值网络vvv可以共用卷积层,vvv网络的输出是一个实数。结构如下图:
在这里插入图片描述
用梯度上升来学习策略网络。
在这里插入图片描述
用回归来学习价值网络。VπV_\piVπ​是对回报的期望,所以回归的目标就是真实的回报utu_tut​。
在这里插入图片描述
算法步骤总结。需要注意的是:玩完游戏得到的一系列轨迹,并不是只能作为一条数据来学习,对于每个时刻都可以算一次utu_tut​,有n个时刻就可以更新网络n次。
在这里插入图片描述

Advantage Actor-Critic (A2C)

将baseline应用在Actor-Critic上,就得到了Advantage Actor-Critic (A2C)。
A2C最终的算法实现很简单,困难的是它使用的公式是怎么得到的,以下数学推导部分小盆友们根据心情自行取用。

数学警告!!!


首先,根据A2C的名字,可以猜到它是在Actor-Critic上增加了baseline,用到了优势函数,因此它在更新策略网络时使用的策略梯度,应该是以下形式:
在这里插入图片描述
这个策略梯度和上一节REINFORCE with Baseline中是一样的,策略函数π\piπ已经用神经网络近似了,但QπQ_\piQπ​和VπV_\piVπ​还不知道怎么算,REINFORCE方法是用真实的utu_tut​近似QπQ_\piQπ​,用另一个网络近似VπV_\piVπ​,A2C不是这样做的。

根据QπQ_\piQπ​的定义,通过以下推导,建立了QπQ_\piQπ​和VπV_\piVπ​的联系,得到定理一。
在这里插入图片描述
将定理一代回VπV_\piVπ​的定义,得到定理二。
在这里插入图片描述
这两个定理分别把QπQ_\piQπ​和VπV_\piVπ​写成期望的形式,这样是为了做蒙特卡洛近似。

这里我产生了一个疑问,这怎么能近似成同一个东西的?那带入到策略梯度的式子里,Qπ−VπQ_\pi-V_\piQπ​−Vπ​不是没了??
思考后我觉得是这样的:定理2的期望是跟动作AAA有关,baseline的基本要求就是不能和AAA有关,所有第二个近似是不能代人策略梯度的。
在这里插入图片描述
把定理1代人策略梯度,这样括号内就只跟VπV_\piVπ​有关了,这样就可以用一个神经网络来近似它。
在这里插入图片描述
接下来就是常规操作了,用梯度上升更新策略网络π\piπ。
在这里插入图片描述
定理2是为了应用TD算法更新价值网络vvv,因为之前的价值学习都是学的QπQ_\piQπ​,而这次是VπV_\piVπ​。

思路理清楚接下来就简单了,还是用TD算法,跟之前学QπQ_\piQπ​的步骤完全一样。
在这里插入图片描述
在这里插入图片描述
最后理解一下,策略梯度的括号里应该是价值函数对动作的评价(动作的优势),用来指导策略网络的学习,可是括号内并没有动作,它是怎么评价动作的呢?下图中框出的两项都表示价值网络对当前时刻的评价(未来价值的期望),区别在于前一项是在下一时刻作出的,和当前动作ata_tat​有关,后一项是在当前时刻作出的,和ata_tat​无关,所以它们的差可以反映动作ata_tat​带来的优势,ata_tat​越好,这个差值越大。

在这里插入图片描述
数学警告结束!!!


总之,一堆推导的最终作用是:学习VπV_\piVπ​作为价值函数,而不是学习原来AC里的QπQ_\piQπ​。

推出公式后,A2C的网络结构和训练步骤就都很简单了,比AC还要简洁,我贴一下图,不再详解。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

REINFORCE vs A2C

对比一下前两节课讲的REINFORCE with Baseline和A2C的异同。首先他们的网络结构完全一样,区别在于vvv网络的作用不一样,在REINFORCE中只是作为baseline,而再A2C中是作为critic评价动作的好坏。

在这里插入图片描述
再对比一下训练过程,唯一的区别就是在计算error时,A2C用的yty_tyt​,REINFORCE用的utu_tut​。

在这里插入图片描述
在这里插入图片描述
如果把A2C中的TD Target改写成多步的形式,在计算yty_tyt​时可以使用多步的真实奖励。
在这里插入图片描述
可以发现,如果使用了之后全部的真实奖励,那么yty_tyt​就等于了总回报utu_tut​。
在这里插入图片描述
结论:使用了baseline的REINFORCE是使用了多步TD Target的A2C的一个特例。

这结论还挺神奇的,两个思路殊途同归了。如果使用了全部真实回报,就不存在自举的问题。
在这里插入图片描述

连续控制问题

Discrete vs Continuous Control

进入一个新话题,之前讨论的都是离散动作,不管是DQN还是策略网络,输出的都是离散值,无法直接用在连续控制上。

例如机械手臂的转动角度是个连续值,有无穷多个取值。
在这里插入图片描述
解决连续问题的一种办法是把连续动作离散化,例如把连续的角度分割成有限个取值。
在这里插入图片描述
离散后的动作取值显然会随着动作维度增大而指数增长,会导致维度灾难,网络难以训练,因此这种办法只适用于动作维度较低的情况。
在这里插入图片描述

Deterministic Policy Gradient (DPG)

确定策略梯度 (DPG)是解决连续控制问题的一种方式,它是一个Actor-Critic方法。它的网络结构和AC完全一样,唯一的区别就是策略网络的输出不是一系列动作的概率,而是一个确定(Deterministic)的动作向量,因而就可以表示一个连续动作,比如输出(45.2,90.8)(45.2, 90.8)(45.2,90.8)可以代表机械手臂的2个转动角度。
在这里插入图片描述
理解这个本质区别之后就很简单了,更新价值网络用的还是TD算法,没有区别。
只需注意这里下一时刻的动作也是一个确定值,并且不会真正执行,只是用来计算。
在这里插入图片描述
更新策略网络有所区别,不再用AC中的策略梯度,而是确定策略梯度(DPG)。我们希望策略网络输出的动作可以被价值网络打出更高的分数,更新策略网络时,价值网络是确定的,输出只和策略网络参数θ\thetaθ有关。因为动作是一个确定的向量,所以确定策略梯度的形式比策略梯度更简单,只需要输出价值qqq对策略网络参数θ\thetaθ求梯度然后用梯度上升更新,用链式法则展开,就是qqq先对动作aaa求导,再乘上aaa对θ\thetaθ求导。
在这里插入图片描述
DPG就讲完了,挺简单的对吧,接下来讲一下改进。

在使用TD算法更新价值网络的时候,用qt+1q_{t+1}qt+1​更新qtq_tqt​,显然是Bootstrapping。我们可以用target network来缓解这个问题,需要准备2个结构一样的策略网络和价值网络,用它们计算qt+1q_{t+1}qt+1​。
在这里插入图片描述
在这里插入图片描述
target network的参数更新我们之前讲过,可以用加权平均来更新。
在这里插入图片描述
除了target network,之前讲过的改进,比如经验回放和多步TD target也都可以用。

最后看一下随机策略和确定策略的对比,核心就是随机策略输出的是动作概率,通过采样得到动作,确定策略直接输出确定动作。
在这里插入图片描述

Stochastic Policy for Continuous Control

有时候我们还是希望让Agent的运动是有随机性的,除了把策略函数改成确定性的,有没有其他办法解决连续运动问题呢?

核心思路是这样的:因为运动是连续的,不能穷取,又希望保有随机性,那么这个动作可以从一个概率分布中采样得到,而描述一个概率分布的参数是有限的,只要让网络学习这个参数就可以了。

不知道用什么概率分布,正态分布自然就是首选了。这里的动作aaa有ddd维的自由度,也就是一个ddd维的向量,μ\muμ和σ\sigmaσ也一样。如果各个维度的动作相互独立,策略函数π\piπ可以写成每一维概率密度函数连乘的形式。注意:最终使用的时候并不是用π\piπ函数采样,每个维度的动作是分别采样的,π\piπ函数只用来推导策略梯度。

话说,这个6.28我第一眼看还有点懵,然后才想起来是2π\piπ……为啥要这么写,是因为符号和π\piπ函数重复啦?
在这里插入图片描述
只要用2个神经网络分别学习μ\muμ和σ\sigmaσ就好了,直接学σ\sigmaσ效果不太好,定义ρ\rhoρ为σ\sigmaσ平方的对数,也就是方差的对数,让网络学习ρ\rhoρ。
在这里插入图片描述
网络结构没什么好说的,就是共享卷积层。
在这里插入图片描述
第iii个维度的动作aia_iai​,就可以从确定的正态分布中采样得到。

在这里插入图片描述
接下来的重点就是怎么计算策略梯度。
回忆一下策略梯度的式子,里面用到了ln⁡π\ln{\pi}lnπ对参数的导数,根据π\piπ函数的定义,ln⁡π\ln{\pi}lnπ可以写成下图中蓝色项加上一个常数项的形式。
在这里插入图片描述
接下来要求ln⁡π\ln{\pi}lnπ对参数的导数,常数项和求导无关,不用管,这里把θμ\theta^\muθμ和θρ\theta^\rhoθρ统称为θ\thetaθ,为了方便求这个导数,我们把这个蓝色项记作一个辅助函数fff,用网络的输出和采样得到的动作aaa计算fff,这样做的好处是,只要计算得到fff,就可以用深度学习框架(如Pytorch)自动算出fff对所有网络参数θ\thetaθ的导数。

在这里插入图片描述
求导根据链式法则进行,不用我们操心。
在这里插入图片描述
求得这个导数,就可以代回策略梯度的式子了。
在这里插入图片描述
之后就和一般的策略学习完全一样了,用蒙特卡洛近似得到随机策略梯度ggg,进行梯度上升,但动作价值函数QπQ_\piQπ​还不知道怎么算,可以用另一个网络近似(Actor-Critic方法),或者用真实回报utu_tut​近似(REINFORCE方法),不再赘述。
在这里插入图片描述
视频课程里还有2节介绍Multi-Agent Reinforcement Learning(MARL),主要是介绍基本概念和3种框架。我觉得MARL是个天坑,给这2节课做笔记意义不大,之后有机会再做梳理吧。

相关内容

热门资讯

员工离职报告 员工离职报告范文3篇  在当下这个社会中,报告十分的重要,报告包含标题、正文、结尾等。那么一般报告是...
大学生心理健康的自我成长报告 大学生心理健康的自我成长报告范文1000字  在当下这个社会中,需要使用报告的情况越来越多,要注意报...
开题报告的文献综述怎么写   文献综述是研究者在其提前阅读过某一主题的文献后,经过理解、整理、融会贯通,综合分析和评价而组成的...
九九重阳节活动简报 九九重阳节活动简报(通用16篇)  在日常学习、工作抑或是生活中,很多地方都会使用到简报,简报不是一...
初中生课外阅读情况调查报告 初中生课外阅读情况调查报告  一、调查目的  在日常语文教学过程中,我们经常可以发现学生们由于积累不...
参观学习报告 参观学习报告  在日常生活和工作中,报告有着举足轻重的地位,其在写作上有一定的技巧。那么,报告到底怎...
综治工作述职报告 综治工作述职报告(精选7篇)  光阴的迅速,一眨眼就过去了,回顾过去的工作,倍感充实,收获良多,将过...
经营分析报告 经营分析报告(精选5篇)  在生活中,报告有着举足轻重的地位,报告具有双向沟通性的特点。其实写报告并...
大学生调查报告 大学生调查报告13篇  随着个人的素质不断提高,我们都不可避免地要接触到报告,我们在写报告的时候要注...
开题报告的内容与撰写要求   开题报告的内容一般包括:题目、立论依据(毕业论文选题的目的与意义、国内外研究现状)、研究方案(研...
寒假实践报告 寒假实践报告范文【5篇】  在我们平凡的日常里,报告有着举足轻重的地位,其在写作上有一定的技巧。一起...
实习报告个人总结 实习报告个人总结  导语:个人总结,就是把一个时间段的个人情况进行一次全面系统的总检查、总评价、总分...
家乡民俗文化调查报告 家乡民俗文化调查报告(精选10篇)  要去了解一件不明白的事情时,我们通常要进行专门的调查研究,并且...
保险公司实习报告 保险公司实习报告  我们眼下的社会,报告的使用频率呈上升趋势,我们在写报告的时候要注意逻辑的合理性。...
英国留学申请时间   有意申请2015秋季英国大学的同学,现在就必须开始提交申请了。基础申请材料包括:成绩单、在读证明...
文明社区自查报告 文明社区自查报告(通用20篇)  随着社会一步步向前发展,越来越多人会去使用报告,写报告的时候要注意...
错别字调查报告 错别字调查报告(汇编15篇)  在经济发展迅速的今天,报告与我们的生活紧密相连,其在写作上具有一定的...
城镇化建设问题调研报告 生态文明建设调研报告推荐度:新农村建设调研报告推荐度:生态文明建设调研报告推荐度:小城镇建设调研报告...
房地产销售述职报告 房地产销售述职报告15篇  我们眼下的社会,报告与我们的生活紧密相连,不同种类的报告具有不同的用途。...
销售经理的述职报告 销售经理的述职报告范文  在当下这个社会中,报告有着举足轻重的地位,我们在写报告的时候要避免篇幅过长...