强化学习笔记

深度强化学习要点摘要

扩展资料

交叉熵:

https://blog.csdn.net/qq_38846606/article/details/111929038

https://zhuanlan.zhihu.com/p/149186719

强化学习:

https://datawhalechina.github.io/easy-rl/

https://www.bilibili.com/video/BV1UE411G78S

机器学习中梯度的意义 偏导 ∂ f ∂ θ \frac{\partial f}{\partial\theta} θf代表了通过调整函数 f f f的参数 θ \theta θ向梯度上升或者下降的方向移动,从而达到 f f f的极值。被偏导的函数是被优化的对象。

Overview

强化学习的整个过程由几个部分构成:

  • Agent:是用来代替人的自动化的决策系统。
  • Environment:Agent的交互对象,比如,围棋游戏。
  • Action:Agent对Environment的操作,比如,在围棋中落子。
  • State(Observation):Agent的输入之一,代表了Agent对当前Environment的观察(是Environment的建模),Agent一般根据State来决定下一步的Action。
  • Reward:Environment的输出,代表在根据特定State执行特定Action之后,是不是达成了需要的目标,比如,在围棋中落完子之后整盘棋是不是赢得了胜利(或失败)。

episode Agent与Environment互动过程的结束,比如,一盘围棋的结束。强化学习的过程就是要学习如何最大化在每次episode的时候的预期累计reward。

reward delay 强化学习的难点之一。reward delay有两种情况。1)对于有些场景,当Agent做出Action之后,并不是总是可以立刻得到Reward。比如围棋,在episode之前是无法知道棋局的胜负的,Environment在次期间给出的Reward都是0。也就是说在最终的结果出来之前,Agent需要在没有Reward的情况下给出Action。2)有时立刻给出Reward会使得Agent决策时目光短浅,所以刻意增加reward delay可以使Agent在做出Action时有更长远的考虑。

exploration 强化学习的难点之一。有时Agent的行为会影响到它之后从Environment看到的情况,所以Agent要有意地尝试不同的行为来对Environment进行充分的探索。

randomness in the environment 有时环境的变化和Action的作用没有关系,那么我们可以认为这是来自于环境中的随机性。

policy-based与value-based 两种强化学习的分支,前者训练一个做事的Actor,后者训练一个Critic。Critic不做任何事情,它对Actor行为进行批评。这两种方式可以结合。

policy-based approach

Actor policy-based approach的训练对象,是在Agent中的一个模型,用 π \pi π表示。其以对于环境的Observation为输入,得到Action,内部的参数为 θ \theta θ。最终可以表达为 π θ ( O b s e r v a t i o n ) = A c t i o n \pi_{\theta}(Observation) = Action πθ(Observation)=Action。在深度强化学习中,Actor中的模型是一个神经网络。Observation会将Environment建模为一个矩阵或者一个向量,输出是某个Action被采用的可能性。

Total Reward 设在第t轮决策中,Actor根据Observation s t s_t st做出Action a t a_t at,Environment根据 a t a_t at给出对应的 r t r_t rt。那么假设到episode一共经历了 T T T轮,那么Total Reward R θ = ∑ t = 0 T r t R_{\theta} = \sum_{t=0}^{T}r_t Rθ=t=0Trt θ \theta θ是Actor中模型的参数)。而因为Environment中的随机性,所以整个流程会执行多次来获得Total Reward的期望 R θ ˉ \bar{R_{\theta}} Rθˉ。Actor的训练过程就是通过调整 θ \theta θ来最大化 R θ ˉ \bar{R_{\theta}} Rθˉ

R θ ˉ \bar{R_{\theta}} Rθˉ的表达:

梯度上升的过程,需要对神经网络参数 θ \theta θ求偏导:

偏导的前一项是和参数 θ \theta θ无关,只有概率 P P P内部存在,通过在分子分母乘上同一个 P P P,然后根据函数的微分规则导出log项,然后用多出来的 P P P离散化为具体的多次episode的平均:

根据条件概率性质,将 P P P拆开,具体为一系列小事件的概率相乘,其中 p ( r 1 , s 2 ∣ s 1 , a 1 ) p(r_1,s_2|s_1,a_1) p(r1,s2s1,a1),代表在Agent给出Action a 1 a_1 a1之后,环境由 s 1 s_1 s1变为 s 2 s_2 s2,并且给出Reward r 1 r_1 r1的概率。其中 p ( a 1 ∣ s 1 , θ ) p(a_1|s_1,\theta) p(a1s1,θ),代表在Agent在参数 θ \theta θ的模型中根据 s 1 s_1 s1给出 a 1 a_1 a1的概率。前者完全Environment决定,是个未知的黑盒(这是符合实际的),后者是Actor的模型控制的:

按照前面求偏导的要求,最等式左边求log(右边少了一个括号),最终得到偏导项的计算方法,而这一偏导项用以更新 θ \theta θ

可以用交叉熵来解释式子的后半程, ∇ l o g p ( a t n ∣ s t n , θ ) \nabla logp(a_t^n|s_t^n, \theta) logp(atnstn,θ),其本质代表在序列的 t t t时刻Actor在参数 θ \theta θ下的可能决策的概率与实际决策的交叉熵的梯度。交叉熵的原始定义是 − ∑ a ∈ a l l   a c t i o n , s ∈ a l l   s t a t e q ( a ∣ s ) l o g p ( a ∣ s , θ ) -\sum_{a\in all\ action, s\in all\ state}q(a|s)logp(a|s, \theta) aall action,sall stateq(as)logp(as,θ)。其中 q q q是模型实际的决策(也就是选择概率最高的 a ∣ s a|s as)所对应的各个 a ∣ s a|s as事件的概率,在这个例子中 q q q仅有 q ( a t ∣ s t ) q(a_t|s_t) q(atst)是1,其他都是0,是个one-hot。所以 ∑ \sum 符号可以消除掉,简化为 − q ( a t ∣ s t ) l o g p ( a t ∣ s t , θ ) -q(a_t|s_t)logp(a_t|s_t, \theta) q(atst)logp(atst,θ),并最终简化为 − l o g p ( a t ∣ s t , θ ) -logp(a_t|s_t, \theta) logp(atst,θ)。在这里,交叉熵是一个loss函数,代表了一个决策 a ∣ s a|s as在模型中产生的概率和模型实际决策的概率的距离(相似度),而做梯度下降的方向就是 − ∇ l o g p ( a t ∣ s t , θ ) -\nabla logp(a_t|s_t, \theta) logp(atst,θ),代表如果让模型更倾向于做出 a t ∣ s t a_t|s_t atst的决策,参数 θ \theta θ要做出的变化。

− ∑ t = 1 T ∇ l o g p ( a t ∣ s t , θ ) -\sum_{t=1}^{T}\nabla logp(a_t|s_t, \theta) t=1Tlogp(atst,θ)代表了在一个序列中(一次episode之前)每一个时间点的决策的概率与它们实际做出决策所对应的概率的总交叉熵下降的方向。而它们又于当前序列的Reward R ( τ ) R(\tau) R(τ)相乘,可以解释为如果当前决策Reward是负的,说明当前决策所代表的不是真理,方向是错误,那么就要远离这个方向,反之也一样。 R ( τ ) R(\tau) R(τ)这个参数的作用就是根据环境给出的总奖励来调整参数,让决策 a ∣ s a|s as更靠近或者远离其尝试的方向。

− ∑ t = 1 T ∇ l o g p ( a t ∣ s t , θ ) -\sum_{t=1}^{T}\nabla logp(a_t|s_t, \theta) t=1Tlogp(atst,θ)前面有一个负号,但是上面推导的结果没有是因为负负得正。

Baseline 当所有Action的Reward都是正的,所以只要这个Action被尝试过,不管效果好不好,模型肯定会往这个方向梯度上升,这会导致在学习过程中被尝试或者大量尝试的action会有更大的可能性被选中,不利于选出效果好的Action。所以可以要给奖励一个减一个baseline,给被尝试得比较少的Action一些被选择的机会,并且减少Reward不高的Action被选择的概率。

Implementation 在实际的实现中,几乎可以把一个离散的Policy-based的训练问题当成一个输出为Softmax形式的分类问题的训练,输入是State s s s,而输出是一个类别,也是一个Action a a a。而分类的损失函数(最终其实就是信息熵)计算,是在Actor实际执行的Action a a a作为分类训练的label与模型实际输出的向量(每种选择的概率)之间进行。只是说要对损失函数进行一点点修改,加一个 R ( τ n ) R(\tau^n) R(τn)来为分类器的梯度下降额外加一个权重。

Advantage function 使用Total Reward来作为某一个Action是不是好的Action的权重有时候并不总是最正确的。这里权重的表达是可以泛化到”当前的Action相比其他的Action要好多少“这一问题上的,用 A θ ( s t , a t ) A^{\theta}(s_t,a_t) Aθ(st,at)表示。 A θ ( s t , a t ) = R ( τ n ) A^{\theta}(s_t,a_t)=R(\tau^n) Aθ(st,at)=R(τn)可能会让滥竽充数的Action也获得不错的Reward,这就不客观了。所以有一些改进的方法,比如 A θ = ∑ t ′ = t T n r t ′ n A^{\theta}=\sum^{T_n}_{t'=t}r_{t'}^{n} Aθ=t=tTnrtn,仅仅将这个Action执行之后的所有Reward作为这个Action的权重,比如 A θ = ∑ t ′ = t T n r t ′ n γ t ′ − t    ( γ < 1 ) A^{\theta}=\sum^{T_n}_{t'=t}r_{t'}^{n}\gamma^{t'-t}\ \ (\gamma<1) Aθ=t=tTnrtnγtt  (γ<1),在前面一种执行方法的基础上降低更远的Reward的影响,因为在一个Action对他之后更远Reward贡献更少。

Critic

Critic并不实际做出任何决定,而是用一个模型来判断Actor做得好不好,可以大概表达为 V π ( s ) V^{\pi}(s) Vπ(s),是当前Actor在State s s s下最终可以获得的total reward。

Monte-Carlo based approach 这类Critic会观察Actor的行为,并且在序列中,拟合每一个State s s s和序列最终获得的Total Reward之间的关系。

Temporal-difference approach 有时候,整个序列很长,会降低Critic的训练效率,所以Critic不使用Total Reward来训练,而是将某次 r t r_t rt作为两个相邻State在特定Actor所分别对应的Total Reward的差值来进行训练。即让Critic的 V π ( s t + 1 ) − V π ( s t ) V^{\pi}(s_{t+1})-V^{\pi}(s_t) Vπ(st+1)Vπ(st) r t r_t rt拟合在一起。

Q function 拟合Actor π \pi π在State s s s下做出Action a a a的Total Reward预期。也可以表达为拟合 Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a)与Total Reward之间的关系。这个Critic在 a a a是离散的时候意义很大,可以指导Actor的工作。我们可以再特定的 s s s下选出 Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a)最大的 a a a,作为Actor的决策。

Q-learning 在Action是离散的时候的一种改进。初始存在一个Actor π \pi π通过Monte-Carlo或者Temporal-difference的方法训练出它对应的Q function Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a),通过找到 Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a)中每一个 s s s对应的最佳 a a a来构造更优的Actor π ′ \pi' π。这个过程可以简洁地表达为 π ′ ( s ) = a r g m a x a Q π ( s , a ) \pi'(s)=argmax_aQ^{\pi}(s,a) π(s)=argmaxaQπ(s,a)。而通过Q-learning产生的Actor没有参数,它仅仅包含了Q function并且枚举Action。“https://arxiv.org/pdf/1710.02298.pdf”有更多的细节。

Actor-Critic

一般的Actor使用Total Reward来做修改 θ \theta θ,使得Total Reward可以尽可能大。在Policy-based的方法中,Total Reward是一个参数来调整 θ \theta θ,使得Actor更接近或者更远离其既定的决策方向(Reward大就更接近已有的决策,Reward小就远离已有的决策)。但是, R ( τ ) R(\tau) R(τ)的随机性是很高的,直接基于Actor的互动过程去学可能效果不好,所以有一种方法是使用Critic预估出来的Reward来计算这里的权重。这里的方法有很多,比如:
r t n − ( V π ( s t n ) − V π ( s t + 1 n ) ) r_t^n-(V^{\pi}(s_t^n)-V^{\pi}(s_{t+1}^n)) rtn(Vπ(stn)Vπ(st+1n))
这个式子会被嵌到Policy-based approach的 R ( τ n ) R(\tau^n) R(τn)的位置。这个权重表达的意思很清晰,后面一项是Critic对Actor当前Action的Reward的预测: V π ( s t n ) − V π ( s t + 1 n ) V^{\pi}(s_t^n)-V^{\pi}(s_{t+1}^n) Vπ(stn)Vπ(st+1n) r t n r_t^n rtn是实际的当前reward。产生的效果是,如果实际的reward更大,那就说明Actor对于当前决策的重视程度不够,这个权重是正的,增加Actor执行这一Action的概率。如果这个权重是相等的或者更小,那么不变或者减少对应Action的概率。

asynchronous 异步训练,开多台机器同时并行训练。然后用分别产生的Reward更新同一个模型,总而达成更高效的训练。

Proximal Policy Optimization

on-policy 使用Actor π \pi π来生成Reward并更新 π \pi π的参数 θ \theta θ被称为on-policy。这种方式的缺点在于一旦 θ \theta θ在经过一轮更新之后,老版本的Actor与Environment的记录没有办法用来改良新的Actor。

off-policy 根据概率分布的定义,可以用不同概率分布的比例来在不同概率分布下的做函数期望的装换,这种技术叫做importance sampling:

在这里 x x x本来在概率分布 p p p中做采样并且来求 f ( x ) f(x) f(x)的期望。但是通过在积分中做出变换,我们可以让 x x x q q q中采样,通过求 f ( x ) p ( x ) q ( x ) f(x)\frac{p(x)}{q(x)} f(x)q(x)p(x)来“迂回”求出在 p p p分布中 f ( x ) f(x) f(x)的期望。如果在这里将 f ( x ) f(x) f(x)换成强化学习Reward或者Advantage Function的梯度,把 p ( x ) p(x) p(x) q ( x ) q(x) q(x)视为新的Actor π \pi π和老的Actor π ′ \pi' π所做出Action的概率分布,那么我们就可以让 π ’ \pi’ π与Environment互动的历史数据应用在 π \pi π的训练中。最终Reward的定义可以变为:

然后将 τ \tau τ p ( τ ) p(\tau) p(τ)展开到Action和State的粒度。这个式子可以不严格地推导为:

最终达成的效果是,使用老的Actor的Advantage Function的 A θ ′ A^{\theta'} Aθ乘上新老Actor的策略的概率分布的比例 p θ ( s t ∣ a t ) p θ ′ ( s t ∣ a t ) \frac{p_{\theta}(s_t|a_t)}{p_{\theta'}(s_t|a_t)} pθ(stat)pθ(stat),和老的Actor的执行历史 ( s t , a t )   π θ ′ (s_t,a_t)~\pi_{\theta'} (st,at) πθ来求新的Actor的梯度,从而更新新的Actor的参数。

off-policy最终产生的好处是,通过on-policy产生的Actor可以用off-policy的方式再进一步优化,从而很好地复用旧Actor的历史数据,增加训练的效率。

这个导函数的原目标函数(是加了权重的Advantage function、被优化的函数,要通过调整 θ \theta θ的取值是的这个目标函数够大)为:

off-policy的局限 importance sampling保证了在新的 x x x的分布下 f ( x ) f(x) f(x)期望的新计算方法,但是等式两边的是期望的相等,而不是分布的相等。期望只有在足够多的sampling之后才能通过求平均才能得到,当sampling不够多时,平均值与期望是有偏差的,特别是 p ( x ) p(x) p(x) q ( x ) q(x) q(x)差别很大时。所以,为了让来自旧Actor的历史数据能在接下来的也可以使用,需要再增加带权重的Advantage Function的同时也需要降低off-policy中新Actor和老Actor之间的差距,所以 j θ ′ ( θ ) j^{\theta'}(\theta) jθ(θ)后面还可以加一项表达二者差距的函数。比如KL散度( β \beta β是KL散度的权重):

这里的KL散度表达了参数分别为 θ \theta θ θ ′ \theta' θ的新旧Actor的做出Action的概率分布的区别大小。这一项是需要往小的方向优化的,所以前面是符号。当然有其他各种方法来表达新旧Actor的区别,比如PPO2中的clip函数。

Q-Learning

一种典型的Critic算法,在typical的算法中,Q-learning只能应对离散的Action(如果Q-function不考虑Action,那就没有Action必须离散的问题)。其核心模型为Q-function,表达为 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)。Q-funtion用来预测在State s s s下做出Action a a a之后Actor π \pi π所能得到的Total Reward。

MC v.s. TD Q-learning有两种方式,一种是Monte-Carlo的方式,一种是Temploral-difference的方式。Monte-Carlo用 Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a)去拟合Total Reward,Temploral-difference用 Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Qπ(st,at)去拟合 r t + Q π ( s t + 1 , π ( s t + 1 ) ) r_t+Q^{\pi}(s_{t+1},\pi(s_{t+1})) rt+Qπ(st+1,π(st+1))。前者的优势在于,Total Reward是Actor与环境直接互动之后的结果,相比 Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Qπ(st,at)是对于total reward的预测肯定是更准确的。后者的优势在于,被拟合目标的方差更小,因为从一个Action到最终的结果之间可能还存在很多的步骤,Total Reward的浮动很大,而 r t r_t rt仅仅是在State s t s_t st做出Action a t a_t at所对应的直接的、单次的Reward,没有其他因素的影响,方差会小很多。

Q-Learning Q-Learning的Actor没有参数,仅仅是遍历所有的可能的Action,并且选出在当前State下选出Q-function输出最高的Action,即 a r g m a x a Q π ( s , a ) argmax_aQ^{\pi}(s,a) argmaxaQπ(s,a)。而训练的过程就是不断取出前一个Actor π \pi π在每个State下Q-function输出最高的Action来生成新的Actor π ′ \pi' π。即 π ′ = a r g m a x a Q π ( s , a ) \pi'=argmax_aQ^{\pi}(s,a) π=argmaxaQπ(s,a)。而在新的Actor π ′ \pi' π与环境的互动中可以得到 Q π ′ Q^{\pi'} Qπ,并借此得到更好的Actor。

上面这里介绍了怎么从旧的Actor学出新的更好的Actor。下面介绍的是如何从新的Actor中拟合出新的Q-function。

Target Network TD用 Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Qπ(st,at)去拟合 r t + Q π ( s t + 1 , π ( s t + 1 ) ) r_t+Q^{\pi}(s_{t+1},\pi(s_{t+1})) rt+Qπ(st+1,π(st+1)) Q Q Q是一个神经网络,通过梯度下降 Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Qπ(st,at)来缩小 r t + Q π ( s t + 1 , π ( s t + 1 ) ) r_t+Q^{\pi}(s_{t+1},\pi(s_{t+1})) rt+Qπ(st+1,π(st+1)之间的距离。如果同时更新 Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Qπ(st,at) Q π ( s t + 1 , π ( s t + 1 ) ) Q^{\pi}(s_{t+1},\pi(s_{t+1})) Qπ(st+1,π(st+1)),训练可能会不太稳定(目标函数和target的都在动,并且相关性很强,不利于收敛),因为在训练一个网络的时候。所以一般会将 Q π ( s t + 1 , π ( s t + 1 ) ) Q^{\pi}(s_{t+1},\pi(s_{t+1})) Qπ(st+1,π(st+1))作为目标函数,其参数暂时保持不变,只把参数更新作用在前面一项中,经过一定轮次的迭代之后,再把更新后的参数同步到后面一项中。

后一项应该等价于 m a x a Q ( s t + 1 , a ) max_aQ(s_{t+1}, a) maxaQ(st+1,a),因为Actor每次都选Reward最大的。

Exploration Q-function的方式对于环境的探索有比较大的风险,因为每次都在特定的State下选出Total Reward最高的Action,对于其他的选择缺少探索。特别是训练一开始的时候,Total Reward预测还很不准确这,时选Total Reward最高的也不正确。所以需要给预计的Total Reward不是最高的Action一些机会。这里需要加入一些概率的因素。

Replay Buffer 在训练不同Actor的Q-function的历史资料可以复用。replay buffer这种方式存储了Actor(旧的和新的)与环境的最近的一批互动的经验,每一条经验包含了在State s t s_t st的时候执行Action a t a_t at的时候获得了Reward r t r_t rt,并且产生了新的State s t + 1 s_{t+1} st+1。这种方式有点类似于policy-based的off-policy的方式,这样子在拟合一个Actor的Q-function时就可以节省与环境的互动。

Double DQN DQN是神经网络版本的Q-function。Q-Learning容易高估Reward,因为其用 Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Qπ(st,at)去拟合 r t + Q π ( s t + 1 , π ( s t + 1 ) ) r_t+Q^{\pi}(s_{t+1},\pi(s_{t+1})) rt+Qπ(st+1,π(st+1)),而后者 Q π ( s t + 1 , π ( s t + 1 ) ) Q^{\pi}(s_{t+1},\pi(s_{t+1})) Qπ(st+1,π(st+1))是在 s t + 1 s_{t+1} st+1下Total Reward最高的Action对应的Total Reward。而最高的Total Reward很可能存在高估的成分,进而导致DQN对于Reward的高估。为了降低高估,Double DQN的微调了拟合过程,其使用 Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Qπ(st,at)去拟合 r t + Q π ′ ( s t + 1 , π ( s t + 1 ) ) r_t+Q^{\pi'}(s_{t+1},\pi(s_{t+1})) rt+Qπ(st+1,π(st+1))。其中 Q π ′ Q^{\pi'} Qπ指的是老版本的DQN,而 π ( s t + 1 ) \pi(s_{t+1}) π(st+1)用的是新版本的Actor(DQN)。这样子可以降低高估 s t + 1 s_{t+1} st+1后续的Reward的可能。主要原因是使用两种不同的Q-function来参与对Reward进行预测,可以降低预测的方差(集成学习降低方差),从而降低高估的可能。Double DQN是Target Network的一种,与前文Target Network的区别是后者使用的是来的DQN来预测 s t + 1 s_{t+1} st+1之后的Action,即拟合的Target为 r t + Q π ′ ( s t + 1 , π ′ ( s t + 1 ) ) r_t+Q^{\pi'}(s_{t+1},\pi'(s_{t+1})) rt+Qπ(st+1,π(st+1))

Dueling DQN Dueling DQN相比typical的DQN修改了DQN的一般性结构,其在DQN的末端将 Q ( s , a ) Q(s,a) Q(s,a)输出分解成 V ( s ) V(s) V(s) A ( s , a ) A(s,a) A(s,a)的相加。 V ( s ) V(s) V(s)代表了一个State s s s出现之后其对应的Total Reward的预期。 A ( s , a ) A(s,a) A(s,a)代表了在State s s s之后采取不同的Action a a a对于 V ( s ) V(s) V(s)的进一步调整, A ( s , a ) A(s,a) A(s,a)是一个向量,向量的长度为Action的数量。这种方式使训练更高效,对于 V ( s ) V(s) V(s)的修改会作用到这一State之后所有Action的Total Reward的预测,这样子就不需要对所有的Action进行Sampling。

为了让State的Value的更新和Action的Value的更新可以分开,即不能让State的Value的更新变成对于Action更新的同增同减,对 A ( s , a ) A(s,a) A(s,a)需要加一个约束,其中一种约束的方式是在DQN的对应分支之后加一个Normalization,让其中内容的平均值是0,这样子在梯度下降的时候,State的Value的更新就不会导致对 A ( s , a ) A(s,a) A(s,a)整体更新。

Prioritized Replay Replay Buffer的一个改进,在TD类型的DQN的拟合中,会使用老版本DQN与Environment互动的记录来更新新的DQN。要根据在哪些 ( s , a ) (s,a) (s,a)下对于 r r r的预测误差比较大,就给这些记录更多被选择的机会,多做一些拟合,降低对应的残差。

Multi-step 介于MC和TD的一种方式,用 Q π ( s t , a t ) Q^{\pi}(s_t,a_t) Qπ(st,at)拟合 r t + 1 + . . . + r t + N + Q π ( s t + N , a t + N ) r_{t+1}+...+r_{t+N}+Q^{\pi}(s_{t+N},a_{t+N}) rt+1+...+rt+N+Qπ(st+N,at+N)。让与环境实际互动产生的Reward更多,用Q-function预测的部分更少。

Noisy Net 对于Q-function拟合的一种改进。是Sampling的一种改进。在每次episode的时候,给DQN的参数加一个噪音。这种方式被认为比Epsilon Greedy更好。这种方式看到同一个State会采取一样的Action,并且在同一个episode中进行的是方向相同的、系统的尝试。

Distributional Q-function 对于Q-function的形式的一种改进,让Q-function的输出不只是一个总体的期望,而是一个期望的分布。它将Total Reward的期望按照范围生成不同的桶,然后看Total Reward的期望在每个桶的中的概率,这样子可以帮助我们做出更多复杂的决策,比如分布的方差很大,那么可以认为这个Action的风险很大,尽量不要选择。

Rainbow 将以上的所有方式都用上,可以带来更好的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值