Press "Enter" to skip to content

李宏毅的强化学习视频用于梳理翻阅

本文主要是整理策略迭代的部分,重在阐明原理。李宏毅的视频,见网上。

 

最终说明OpenAI的默认强化学习算法PPO的部分。(Proximal Policy Optimization)

 

蓝色标记为有待查阅具体代码。不同于强化学习的值迭代的容易理解和表达,策略迭代更需要耐心、细心、思考。

 

优化目标

 

策略 是可以用,带着训练参数 的神经网络表示。策略 网络,输入当前观察值observation(state),输出action的概率。

 

该网络的输出action,如果是连续的,每个动作用一个神经元表示,大小可以为连续值。 动作是离散行为,则每个神经元输出一个概率。该概率表示为,该行为可能采取的可能性。在实际行为过程中,从该概率中进行采样。

 

下图,当输入状态S,则输出的三个离散动作的概率。

 

 

强化学习中,Agent的目标是,在MDP(马尔科夫决策过程)模型中,最大化累积奖励R。如下:在每一幕的运行过程中,最大化累积奖励R,为所有r的和。

 

 

在一条马尔科夫链中,其每一条轨迹的表达使用 表示。 _ ( )表示为该条轨迹  出现的概率。 ( _1 )为初始时,出现 _1的概率。 _ ( _1 | _1 )等,为在 _1下选择 _1的概率。之后的 ( _2 | _1, _1 )等类似,表示在 _1, _1下,能到达 _2的概率(转移概率)。

 

 

在每个轨迹  中,每一对s与a,产生一个奖励r。最终,在每一个轨迹中,产生一个累积奖励R。

 

针对同一个策略模型  ,其每次交互的环境、每次的行为等,都是不确定的,最终有不同的轨迹  。

 

但是,轨迹都是由该策略模型  得到的,并得到不同的累积奖励R。强化学习的优化目标,则是优化该模型,使得平均累积(期望奖励)奖励最大化。

 

如下的表达中,平均奖励(奖励期望)为,在每条轨迹 下产生的累积奖励,和该轨迹产生的概率 _ ( ),的乘积和。

 

使用期望的表达中,为,在概率 _ ( )下,采样轨迹 ,在所有轨迹  下的,平均奖励R。

 

 

策略梯度(Policy Gradient)

 

优化目标为奖励期望,使得其最大化,则直接通过求梯度方式,对其求梯度,使用梯度上升的方法,得到最大化期望奖励。

 

实质上,对奖励R求梯度,作为自变量的为 。 为策略模型 的参数(神经网络的权值、训练参数),实质上也就是,通过训练模型  ,最终获得最大的期望奖励R。

 

通过蓝色方框的公式调用,得到第二行,通过期望的表示变换,得到第三行左。

 

在执行足够多的N次轨迹后,首先,该N个轨迹,仍然是由策略  中的 决定的。在足够多的N下,基本服从期望下标 ~ _ ( )中的轨迹分布,所以可以约等。

 

第四行对第三行右,进行了进一步推导,将 _ 的时间线进行了展开。 但是是不是少了一个转移概率。

 

不过很明显的是,转移概率在轨迹中,是由环境Environment确定的,因此使用 作为自变量求梯度,其为常数表示,不影响最终梯度方向。

 

 

因此,策略梯度的训练表示如下:其中的梯度在上图中已经得到计算。

 

 

在实际实现过程中,如使用TensorFlow计算梯度,其计算过程可以 和交叉熵有关 。

 

 

策略梯度的实现过程与修正

 

策略梯度的计算流程上:

 

1 根据Agent和环境的交互,通过策略模型 得到一条轨迹 。在该轨迹结束后,得到累积奖励R。

 

2 使用梯度上升的方法,最大化R。在梯度上升的计算过程中, _ 其实就是策略网络  输出的概率,实质上也就是梯度上升,改变  ,从而最大化R。

 

重复以上步骤,使得R越来越大即可。

 

策略梯度在应用过程中发现有两个问题:

 

1 在一些强化学习环境中,轨迹 下的所有行为奖励,都是正的奖励值,则根据公式,每次都是梯度上升。

 

那幺,使得R最大化的过程中,即,策略网络  被训练时,采样的影响导致,针对同一个状态observation(state)时,输出的行为概率分布更倾向于采样更多的地方训练。

 

在同一状态下,abc三个行为的概率和为1,理想情况是b的动作最优。但是a采样次数更多而b更少,则根据梯度上升时R都是大于0,策略网络对a的行为强度增强,导致了相对于b行为的强度减少。同理图中第二行,当a没有被采样一定数量多,则a会相对于理想情况下减少。

 

 

因此应用过程中,对R增加baseline,使得R可以出现负值,只增加哪些高于平均奖励的R对应的轨迹策略。出现了负值,则表示该轨迹不够优秀,应该降低,采样越多,则降低越多。

 

 

2 奖励R的度量问题。在策略网络  下,整条轨迹的累积奖励R,不足以度量  中每一个输出行为概率的好坏。每个输出应该对应到每个奖励,而不是整条轨迹R。

 

在轨迹中,当前行为a,在一定程度上决定了,后面的状态-行为对,越往后的状态行为对,其决定性的影响越小。因此,当前行为a的奖励r,为该行为和之后所有行为的和。并使用 衰减因子,模拟其决定性影响越小导致的本次行为a的奖励越小。

 

 

重要性采样

 

重要性采样表示为:无法得知f(x)在p分布上的期望,则使用任意的分布q,来间接得到f(x)在p分布上的期望。

 

具体操作如第二行,最终:f(x)在p分布上的期望,转化为了f(x)*p(x)/q(x)在分布q上的期望。

 

 

虽然期望相等,但是方差是不等的。下图中,第一行为重要性采样,第三行为方差展开为期望形式,第四行前者又使用了一次重要性采样,后者直接代换。

 

结论是,重要性采样前后使用的未知分布p和已知分布q,若比值为1(完全相同),则方差也相同。比值越偏,方差越偏。

 

方差越偏导致的问题是, 当采样次数不够多,则导致重要性采样定理的前后期望值的偏差,出现的可能性越大。

 

 

使用如下所述,前者在p分布上的期望,f(x)*p(x)的累加和,基本为负值。后者,当采样点过少时,由于q(x)集中在f(x)的正值部分,虽然p(x)*f(x)/q(x)也很小,但是其值为正。只有采样到一个另外的点,p(x)*f(x)/q(x)又对应了很大,才导致了期望为负。才使得重要性采样定理的前后期望一致性。

 

 

在线策略到离线策略

 

on-policy,其过程和上述策略梯度一样:策略模型 和环境交互获得轨迹,然后使用该轨迹进行训练。重复该过程。

 

off-policy,其策略模型 ‘ 和环境交互得到轨迹,策略模型 学习该轨迹,而策略模型 自身没有和环境进行交互。

 

在线策略中,其学习完的轨迹,直接丢弃不能再学习了,因为模型 学习了自身的轨迹以后,模型有了变化,之前的轨迹不再是由该变更过的模型 产生。

 

离线策略中,其使用另外的模型 ‘,获得的多条轨迹,用于策略模型 的学习,学习完以后的轨迹,因为 ‘没有改变,其生成的轨迹仍然可用。

 

(认为是学习的目标,本应该是一个固定的分布,而不是一个变来变去的分布)相对于在线策略,离线策略效率,因为轨迹的生成和学习过程的方便性,而变得更高。

 

′对应于模型 ‘,使用重要性采样定理,将在线策略转化为离线策略:

 

其中第一行为在线策略(之前的策略梯度的大致表现形式,从 中获得轨迹),第二行使用 ‘中采样,获得轨迹,计算梯度。

 

在多次采样后,二者的梯度应该相等的。

 

 

如下是策略梯度的详细表示形式,并使用重要性采样定理进行的变换。第一行为在线策略,第二行变为离线策略,由于离线策略的奖励部分A,为 ‘所产生,则变为了 ^( ′ )。 变了以后和之前的式子,还能相等吗,不能吧,假设能够,继续推导

 

第三行中, _ ( _ , _ )表示的是 _ , _ 出现的概率,通过概率逻辑,变换为两项。 而后项的上下两个就姑且认为相等了,比值为1。其实应该是不等的。但是不易求得,并认为相等。

 

最后一行,通过图中的蓝色框公式,反推得到的f(x),即离线策略下的优化目标函数J( 其实和原始情况下的目标函数R的期望类似吧 )。

 

 

PPO与TRPO

 

TRPO (Trust Region Policy Optimization)算法是先于Proximal Policy Optimization (PPO)算法提出的。

 

在TRPO中,其实使用的方法就是在线转离线的策略了,并额外要求 , ′有一个相似性(KL散度,数据的原始分布和近似分布之间的相似性)

 

在PPO中,将相似性写入了优化目标中。要求优化目标尽可能的大,则KL散度尽可能小。

 

 

KL散度过小,则 ‘和 之间的相似度高,可能学不到什幺吧?相似度过低,则因为重要性采样的问题,方差影响加之采样量不足,使得前后等式不成立。

 

这里的 ^ 表示有多个 ‘,用于生成轨迹。

 

 

对比PPO2,其实质仍然是控制 , ′的相似性。但是没有使用KL散度,而是使用clip方法,限制两者的比值在一个范围内。使得当A大于0增强该策略,或者A<0压制该策略的强度,都在一个范围内。

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注