强化学习中的Actor-Critic方法详解
强化学习中的Actor-Critic方法详解
Actor-Critic方法是强化学习中一种重要的策略优化方法,它结合了基于策略的优化和基于价值的评估,通过actor和critic两个组件的协同工作来提升学习效率和性能。本文将详细介绍Actor-Critic方法的各种变体,包括最简单的QAC、Advantage Actor-Critic(A2C)、重要性采样和Off-Policy Actor-Critic,以及Deterministic Actor-Critic (DPG)。
一、最简单的Actor-Critic(QAC)
Actor-Critic算法与策略梯度方法本质上是相同的,但不同的是,Actor-Critic方法将基于价值的方法引入到策略梯度中。
- Actor:对应策略,负责更新策略参数θ。
- Critic:对应策略评估/价值估计过程,通过计算动作价值来评估当前策略的好坏。
回顾策略梯度方法,最终需要计算的公式1(未显示)实际上就是一个actor,因为它在更新参数θ,而θ的更新就是策略的更新。公式1中的q_t(s_t, a_t)就是一个critic,通过计算动作价值来评估当前策略。
计算q_t(s_t, a_t)有两种方法:
蒙特卡洛方法:从状态(s, a)出发收集一个episode,计算这个episode所对应的return作为q_t(s_t, a_t)的近似值。这种方式计算出的q_t(s_t, a_t),再配合算法,就是REINFORCE。
TD方法:用TD方法来估计q_t(s_t, a_t),这种方法被称为actor-critic。
最简单的actor critic算法的伪代码如下:
- 目标是优化函数J(θ)。
- 根据当前策略生成经验数据(st, at, rt+1, st+1, at+1)。
- 在critic部分用Sarsa算法计算q(s, a)。
- 在actor部分使用critic计算出的q(s, a)来更新策略。
- 使用更新后的策略生成新的数据。
补充说明:
- Critic对应Sarsa+价值函数近似
- Actor对应策略更新算法
- 这是一个on-policy算法
- 这是最简单的Actor-Critic算法之一
二、Advantage Actor-Critic(A2C)
A2C是QAC的推广,其基本思想是在QAC的基础上引入一个偏置量来减少估计的方差。
性质
策略梯度梯度对于引入一个新的偏置是不会变化的。例如,引入b(S)不会影响梯度的结果。
为什么引入b(S)对计算梯度没有影响?
通过推导可以证明,E[X]和b(S)无关。
为什么要考虑这个baseline?它究竟有什么用?
虽然E[X]和b(S)无关,但X的方差var(X)与b(S)有关。目标是找到一个最佳的baseline,使X的方差最小。方差越小,在采样时误差也越小。
在REINFORCE和QAC中,没有使用baseline(即b=0)。最优的b*的计算公式较为复杂,通常使用vπ(s)作为近似。
定义一个新的量δπ(S, A),称为优势函数:
δπ(S, A) = qπ(S, A) - vπ(S)
vπ(S)相当于qπ(S, A)的平均值。如果当前的qπ(S, A)大于vπ(S),说明这个动作a的效果不错,δπ(S, A)为正值,选择(S, A)的概率会变大。
优势函数也可以用TD error来近似,这样可以简化计算,只需要一个神经网络来近似vπ(S)。
这是A2C算法的伪代码:
- Critic部分使用TD算法和价值函数近似。
三、重要性采样和Off-Policy Actor-Critic
之前介绍的策略都是on-policy的,即采样和更新都遵循同一个策略π。但我们可以使用重要性采样将on-policy转换为off-policy。
1. 一些简单的例子
假设有一个随机变量X,其分布未知,我们想通过采样来估计E[X]。
- 如果样本是在X的真实分布p0上采样的,那么样本均值会收敛到真实均值。
- 如果样本是在另一个分布p1上采样的,那么样本均值会偏离真实均值。
2. 重要性采样
可以通过估计E_{X~p1}[f(X)]来估计满足分布p0的随机变量X的期望。重要性采样的计算方式如下:
小结:
- 有一些服从p1分布的样本x_i,计算结果是在p1分布下的expectation。
- 目标是求fˉ,fˉ的计算结果是在p0分布下的expectation。
3. off-policy policy gradient 的理论
假设β是一个行为策略,用来生成经验采样;π是目标策略,目标是优化J(θ)函数。
这个目标函数对应的梯度与on-policy的区别在于,on-policy中A~π,但在off-policy中A~β。此外,还多了一个重要性采样的项。
使用梯度上升方法优化时,可以在梯度中加上一个baseline b(s),一般设置b(S) = vπ(S)。
公式1中使用了随机梯度计算梯度,并加上了vπ(S)作为baseline。公式2在公式1的基础上加了一个TD error,得到公式3。最后以公式3来计算梯度。公式4是对公式3的变形,目的是提取出step size。
这是对应的伪代码:
四、Deterministic Actor-Critic (DPG)
前面介绍的策略都是stochastic的,即π(a|s,θ)总是大于0。下面介绍Deterministic Actor-Critic。
在确定性策略中,策略不再用π(a|s,θ)表示,而是用a = μ(s,θ)表示,其输出直接是一个具体的动作a。μ是状态空间到动作空间的映射,可以用神经网络实现。
确定性策略梯度的目标函数J(θ)。其中d0(s)表示概率分布。d(s)是独立于μ的,在这种情况下,梯度更容易计算。
这是求出来的梯度结果。这是一个off-policy算法。
然后用梯度上升的方法进行优化。
伪代码如下:
补充说明:
- 这是一个off-policy算法,其中行为策略是β,目标策略是μ。
- β可以用μ+noise来代替。
五、总结
从2025年11月底开始断断续续学习,到今天终于完成了这门课的第一遍学习。由于基础有限,部分知识还没能完全消化。希望在后续实践中不断思考、学习。
赵老师在课程中提到:“关于学具有系统性的知识,建议放弃速成的想法,比如一小时入门,一上午精通。很多焦虑都来源于时间安排不合适。举个例子,读一篇论文需要五天,但你只给自己一天的时间,到晚上也许发现,连introduction部分都没搞明白。但是如果给自己足够的时间,心态放平,稳扎稳打,也许三天就可以读完一篇论文。” 这句话深受启发。做学问切忌心浮气躁,应该放平心态,给自己一些消化和适应的时间。在以后的科研生活中,也要时刻铭记这一点。