文章目录
- 参考
- 基于价值函数的缺点
- 策略梯度算法
- REINFORCE 算法
- 策略梯度推导进阶
- 策略函数的设计
- 离散动作的策略函数
- 连续动作的策略函数
参考
第九章 策略梯度
之前介绍的 DQN 算法属于基于价值(value-based)的算法,基于策略梯度的算法直接对策略本身进行优化。
将策略描述成一个带有参数 θ \theta θ 的连续函数,该函数将某个状态作为输入,输出的不再是某个确定性(deterministic)的离散动作,而是对应的动作概率分布,通常用 π ( a ∣ s ) \pi(a|s) π(a∣s) 表示,称作随机性(stochastic)策略。对比之前的动作价值函数 Q ( s , a ) Q(s,a) Q(s,a).
基于价值函数的缺点
- 无法表示连续动作。由于 DQN 等算法是通过学习状态和动作的价值函数来间接指导策略的,因此它们只能处理离散动作空间的问题,无法表示连续动作空间的问题。而在一些问题中,比如机器人的运动控制问题,连续动作空间是非常常见的,比如要控制机器人的运动速度、角度等等,这些都是连续的量。注意
- 高方差。基于价值的方法通常都是通过采样的方式来估计价值函数,这样会导致估计的方差很高,从而影响算法的收敛性。
- 探索与利用的平衡问题。DQN等算法在实现时通常选择贪心的确定性策略,而很多问题的最优策略是随机策略,即需要以不同的概率选择不同的动作。虽然可以通过 ϵ − g r e e d y \epsilon-greedy ϵ−greedy 策略等方式来实现一定程度的随机策略,但是实际上这种方式并不是很理想,因为它并不能很好地平衡探索与利用的关系。
策略梯度算法
策略梯度算法是一类直接对策略进行优化的算法,但它的优化目标与基于价值的算法是一样的,都是累积的价值期望
V ⋆ ( s ) V^{\star}(s) V⋆(s)。我们通常用 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(a∣s) 来表示策略,即在状态 s 下采取动作 a
的概率分布 p ( a ∣ s ) p(a|s) p(a∣s),其中 θ \theta θ 是我们要去求出来的模型参数。
目标就是最大化策略的价值期望 KaTeX parse error: Undefined control sequence: \J at position 1: \̲J̲(\pi_{\theta}).
基于价值的算法是通过学习价值函数来指导策略的,而基于策略的算法则是对策略进行优化,并且通过计算轨迹的价值期望来指导策略的更新。
REINFORCE 算法
轨迹是由状态和动作组合而成的序列,实际上一方面环境的初始状态是随机的,另一方面智能体每次采取的动作是随机的,从而导致每条轨迹的长度都可能不一样,这样组合起来的轨迹几乎是无限多条的,这样一来求解目标函数的梯度就变得非常困难了。那么这个时候我们就需要利用蒙特卡洛的方法来近似求解了,即我们可以不必采样所有的轨迹,而是采样一部分且数量足够多的轨迹,然后利用这些轨迹的平均值来近似求解目标函数的梯度。这种方法就是蒙特卡洛策略梯度算法,也称作 REINFORCE 算法。
策略梯度推导进阶
平稳分布,顾名思义就是指在无外界干扰的情况下,系统长期运行之后其状态分布会趋于一个固定的分布,不再随时间变化。
平稳分布的性质
- 任意两个状态之间都是互相连通的,即任意两个状态之间都可以通过一定的步骤到达,这个性质称为连通性
- 任意状态在平稳分布下的概率都是一样的,这个性质称为细致平稳
这两个性质在马尔科夫链中是等价的,即如果一个马尔科夫链满足连通性,那么它一定满足细致平稳性,反之亦然。
策略函数的设计
离散动作的策略函数
策略函数输出的是各个动作的概率分布,输入层和 DQN中的近似Q函数一样,一般是维度等于状态数的线性层。但原来 Q 网络模型输出的值有正有负,一般用 softmax 转换成概率分布。