【李宏毅-强化学习笔记】p1-p2、PPO

一、policy gradient回顾

最核心的部分,加权求和就是期望
【李宏毅-强化学习笔记】p1-p2、PPO_第1张图片
  PPO是对policy gradient 的改进版,首先回顾下policy gradient并介绍两个tips。Policy gradient的背景是:我们现在有N笔数据,用这些数据来优化agent也就是π-function。其中每一笔数据是:
                 τ= {s1, a1,r1, s2, a2,r2,…,sT,aT,rT}

通过对奖励值微分,我们可以得到agent参数的步进值如下:
在这里插入图片描述
也就是说每一个行为都对参数的更新做了贡献,但是这其中有些不合理的地方,于是就有下面的改进:
 
  改进1:在相同的state/scenario下agent 可以采取不同的action,但是由于数据量有限,我们可能没有sampling所有的可能,这就会造成没有被采样到的action的几率降低(不进则退的道理),所有可以在整个trajectory的奖励值后面加一个baseline,只有大于baseline才会增加其可能性,以打乒乓球为例,得6分以下,我们可以认为agent的决策很不好,只有大于7分时才会强化相应的决策。这样可以缓解未采样的问题。Baseline的选取没有固定的方法,比如可以采用数据奖励值的均值。
  
  改进2:以中国历史为例,很多朝代都有盛世,也有衰败。我们评价一个王朝既要有整体的评判但也要有局部的分析。以汉朝为例,假如我们做一个皇帝的模型:一般认为汉朝是一个强盛的王朝,那么我们笼统的认为汉朝所有的皇帝都很棒,要提炼他们的性格来让后人学习,这肯定是不行的,因为汉朝既有贤明的君主,也有昏庸的皇帝,也就是说评价皇帝的功绩是后向的,要看他以及儿孙的国家举措,评价汉武帝的功绩,难道还要考虑刘邦吗?这是其一,另外一点,一个人的影响力也要加一个衰减系数,如果过了很多代出了一个不肖的儿孙,这也不能怪在老子头上。
  
  综上所述:policy gradient 被修改为如下的形式:
【李宏毅-强化学习笔记】p1-p2、PPO_第2张图片
  一般R-b被表述成advantage function Aθ(St, At)即蓝色箭头退出的结果,可以用来表征,某个s下采取a相对于其他的选择有多好,也就是说把皇位传给谁比较好。

二、from on-policy to off-policy

首先是一个辅助理解的例子:A在8号要做地铁到南京站,B要在9号做同班地铁到浮桥站,假设南京站到浮桥之间经过的时间是10min,那么B就可以参考A的出行时间合理安排自己的乘车计划。

A下次再乘车做出的修正称之为on-policy,B制定计划的方式称之为off-policy。对应到强化学习中,policy-gradient称为on-policy的方式,因为一笔数据使用之后要对agent进行update,那么数据就不能再用了,需要用新的agent采集新的数据,周而复始,使得效率很低。所以就有必要引入off-policy的方式。下面首先讲off-policy的理论基础:importance-sampling(重要性采样),然后论述其在policy-gradient中的应用。

2.1 importance sampling

【李宏毅-强化学习笔记】p1-p2、PPO_第3张图片
  p是x的pdf,现在求f(x)的期望,假如不方便用积分的方式,可以用采样来逼近,即我们基于p对x进行采样,然后计算f(x)的值,对这些值求平均即为f(x)的期望。进一步的,假如我们不方便从p(x)采样,而只能从q(x)采样,那么计算的过程就转化为下面的式子:基于q(x)对x采样,采样到x后分别代入到f,p,q中,最终也可以计算出f(x)的均值。
采样存在的问题:当采样量不足的时候,计算值会有很大的偏差,举例来讲:
【李宏毅-强化学习笔记】p1-p2、PPO_第4张图片
  根据p(x)的分布,我们可以推断出f(x)的期望值应该为负值。当采样充分时这可以通过importance来保证,即便q的分布和p差异很大。但是当采样不足时从q估计的f的期望可能是正的:
【李宏毅-强化学习笔记】p1-p2、PPO_第5张图片
  所以,采用importance-sampling必须有两个方面的考量:一是采样的数量要足够多的,二是两个分布尽量接近。

2.2 off-policy

现在我们就可以分析off-policy,假如θ’是负责生成实验数据的agent,现在θ’已经更新成θ,那么我们怎么来使用旧的实验数据呢?显然有:
在这里插入图片描述在这里插入图片描述
  也就是说对于新的agent,我们还是使用之前的实验数据τ,所不同的是获取的奖励值要乘以一个系数,假如新的agent更容易采集到的这个序列,即分子大于分母,那么步进值会被放大,这很好理解,假设分子是分母的两倍,那么假如我们现在用新的agent采集数据,那么τ可能会出现两次,所以就会被强化两次。也就是说,我们现在可以重复利用τ了。
【李宏毅-强化学习笔记】p1-p2、PPO_第6张图片
  说明:这个地方是每一个时间步对应的步进值,另外图片公式有错的地方,因为采用重要性采样,那么由于分布改变,那么原函数所有的θ都要转变为θ’,只不过要乘以一个权重系数。
  还有关于条件概率那一块,没有讲太清楚,此处记下我的理解。按照之前的讲法有:
在这里插入图片描述
  所以:
【李宏毅-强化学习笔记】p1-p2、PPO_第7张图片
  也就是说:
在这里插入图片描述
  最后的目标函数为:
在这里插入图片描述
  为什么奖励值最大化可以转化为这个目标函数呢?因为奖励值最大化等价于奖励值的增量(步进)最大化,等价于在每一个时间步向后看产生的奖励和是最大的。这个不存在是否远见的问题,因为考虑的是包括后面的奖励值的。那既然是最大化,为什么不用一个很大的常数呢?因为这个最大化是自适应的最大化是agent通过参数调整获得的最大化的奖励值。我们现在是在更新policy的参数,让机器学会做决定,如果强制给每一个决策乘以一个很大的系数,那么就不存在训练了,所有的决策都不会变。是原始随机的参数。

2.3 PPO

之前论述过重要性采样需要注意的问题,即两个分布不能差异太大,现在把他落实到argument中。实现的方法就是目标函数加约束:
【李宏毅-强化学习笔记】p1-p2、PPO_第8张图片
  J是我们想优化的目标,其微分影响agent的更新幅度和方向。现在加上散度之后,假如两个agent差异太大,那么将会削弱奖励值,假设J是一个大的正数,加上正则化后就会变得很小,含义就是现在两个agent差别太大,奖励值不具有参考性,由此带来的update幅度就会降低。(但是这样貌似会带来一个问题,假如本来的J是负值,这样就讲不通了)
  β的调整:可以设定两个限度,然后根据下面的规则来更新:
【李宏毅-强化学习笔记】p1-p2、PPO_第9张图片
  当差异太大时,加大罚项以削弱旧数据的影响;分布差异很小时,降低罚项防止对学习过程造成不好的影响。所以只有当分布差异不大时,J才更有主导性。

2.3.1 ppo algorithm

【李宏毅-强化学习笔记】p1-p2、PPO_第10张图片

2.3.2 ppo2 algorithm

【李宏毅-强化学习笔记】p1-p2、PPO_第11张图片
  是什么意思呢?下面两张图横坐标为两个概率的比值,绿色为原曲线即min函数第一项,蓝色为修剪之后的曲线,即min第二项。在绿线和蓝线中选一个较小者。归根结底是调整权重值。
【李宏毅-强化学习笔记】p1-p2、PPO_第12张图片
  当A>0时,奖励值为正,表示action很好。当商在一定范围内增大时意味着新的agent其实更有可能采样到这样的数据,所以函数可以保证其获得的奖励值可以线性增大,以获取更大的更新step,但是当商很大时,表示两个分布的差异太大,那么这个奖励的置信度降低,所以设定了一个商上限值防止更新的step太大。
  
  当A<0时,奖励值为负,表示action不好。当商在一定范围内降低时意味着新的agent其实不太可能采样到这样的数据,所以函数可以保证其获得的奖励值可以逐步靠近0,来减弱旧实验数据的影响,但是当商很小时,表示两个分布的差异太大,那么这个奖励的置信度降低,所以设定了一个下限值防止更新的step太小(step太小就学不到东西)。

你可能感兴趣的:(强化学习)