一、策略梯度
与基于价值 (value-based)的算法不同,这类算法直接对策略本身进行近似优化,在这种情况下,可以将策略描述成一个带有参数 θ \theta θ 的连续函数,该函数将某个状态作为输入,输出的不再是某个确定性的离散动作,而是对应的动作概率分布,通常用 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(a∣s) 表示,称作随机性策略。
1.1 基于价值算法的缺点
以DQN为代表的算法在众多任务上取得了不错的效果,且具备较好的收敛性,但这类算法也存在一些缺点。
- 无法表示连续动作:DQN等算法是通过学习状态和动作的价值函数来间接指导策略,因此只能处理离散动作空间的问题,无法表示连续动作空间的问题。(机器人的运动控制问题,连续动作空间是非常常见的,比如控制机器人的运动速度、角度等);
- 高方差:基于价值的方法通常都是通过采样的方式估计价值函数,会导致估计的方差很高,从而影响算法的收敛性。虽然一些tricks能在一定程度上减小方差,但是这些方法并不能完全解决这个问题;
- 探索与利用的平衡问题:DQN等算法在实现时通常选择贪心的确定性策略,而很多问题的最优策略是随机策略,即需要以不同的概率选择不同的动作。虽然可以通过 ϵ − g r e e d y \epsilon-greedy ϵ−greedy 等方式实现一定程度的随机策略,但是并不离线,并不能很好地平衡探索与利用的关系。
1.2 策略梯度算法
策略梯度算法是一类直接对策略进行优化的算法,但它的优化目标与基于价值的算法是一样的,都是累积的价值期望
V
∗
(
s
)
V^*(s)
V∗(s)。我们通常用
π
θ
(
a
∣
s
)
\pi_{\theta}(a|s)
πθ(a∣s) 来表示策略,即在状态
s
s
s 下采取动作
a
a
a 的概率分布
p
(
a
∣
s
)
p(a|s)
p(a∣s)。
上述为一个回合(episode),把所有状态和动作组合起来,称为轨迹
τ
\tau
τ,
轨迹出现的概率如下:
对于一条轨迹
τ
\tau
τ 来说,对应奖励就可以计算为
R
(
τ
)
=
∑
0
T
r
(
s
t
,
a
t
)
R(\tau) = \sum_0^Tr(s_t,a_t)
R(τ)=∑0Tr(st,at)
策略的价值期望公式为:
目标:最大化策略的价值期望
J
(
π
θ
)
J(\pi_{\theta})
J(πθ),又为目标函数。有了目标函数之后,只要能求出梯度,就可以使用万能的梯度上升或梯度下降来求解对应的最优参数
θ
∗
\theta^*
θ∗。
寻求价值期望的梯度:
1.做一个转换
2.求部分
3.求总体
4.求全局
基于价值算法是通过学习价值函数来指导策略的;
基于策略的算法则是对策略进行优化。
1.3 REINFORCE 算法
轨迹是由状态和动作组合而成序列,实际上一方面环境的初始状态是随机的,另一方面智能体每次采取的动作是随机的,从而导致每条轨迹的长度都可能不一样,即我们可以不必采样所有的轨迹,而是采样一部分且数量足够多的轨迹,然后利用这些轨迹的平均值来近似求解目标函数的梯度。这种方法就是蒙特卡洛策略梯度算法,也称作REINFORCE算法。
目标函数梯度求解:(使用 REINFORCE 算法的做法是每次采样 N 条轨迹,然后对这 N 条轨迹的梯度求平均。)
1.4 策略梯度推导进阶(基于平稳分布的策略梯度推导)
轨迹概率公式跟平稳分布等效,因此
价值的部分可以用神经网络模型来近似,只是略有不同的是这里的
Q
π
(
s
,
a
)
Q^{\pi}(s,a)
Qπ(s,a) 相比于DQN 算法中的 Q 函数多了一个策略
π
\pi
π 作为输入,并且输出的不再是所有动作对应的 Q 值,而是针对当前和状态的单个值,更像是评判策略的价值而不是状态的价值,用来近似
Q
π
(
s
,
a
)
Q^{\pi}(s,a)
Qπ(s,a) 的模型称作
C
r
i
t
i
c
Critic
Critic,另外只包含策略梯度的一部分的模型称作
A
c
t
o
r
Actor
Actor
1.5 策略函数的设计
1.5.1 离散动作的策略函数
DQN中Q函数通常是包含一个输入层、一个隐藏层和一个输出层,输入为模型能够接收的状态,输出等于每个动作的Q值。对于策略函数来说,也可以采用类似的设计,只不过输出的不是Q值,而是各个动作的概率分布,概率大于0且和为1。网络模型的输出有正由负,可以采用softmax方式来进行处理,梯度也可如下计算
1.5.2 连续动作的策略函数
对于连续动作空间,通常策略对应的动作可以从高斯分布
N
(
ϕ
(
x
)
T
θ
,
σ
2
)
\mathbb{N}(\phi(x)^T\theta,\sigma^2)
N(ϕ(x)Tθ,σ2),对应的梯度也可求得,如下:
二、Actor-Critic 算法
2.1 策略梯度算法的缺点
梯度算法优点:
- 适配的连续动作空间
- 适配随机策略(基于策略,因此可以适配随机策略,计算出来的策略梯度是无偏的)
缺点: - 采样效率低
- 高方差
- 收敛性差(策略梯度方法并不能保证全局最优解,存在多个局部最优解,可能会在局部最优点附近停滞)
- 难以处理的高维离散动作空间
结合了策略梯度和价值函数的 Actor-Critic 算法能同时兼顾两者的优点,甚至能缓解两种方法都很难解决的高方差问题。策略梯度算法是因为直接对策略参数化,相当于既要利用策略与环境交互采样,又要利用采样去估计策略梯度,而基于价值的算法也需要与环境交互采样来估计值函数,因此也会有高方差。
结合以后,Actor负责估计策略梯度和采样。但Critic即原来的值函数部分就不需要采样而只负责估计值函数了,并且由于它估计的值函数指的是策略函数的值,相当于带来了一个更稳定的估计,来指导Actor的更新,反而能缓解策略梯度估计带来的方差。
2.2 Q Actor-Critic 算法
上述算法通常称之为
Q
A
c
t
o
r
−
C
r
i
t
i
c
Q Actor-Critic
QActor−Critic 算法,也是最简单的 $ Actor-Critic$ 算法,框架如下:
2.3 A2C 与 A3C 算法
为了解决高方差问题,引入一个优势函数,用来表示当前状态和动作相对于平均水平的优势,基线是指在同一个状态下的基线。
优势函数可以理解为给定状态下,选择动作相对于平均水平的优势,相当于多了一个自身平均水平的参照物,减小方差,然后目标函数如下:
A3C算法i选哪个党羽增加多个进程,每个进程每隔一段时间都会将自己的参数同步到全局网络中,提高训练效率。
2.4 广义优势估计
优势估计理论上还是要通过蒙特卡洛算法进行估计,还是会产生一定的高方差,将时序差分和蒙特卡洛结合,产生新的估计方式,即引入超参数的
T
D
(
λ
)
TD(\lambda)
TD(λ) ,即GAE。
参考