基本概念
Actor-Critic(AC)
AC全称Actor-Critic,中文名演员-评论家算法。AC算法是一种既基于值函数、又基于策略函数的算法。这里所说的基于值函数的算法,主要指的是算法本身输出的所有动作的价值,根据最高价值来选择动作,这类算法不能选取连续的动作。而基于值函数的算法指算法本身输出下一步要采取各种动作的概率,然后根据概率来选取动作。
如上图所示,一个简单的AC算法(QAC)的策略梯度学习分成两部分: 1、Critic:使用状态动作价值函数
q
ω
(
s
,
a
)
q_\omega(s,a)
qω?(s,a),采用线性Q-值函数(
?
(
s
,
a
)
T
ω
\phi(s,a)^T\omega
?(s,a)Tω)逼近。并使用
T
D
(
λ
)
TD(\lambda)
TD(λ)来更新参数
ω
\omega
ω; 2、Actor:使用Critic得到的价值函数
q
ω
(
s
,
a
)
q_\omega(s,a)
qω?(s,a)引导策略函数参数θ的更新。
QAC算法的伪代码如下图所示:
Advanced Actor-Critic(A2C)
A2C全称Advanced Actor-Critic,中文名优势动作价值算法。在AC中,Critic使用的状态动作价值函数
q
ω
(
s
,
a
)
q_\omega(s,a)
qω?(s,a)对应的策略梯度为: A2C较AC的优化体现在定义目标函数时减去基准线函数
B
(
s
)
B(s)
B(s),这样可以减少方差。此时策略梯度为:
取
B
(
s
)
=
v
π
θ
(
s
)
B(s)=v_{\pi_\theta}(s)
B(s)=vπθ??(s),
A
π
θ
(
s
,
a
)
=
q
ω
(
s
,
a
)
?
v
π
θ
(
s
)
A^{\pi_\theta}(s,a)=q_\omega(s,a)-v_{\pi_\theta}(s)
Aπθ?(s,a)=qω?(s,a)?vπθ??(s),其中
A
π
θ
(
s
,
a
)
A^{\pi_\theta}(s,a)
Aπθ?(s,a)称为优势函数,它表征一个状态-动作对相对于平均状态-动作对的好坏程度。如果优势函数大于零,则说明该动作比平均动作好,如果优势函数小于零,则说明当前动作还不如平均动作好。
Actor中参数
θ
\theta
θ的更新方式为: Critic中不再使用参数
ω
\omega
ω,而是使用参数
v
v
v。参数
v
v
v的更新方式为: 其中: , A2C的基本结构如下:
Asynchronous Advantage Actor-Critic(A3C)
A3C全称为 Asynchronous Advantage Actor-Critic ,中文名字是异步优势动作评价算法。因为该算法的前三个单词的首字母都是A,所以简写为A3C。相比Actor-Critic,A3C的优化主要有3点,分别是异步训练框架,网络结构优化,Critic评估点的优化。其中异步训练框架是最大的优化。 A3C使用异步训练框架,基本框架还是AC框架。不再利用单个线程,而是利用多个线程。每个线程相当于一个智能体在随机探索,多个智能体共同探索,并行计算策略梯度,维持一个总的更新量。公共部分的网络模型就是我们要学习的模型,而线程里的网络模型主要是用于和环境交互使用的,这些线程里的模型可以帮助线程更好的和环境交互,拿到高质量的数据帮助模型更快收敛。 第二个优化也是网络结构的优化。在AC框架中Actor和Critic是互相分开的,而在A3C中将Actor、Critic两个网络放在了一起。如上图所示,输入状态
s
s
s,输出策略
π
\pi
π和价值
v
v
v。当然也可以将Actor和Critic看成两个独立的部分。
第三个优化就是Critic评估点的优化。在单步采样中,优势函数
A
(
s
,
t
)
A(s,t)
A(s,t)去掉动作可以表示为: 在A3C中采用多步采样,以加速收敛。此时优势函数为: 在A3C的目标函数(损失函数)中,加入策略函数
π
\pi
π的熵项,系数为c。 A3C算法的伪代码如下图所示:
|