[强化学习]PG算法

PG算法

策略梯度(Policy Gradient)

PG是一个蒙特卡洛+神经网络的算法。

蒙特卡洛

步骤

  1. 我们把智能体放到环境的任意状态;
  2. 从这个状态开始按照策略进行选择动作,并进入新的状态。
  3. 重复步骤2,直到最终状态;
  4. 我们从最终状态开始向前回溯:计算每个状态的G值。
  5. 重复1-4多次,然后平均每个状态的G值,这就是我们需要求的V值。

原理

  • 第一步,我们跟着策略往前走,一直走到最后,期间只需要记录每一个状态转移和获得的奖励r。
  • 第二步,从终点往前走,一边走一边计算G值。G值等于上一个状态的G值(记为G’),乘以一个折扣率($\gamma$),再加上r。

  • G值的意义在于,在这一次游戏中,某个状态到嘴中状态的奖励综总和。(理解时可以忽略折扣)。

当我们进行多次实验后,可能会经过某个状态多次,也会有多个G值。V值就是所有G值之和的平均值。

再进一步

  • G的意义:在某个路径上,状态S到嘴中状态的总收获。
  • V和G的关系:V是G的平局数。

以上图为例,其中有100次经过S点,经过S点后有4条路径到达最终状态,计算G值:

策略A采用平均策略,这时候V=5.

现在采用策略B,由于策略改变,经过某条路径的概率也会发生变化。因此最终试验经过的次数就不一样了。

缺陷

在实际引用中,蒙地卡罗虽然比动态规划消耗要少一点;而且并不需要知道整个环境模型。

但蒙地卡罗有一个比较大的缺点,就是每一次游戏,都需要先从头走到尾,再进行回溯更新。如果最终状态很难达到,那小猴子可能每一次都要转很久很久才能更新一次G值。

PG算法

  • 从state出发,可以采取三个动作。
  • 假设智能体对这一无所知,那么可能采取平均策略0=[33%,33%,33%]。
  • 智能体出发,选择动作A,到达最终状态后开始回溯,得到G=1。

  • 我们可以更新策略,因为该路径是选择了A而产生的, 并获得G=1;因此我们需要更新策略:让A的概率提升,相对的,BC的概率降低。得到新策略1=[50%,25%,25%]。
  • 虽然B的概率低,但仍有可能被选中。第二轮刚好选中B。
  • 智能体选择了B,到达最终状态后回溯,计算得到G=-1.

  • 所以我们对B动作的评价较低,并且希望以后少选择B,因此降低B选择的概率,相对的,AC的选择将会提高。
  • 得到新策略:2=[50%,15%,30%].
  • 最后随机到C,回溯计算后,得到G=5.

  • C比A还要多得多。因此这一次更新,C的概率需要大幅提升,相对地,AB概率降低。 3 = [20%,5%,75%]

当然,以上的例子数值上是不严谨的和精确的。具体怎样调整策略的概率分布,需要更详细的制定。