作者 | Jane

导读

本文首要介绍了强化学习(Reinforcement Learning,RL)的基本概念以及什么是RL。强化学习让智能体经过与环境的交互来学习怎样做出决议计划,以取得最大的累积奖赏。文章还介绍了战略梯度(Policy Gradient,PG)和近端战略优化(PPO)等强化学习算法。

全文7099字,预计阅览时刻18分钟。

01 强化学习(Reinforcement Learning,RL)

1.1 基本概念&什么是RL

强化学习(reinforcement learning,RL)专注于让智能体(agent)经过与环境的交互来学习怎样做出决议计划,以使其在不断改变且不确定的环境中取得最大的累积奖赏。

这个进程能够用以下几个要从来描绘:

智能体(Agent):智能体是履举动作并与环境进行交互的实体。它能够是一个机器人、一个虚拟人物、一个算法等。

环境(Environment):环境包含智能体所处的一切上下文,包含外部条件、状况变量和其他影响智能体的因素。

动作(Action):智能体能够在环境中履行的操作,这些操作或许会改变环境的状况。

状况(State):状况是描绘环境的当时情况的信息。智能体的决议计划一般依赖于当时状况。

奖赏(Reward):在每个时刻步,智能体履行一个动作后会取得一个奖赏信号,用于指示动作的好坏。方针是最大化累积奖赏。

战略(Policy):战略界说了智能体怎样依据当时状况挑选动作。强化学习的方针之一是找到一个最优战略,使智能体能够取得最大的累积奖赏。

价值函数(Value Function):价值函数衡量了在某个状况下履行某个战略能够取得的预期累积奖赏。这个函数协助智能体评估不同状况的重要性。

学习进程:强化学习的中心是智能体经过测验不同的动作并调查奖赏信号来学习适应性战略。它能够运用不同的算法,如Q-learning、Deep Q-Networks(DQN)、Policy Gradient等。

百度工程师浅析强化学习

△图1 强化学习进程

其中状况(State)是对整个环境的完好描绘,包含了一切对智能体的决议计划和举动有影响的信息。状况一般用来指导智能体的决议计划,由于它提供了有关环境当时状况的全部信息。

观测(Observation)则是对状况的一种笼统描绘,它或许会忽略或省略一些状况信息。在实践问题中,有时分智能体无法直接观测到完好的状况,而只能获取到一部分信息,即观测。这或许是由于某些信息无法直接丈量,或者由于为了简化问题而对状况进行了笼统。

因而,智能体依据它的观测来做出决议计划,而不是直接运用完好的状况。这就需求智能体具备从观测中学习有关状况的信息的能力,以便更好地进行决议计划和举动。

下面举一些可运用强化学习的示例:

1、在电子游戏中,摇杆是智能体,主机是环境,显示屏上的游戏画面(像素)是观测,击杀怪物得分则是奖赏。

2、在阿法狗围棋对弈中,阿法狗是智能体,人类棋手是环境,棋局是观测,围棋的输赢则是奖赏。

百度工程师浅析强化学习

在强化学习中,智能体继续与环境进行交互,采纳一系列的动作,然后形成一个状况和动作的序列,这个序列被称为轨道(trajectory):

百度工程师浅析强化学习

一个交互序列被称为一个回合(episode),在每个回合中,智能体依据当时状况挑选动作,与环境互动,并依据奖赏信号进行学习和战略优化,以取得最大化累积奖赏。

这儿需求留意的是,环境对咱们来说是黑盒,是不可控的,它在当时状况下跳转到下一状况是遵守必定的散布的,也便是说它是有必定的随机性的,那么它产出的奖赏也具有了必定的随机性。咱们可控的是actor的policy,即能够经过学习,让policy在面对状况 s 时采纳一个能让他取得最大奖赏的action。所以实践上咱们的方针是最大化希望的累积奖赏(expected cumulative reward)

1.2 RL和监督学习的区别

监督学习:

1. 数据独立同散布(i.i.d.): 监督学习假设样本是从一个未知散布中独立地采样得到的,数据之间没有时序相关。

2. 标签信息: 在监督学习中,每个样本都有正确的标签信息,即模型需求学习从输入到标签的映射联系。

3. 练习方针:监督学习的方针是使模型的猜测尽或许地接近实在标签,一般经过最小化猜测与实在标签之间的损失函数来完成。

4. 局限性: 监督学习在需求很多标记数据、难以获取一切或许状况的标签信息或者数据之间存在时序相关的情况下或许受限。

强化学习:

1. 时序相关数据: 强化学习中智能体的观测是时序相关的,当时的决议计划会影响未来的观测和奖赏。

2. 延迟奖赏: 强化学习中智能体在做出决议计划后不会当即得到奖赏,奖赏或许在未来的时刻步骤才会呈现,这就需求智能体经过试错来学习哪些决议计划导致了终究的奖赏。

3. 探究与学习: 强化学习中智能体需求在探究和运用之间找到平衡,以发现能够最大化长期累积奖赏的有效战略。

4. 超越人类体现: 强化学习的一个优势在于它能够在某些情况下超越人类体现,由于智能体能够自主探究环境并发现人类难以想象的优化战略。

1.3 RL算法类型

按不同类型的智能体办法区分:

1.依据价值的智能体(Value-Based Agents): 智能体显式地学习价值函数,然后从学习到的价值函数中隐式地推导出战略,例如Q-learning和Sarsa,这些算法在练习进程中更新状况-动作值函数(Q值),然后依据Q值挑选最佳动作。

2.依据战略的智能体(Policy-Based Agents): 智能体直接学习战略,即在给定状况下挑选每个动作的概率散布。战略梯度(Policy Gradient)办法是一种常见的依据战略的强化学习办法,它经过梯度下降或其他优化算法来更新战略参数,以最大化累积奖赏。

3.艺人-评论员智能体(Actor-Critic Agents): 这是一种归纳了前两种办法的智能体。艺人(Actor)担任学习战略,而评论员(Critic)担任学习价值函数。艺人依据战略挑选动作,评论员依据环境的反馈和学习的价值函数提供有关动作的评估。这种结合能够协助处理价值和战略学习中的某些困难问题,而且在实践运用中体现出很好的性能。

按是否需求对环境建模来区分:

1.Model-Based 办法:需求对环境建模,包含状况搬运函数(描绘状况之间怎样转化)和奖赏函数(描绘在每个状况下取得的奖赏)。一旦模型被树立,智能体能够在模型中进行”心算”,即经过模型进行推演,而无需实在地与环境进行交互。这使得智能体能够在模型上进行试错,寻觅在实在环境中体现良好的战略。可是,这种办法的要害挑战在于怎样精确地树立一个模型,由于环境或许非常杂乱且不确定。

2.Model-Free 办法:不需求显式地构建环境模型,而是智能体直接与环境交互,经过测验和调查来学习战略。这种办法一般需求更多的交互时刻和数据,由于智能体需求经过实践的试验来逐渐改善战略。Model-free 办法能够分为依据价值和依据战略的办法,前者重视学习状况或状况-动作的价值函数,后者则直接学习战略。

在实践运用中,”model-based”办法或许需求更少的交互次数来找到较优战略,由于它在模型上进行猜测和规划。可是,这个模型的树立或许会面对挑战,尤其是在杂乱和不确定的环境中。”model-free”办规律愈加适用于无法精确建模的情况,但或许需求更多的实践交互来学习战略。挑选运用哪种办法一般取决于问题的性质以及可用的数据和核算资源。

02 战略梯度(Policy Gradient,PG)

强化学习的3个中心组成部分:actor(policy、agent)、环境奖赏函数。环境和奖赏函数不是咱们能够控制的,咱们能做的是调整Actor的战略,使得它取得最大的奖赏。战略一般记作\pi,假如运用深度学习来做强化学习,战略便是一个network,其参数记作\theta。其输入是观测(或states),输出是动作空间的一个概率散布 。(同一个states,同一个env,所采去的action也是或许不同的,所以这儿是概率散布,action是具有必定的随机性的)。

百度工程师浅析强化学习

△图2 神经网络作为战略

奖赏的稀疏性和延迟性?

假如把玩一场游戏看做一个回合(episode),在一个episode里,actor不断与环境进行交互,即在s1时采纳了action a1,并取得奖赏r1,环境接收a1后跳转到s2,actor看到s2后采纳了action a2,并取得奖赏r3,…,直至到达某个条件完毕游戏。这一个episode里,把环境输出 s 和actor输出 a 以及奖赏输出 r 的序列组合起来,就形成了一个轨道(trajactory):

百度工程师浅析强化学习

百度工程师浅析强化学习

△图3 最大化奖赏

核算某个轨道产生的概率便是:

百度工程师浅析强化学习

方针是经过调整actor的参数\theta,最大化整个轨道中取得的total奖赏:R()=∑t=1TrtR(\tau)=\sum_{t=1}^T r^t

可是由于采纳action的随机性,环境输出states的随机性,得到的reward也是有随机性的,所以在核算中咱们需求最大化的不是某个回合的奖赏,而是最大化希望奖赏。(直观上了解:平均含义上的奖赏最大化了,那么某个详细的回合他的奖赏也不会小到哪儿去),所以方针便是最大化R()R(\tau)的希望值

百度工程师浅析强化学习

最大化问题,能够运用梯度上升(gradient ascent)来求解,运用梯度更新公式来更新参数,这便是战略梯度算法。(中心便是采样数据,更新参数,再采样数据,再更新参数。。。)

百度工程师浅析强化学习

接下来便是核算R\bar{R_{\theta}}的梯度

百度工程师浅析强化学习

再看下R=∑R()p()=E∼p[R()]\bar{R_{\theta}} =\sum_{\tau} R(\tau)p_{\theta}(\tau) = E_{\tau \sim p_{\theta}} [R(\tau)] 希望的这个公式的含义:从散布p()p_{\theta}(\tau)采样一个轨道 \tau,核算R()R(\tau)的希望值,便是希望奖赏(expected reward)。咱们要最大化希望奖赏。即相当于咱们穷举一切的轨道,每个轨道对应一个概率。但这个希望无法核算,由于无法穷举一切的轨道。怎样处理呢?=>大数定理:做N次采样,用平均代替希望。

百度工程师浅析强化学习

留意,p(s1)p(s_1)p(st+1∣s_t,a_t)p(s_{t+1}|s\_t,a\_t)来自环境,由环境决议,\theta与 无关,因而∇log⁡p(s1)=0\nabla \log p(s_1)=0∇∑t=1Tlog⁡p(st+1∣s_t,a_t)=0\nabla\sum_{t=1}^{T}\log p(s_{t+1}|s\_t,a\_t)=0

2.1 2个问题

接下来讨论2个问题:

1.假如采纳每个action的奖赏都是正的,仅仅有大有小,会呈现什么问题?

2.整个episode里每个(s, a)pair都运用了同一个total reward适宜吗?这样公平吗?一场游戏输了那里边的每个step的操作都是失利的吗?一场游戏赢了,中间就不会有失误吗?

怎样处理这些问题?

处理问题1:添加baseline

假如采纳每个action的奖赏都是正的,仅仅有大有小,会呈现什么问题?

例如假如一切的 r >= 10,那么r=10就相对来说是『负』的。也便是说在采样中,没有被采样到的动作的概率会被下降,但该动作不必定是欠好的动作,因而奖赏最好是有正有负的,这能够添加baselinse处理:

百度工程师浅析强化学习

经过这种办法,当\(R(\tau)-b>0\)时即总奖赏\(R(\tau)>b\),就让\((s,a)\)的概率上升;当\(R(\tau)<b\),即使\(R(\tau)\)是正的,但假如它值很小也是欠好的,就让\((s,a)\)的概率下降。

bb可经过对\tau值取希望来进行设置, 即核算\tau的平均值,令b≈E[R()]b \approx E[R(\tau)]。实践中把练习期间的\(R(\tau)\)的值不断记下来然后核算平均值,用来设置b。

处理问题2:分配适宜的分数

1、reward-to-go:未来的总报答

∇log⁡p(atn∣stn)\nabla\log p_{\theta}(a_{t}^n|s_t^n)前面的R()−bR(\tau)-b看作是它的权重,表征了动作a的好坏。这个权重原先是整个轨道上奖赏的总和,现在改成从某个时刻tt开端,一直到游戏完毕得到的一切奖赏的总和。也便是说核算某个状况-动刁难的奖赏的时分,不再是把整场游戏得到的奖赏全部加起来,而是只核算从这个动作履行今后得到的奖赏。直观上也比较简单了解:由于这场游戏在履行这个动作之前产生的事情是与履行这个动作是没有联系的,所以在履行这个动作之前得到的奖赏都不能算是这个动作的奉献。咱们把履行这个动作今后产生的一切奖赏加起来,才是这个动作实在的奉献。

百度工程师浅析强化学习

2、discount有扣头的:衰减的报答

进一步,咱们在未来的奖赏中引入扣头因子。为什么要把未来的奖赏做一个扣头呢?由于虽然在某一时刻,履行某一个动作,会影响接下来一切的成果(有或许在某一时刻履行的动作,接下来得到的奖赏都是这个动作的劳绩),但在一般的情况下,时刻拖得越长,该动作的影响力就越小。

百度工程师浅析强化学习

扣头因子∈[0,1]\gamma \in [0,1],一般设置为0.9或0.99。其中Gt=rtn+rt+1n+2rt+2n+3rt+3n+…+Tn−trTnn=rtn+Gt+1G_t = r_t^n + \gamma r_{t+1}^n + \gamma^2 r_{t+2}^n + \gamma^3 r_{t+3}^n +…+ \gamma^{T_n-t} r_{T_n}^n =r_t^n+\gamma G_{t+1}

。从GtG_t的展开式能够看到未来的奖赏在离t时刻越远时,扣头就越多,这样明显更合理。

2.2 重要性采样

战略梯度算法的缺陷:

1.采样功率低:每次当时actor战略与环境交互搜集到一批练习材料后,战略一更新,这批数据就不能再运用了,由于actor已经产生了改变,需求从头拿新的actor再次与环境与做交互,拿到新的一批练习材料。而与环境做交互是非常费时刻的(相关于在GPU上作练习),整个进程或许大部分时刻在做交互搜集(采样)数据。

2.迭代步长过长,或步长/学习率难以确定,练习不稳定。

采样功率低的问题,考虑下能不能用另外一个战略′\pi_{\theta’}和一个actor′\theta’与环境交互,用′\theta’采样到的数据去练习\theta,而且运用这些数据去让\theta屡次履行梯度上升,屡次更新参数, 这样就能大幅提高功率。

怎样完成这个进程呢?

百度工程师浅析强化学习

这个公式能够看做是先从qq里边从采样xx,再核算f(x)p(x)q(x)f(x) \frac{p(x)}{q(x)},再取希望值。所以即使无法从 pp 里边采样数据,但从qq里边采样数据,咱们仍然能够经过这种变换来核算从采样pp代入xx今后的希望值。由于是从qq采样数据,所以咱们从qq采样出来的每一笔数据,都需求乘一个p(x)q(x)\frac{p(x)}{q(x)}来批改这两个散布的差异,这个批改银子就叫做重要性权重(importance weight)。

关于用 actor\theta采样出sts_tata_t的状况-动作的对时,咱们运用状况-动刁难的优势(advantage):A(st,at)A_{\theta}(s_t,a_t), 来表示累积奖赏减去基线这一项,这一项代表的是在状况sts_t采纳动作ata_t的好坏(有没有优势)。假如 A(st,at)A_{\theta}(s_t,a_t)是正的,就要增大概率;假如是负的,就要减小概率。

那么回到上面战略梯度的采样功率的问题,就能够考虑,由一个p’p_{\theta’}也便是另一个actor(其实便是需求更新的actor的一个副本)去和环境做交互然后搜集采样数据,再用这个数据去屡次更新pp_{\theta}以提高采样功率。也便是说运用重要性采样,就能够把公式转化为:

百度工程师浅析强化学习

上式第3行运用条件概率公式展开,最后去掉p(st)p_{\theta}(s_t)ptheta‘(st)p_{\\theta‘}(s_t) 得到终究的简化的成果。所以依据梯度公式咱们能够写出方针函数:

百度工程师浅析强化学习

重要性采样处理了采样功率的问题,但也或许会引入新问题。咱们再来看下重要性采样的公式:Ex∼p[f(x)]=Ex∼q[f(x)p(x)q(x)]E_{x\sim p}[f(x)]=E_{x\sim q}[f(x)\frac{p(x)}{q(x)}],虽然它们希望是持平的,但它们的方差怎样呢?依据方差核算公式Var[X]=E[X2]−(E[X])2{Var} [X]=E[X^2]-(E[X])^2,别离核算出f(x)f(x)f(x)p(x)q(x)f(x)\frac{p(x)}{q(x)}的方差:

百度工程师浅析强化学习

能够看到2个方差的第一项是不同的,Var⁡x∼q[f(x)p(x)q(x)]\operatorname{Var}_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right]的第一项多乘了p(x)q(x)\frac{p(x)}{q(x)},假如p(x)q(x)\frac{p(x)}{q(x)}距离很大,p(at∣st)p_{\theta}\left(a_{t} | s_{t}\right)的方差就会很大。也便是说假如p(at∣st)p_{\theta}\left(a_{t} | s_{t}\right)p′(at∣st)p_{\theta’}\left(a_{t} | s_{t}\right) 相差太大,即这两个散布相差太多,重要性采样的成果就会欠好。也便是说经过有限次的采样,假如p(x)p(x)q(x)q(x)的距离过大,咱们是无法保证这个希望的等式在采样数据上必定建立。

怎样避免它们相差太多呢?这便是TRPO和PPO要做的事情。

2.3 TRPO

**信任区域战略优化(trust region policy optimization,TRPO)**便是对\theta′\theta’进行一个束缚,让它们的 KL 散度小于 :

百度工程师浅析强化学习

虽然TRPO处理了散布距离不会很大的问题,但核算有难度(引入束缚项,运用拉格朗日的对偶法处理后,采用共轭梯度法进行优化),因而咱们一般运用在完成上更简单但性能差不多的PPO。

03 近端战略优化(PPO)

3.1 PPO1(近端战略优化赏罚(PPO-penalty))

PPO(ProximalPolicyOptimization) 处理TRPO核算量大的问题,不是把束缚放在条件里,而是直接放到方针函数里:

百度工程师浅析强化学习

百度工程师浅析强化学习

其中赏罚项KL(,k)\beta \mathrm{KL}\left(\theta, \theta^{k}\right)称之为自适应KL散度(adaptive KL divergence),\beta能够动态调整,其调整战略为:

  • 假如 KL(,k)>KLmaxKL(\theta,\theta^k)>KL_{max},则添加\beta

  • 假如 KL(,k)<KLminKL(\theta,\theta^k)<KL_{min},则减小\beta

3.2 PPO2(近端战略优化裁剪(PPO-clip))

假如咱们觉得核算 KL 散度很杂乱,那么还有一个PPO2算法,PPO2 即近端战略优化裁剪。近端战略优化裁剪的方针函数里边没有 KL 散度,其要最大化的方针函数为

百度工程师浅析强化学习

  • 裁剪(clip)函数,裁剪函数是指,在括号里边有3项,假如第一项小于第二项,那就输出1−1-\varepsilon ;第一项假如大于第三项,那就输出 1+1+\varepsilon

  • \varepsilon是一个超参数,是咱们要调整的,能够设置成 0.1 或 0.2 。

为什么这个式子就能够做到 pp_{\theta}p′p_{\theta’}距离不会太大呢?

百度工程师浅析强化学习

  • 假如A>0A>0,也便是某一个(at,st)(a_t,s_t)是好的,则咱们希望增大这个状况-动作pair的概率。也便是想让p(at∣st)p_{\theta}(a_t∣s_t)越大越好,但它与pk(at∣st)p_{\theta^k}(a_t∣s_t)的比值不能超过1+1+\varepsilon

  • 假如A<0A<0,也便是某一个(at,st)(a_t,s_t)是欠好的,那则咱们希望把p(at∣st)p_{\theta}(a_t∣s_t)减小,当减到比值是1−1-\varepsilon的时分中止。

通用这个clip的约束,咱们不会让p(at∣st)p_{\theta}(a_t∣s_t)pk(at∣st)p_{\theta^k}(a_t∣s_t)距离太大,而且完成这个其实也很简单,如下:

ratios = paddle.exp(cur_batch_log_probs - batch_log_probs.detach())
surr1 = ratios * A_k
surr2 = paddle.clip(ratios, 1-self.clip, 1-self.clip) * A_k
actor_loss = -paddle.minimum(surr1, surr2) # 负号,把最大化问题转化为最小化问题ratios = paddle.exp(cur_batch_log_probs - batch_log_probs.detach())
surr1 = ratios * A_k
surr2 = paddle.clip(ratios, 1-self.clip, 1-self.clip) * A_k
actor_loss = -paddle.minimum(surr1, surr2) # 负号,把最大化问题转化为最小化问题

04 总结

百度工程师浅析强化学习

——END——

参考材料:

[1]datawhalechina.github.io/easy-rl/#/

[2]speech.ee.ntu.edu.tw/~hylee/ml/2…

引荐阅览:

浅谈一致权限管理服务的规划与开发

百度APP iOS端包体积50M优化实践(五) HEIC图片和无用类优化实践

百度知道上云与架构演进

百度APP iOS端包体积50M优化实践(四)代码优化

百度App启动性能优化实践篇