Actor—Critic算法
Actor—Critic算法的名字很形象,包含一个策略函数和行为价值函数,其中策略函数充当演员(Actor),生成行为与环境交互;行为价值函数充当(Critic),负责评价演员的表现,并指导演员的后续行为动作。Critic 的行为价值函数是基于策略
π
θ
\pi_θ
πθ 的一个近似:
基于此,Actor—Critic算法遵循一个近似的策略梯度进行学习:Critic 在算法中充当着策略评估的角色,由于 Critic 的行为价值函数也是带参数
(
w
)
\left ( w\right )
(w) 的,这意味着它也需要学习以便更准确的评估一个策略。最基本的基于行为价值
Q
Q
Q 的 Actor—Critic算法流程如下图所示:
简单的 QAC 算法虽然不需要完整的状态序列,但是由于引入的 Critic 仍然是一个近似价值函数,存在着引入偏差的可能性,不过当价值函数接受的输入的特征和函数近似方式足够幸运时,可以避免这种偏差而完全遵循策略梯度的方向。
定理: 如果下面两个条件满足:
- 近似价值函数的梯度与分值函数的梯度相同,即:
- 近似价值函数的参数 w 能够最小化
实践过程中,使用
Q
w
(
s
,
a
)
Q_w\left ( s,a \right )
Qw(s,a) 来计算策略目标函数的梯度并不能保证每次都很幸运,有时候还会发生数据过大等异常情况。出现这类问题是由于行为价值本身有较大的变异性。为了解决这个问题,提出了一个与行为无关仅基于状态的基准函数
B
(
s
)
B\left ( s\right )
B(s) 的概念,要求
B
(
s
)
B\left ( s\right )
B(s) 满足:
当基准函数
B
(
s
)
B\left ( s\right )
B(s) 满足上述条件时,可以将其从策略梯度中提取出以减少变异性同时不改变其期望值,而基于状态的价值函数
V
π
θ
(
s
)
V_{\pi_\theta}\left ( s\right )
Vπθ(s) 函数就是一个不错的基准函数。令优势函数为:
那么策略目标函数梯度可以表示为:
优势函数相当于记录了在状态
s
s
s 时采取行为
a
a
a 会比提留在状态
s
s
s 多出的价值,这正好与策略改善的目标是一致的,由于优势函数考虑的是价值的增量,因而大大减少的策略梯度的变异性,提高算法的稳定性。在引入优势函数后,Critic函数可以仅是优势函数的价值近似。由于优势函数的计算需要通过行为价值函数和状态价值函数相减得到,是否意味着需要设置两套函数近似来计算优势函数呢?其实不必如此,因为基于真实价值函数
V
π
θ
(
s
)
V_{\pi_\theta}\left ( s\right )
Vπθ(s) 的
T
D
TD
TD 误差
δ
π
θ
\delta_{\pi_\theta}
δπθ 就是优势函数的一个无偏估计:
因此可以使用
T
D
TD
TD 误差来计算策略梯度:
此时只需要一套参数
w
w
w 来描述 Critic。
在使用不同强化学习方法来进行 Actor—Critic 学习时,描述 Critic 的函数
V
w
(
s
)
V_w\left ( s \right )
Vw(s) 的参数
w
w
w 可以通过下列形式更新:
- 对于蒙特卡罗 ( M C MC MC) 学习:
- 对于时序差分 ( T D ( 0 ) TD\left ( 0\right ) TD(0)) 学习:
- 对于前向 T D ( λ ) TD\left ( \lambda\right ) TD(λ) 学习:
- 对于后向 T D ( λ ) TD\left ( \lambda\right ) TD(λ) 学习:类似的,策略梯度:
也可以使用不同的学习方式更新策略函数 πθ(s,a) 的参数 θ:
- 对于蒙特卡罗 ( M C MC MC) 学习:
- 对于时序差分 ( T D ( 0 ) TD\left ( 0\right ) TD(0)) 学习:
- 对于前向 T D ( λ ) TD\left ( \lambda\right ) TD(λ) 学习:
- 对于后向 T D ( λ ) TD\left ( \lambda\right ) TD(λ) 学习: