内容纲要

欢迎转载,作者:Ling,注明出处:强化学习教程: 07-Model-Free Policy Gradient and Actor-Critic

 

前面所介绍的都是Value-Based Learning,本章将介绍Policy-based Learning

Value-based Learning:绕路法

  • 先计算值函数,V或者Q
  • 然后根据V或者Q,按照greedy或者ε-greedy进行策略选择

Policy-based: 直接进行策略选择

我们将按照如下思路进行学习:

  • 基于策略的优缺点
  • 策略梯度
  • MCPG,也就是REINFORCE算法
  • 降方差,引入Critic,实现Actor-Critic算法
  • Critic带来了偏差,用兼容值函数近似解决
  • 进一步降低方差,使用基线B(s)

Policy-based RL优缺点:

优点:

  • 更好的收敛性质,因为是直接对策略进行操作的,而基于值的方法稍微绕了一些。
  • 在高维和连续的动作空间里很有效。因为基于值的方法的话,必须要从价值中进行最大值的运算,动作很多的情况下很低效。
  • 可以学习到随机的策略,这个很重要,下面会说到。

缺点:

  • 比起全局最优,更倾向于收敛到局部最优
  • 对策略进行估计很低效,而且高方差

随机策略的重要性:

剪刀石头布:

剪刀石头布是完全随机的,因此用一个确定的策略,比如只出石头,是不太合理的,随机的策略更加合理。

方格世界:

RL_07_001

如果按照一个确定策略的话,比如在灰色各自,周围情况完全一样,我们都向右走

RL_07_002

总有一个灰色各自策略是错误的,这样即使用ε-greedy选择策略,迭代时间仍旧会很长

所以随机策略最佳

如果随机策略存着的话,一般会比确定策略更优,即如果不是很确定,就尽可能随机

RL_07_003

如灰色格子随机,白色格子确定

策略梯度:

策略目标函数:

一步目标函数:就是走一步,如何得到最优策略

我们用θ表示Π,我们的目标就是,寻找到最佳的θ,使得Π策略最佳

如何判断一个策略是最佳?三种方法

RL_07_004

  • 方法一:片段环境下使用开始价值,从s1出发,采用策略,得到的价值最佳,该策略为最佳策略
  • 方法二:连续环境下使用平均价值,一个状态的价值=一个状态按策略执行的价值*策略从该状态出发的概率分布,统计所有状态的价值,让价值最高的策略为最佳策略
  • 方法三:连续环境下使用每一步的平均回报,

一个状态为起始执行某个策略的价值=一个状态采取一个action的概率乘以相应的Reward,求所有action相应的值,

一个状态的价值=一个状态按策略执行的价值*策略从该状态出发的概率分布,求所有状态的价值,让价值最高的,为最佳策略

策略最优化:就是如何根据目标函数,求出最优θ

基于梯度:

  • 梯度下降法
  • 牛顿法
  • 。。。

不基于梯度:

  • 爬山算法
  • 遗传算法
  • 。。。

我们主要采用梯度下降法:主要是要求梯度

梯度计算:

梯度:

RL_07_005

做差法:我们在神经网络中常见的方法

RL_07_006

然后以此更新θ

RL_07_007

一步目标函数:这里用了一步价值奖励R

RL_07_008

一步梯度:

RL_07_009

其中第一个式子是由该公式得到

RL_07_010

其中:

RL_07_011

称为Score function

多步梯度:也叫策略梯度定理,将一步R替换成多步Q即可

RL_07_012

Monte-Carlo Policy Gradient (REINFORCE): 就是将Q换成G,公式中的Vt实际上就是Gt,长期回报

RL_07_013

特点:

  • 无偏差
  • 高方差,所以我们需要降低方差

Actor-Critic:由于引入Gt导致了高方差,我们换回Q,Q可以是一个用w参数表示的近似函数

  • Critic:更新w, 从而更新Q
  • Actor: 在Critic建议的Q下,通过梯度下降算法更新θ

梯度以及θ更新:

RL_07_014

我们目标是更新θ,但是引入Q后,Q是w的函数,所以我们也需要更新w

如何更新w?

我们之前学过Sarsa,Sarsa(λ),我们知道如何更新Q

Sarsa更新公式如下:

RL_07_015

这里的Q没有表示成w的函数,所以直接更新即可,而现在,我们将Q表示成了w的函数,所以需要对w进行更新

完整θ和w更新算法

Action-Value Actor-Critic: QAC算法

RL_07_016

  • 1和3就是更新w的公式,其中1来自Sarsa,3就是更新w的方法,而4是特征向量x,想想梯度更新是如何更新参数,就可以理解该公式了
  • 2是前面更新θ的公式

Actor-Critic算法的偏差问题:

引入Q会导致偏差,如何解决偏差,引入兼容进士函数。

兼容近似函数Q要满足两个条件

RL_07_017

Q关于w的梯度要等于logΠ关于θ的梯度

Q的用w计算的值和Q按照θ对应的策略计算的差要越小越好

这样的Q就是兼容近似函数

策略梯度就不再是近似的了,而是确切的就是策略梯度

具体证明看书

 

如果能保证上面性质,我们可以减小方差,但是还不够,为了进一步降低方差,我们引入Baseline

当Q减去B之后,我们希望方差会减小,同时我们又希望期望不变,所以需要满足

RL_07_018

其中一个可选的B是

RL_07_019

改进后,我们称为A:advantage function

RL_07_020

A是等于Q-B

RL_07_021

用A替代Q之后得到如下梯度公式:

RL_07_022

如何更新V和Q,用TD learning

RL_07_023

除此之外

将Q替换成TD error,这就是TD Actor-Critic

各种变形如下:

RL_07_024

其中:

RL_07_025

总的流程:

基于策略的优势->策略梯度->MCPG,也就是REINFORCE算法->降方差,引入Critic,实现Actor-Critic算法->Critic带来了偏差,用兼容值函数近似解决 ->进一步降低方差,使用基线B(s)