ACER算法是在论文SAMPLE EFFICIENT ACTOR-CRITIC WITH EXPERIENCE REPLAY中提出的一种可以使用off-policy训练的置信域策略优化方法。
ACER的目标是解决on-policy算法样本利用效率低的问题,主要有三个技术:
- 截断重要性采样,控制方差的同时保证了无偏性;
- stochastic dueling network,SDN,用于连续动作控制算法值函数估计;
- 一种新的置信域方法,计算简单,适合大规模问题;
以下分为离散动作和连续动作分别具体介绍算法。
1. 离散动作
1.1 截断重要性采样
off-policy的优化目标可以用
g
m
a
r
g
i
n
g^{margin}
gmargin表示:
但是重要性采样系数
ρ
t
\rho_t
ρt可能很大,导致方差大、训练不稳定,为此将
ρ
t
\rho_t
ρt进行截断,把大于c的部分提出来,得到两项,后一项巧妙的将动作分布修改为当前策略的分布,为后一项系数带来分母
ρ
t
\rho_t
ρt。新的优化目标有以下特点:
- 前一项系数有最大值c,后一项系数最大值趋于1,这样两项产生的方差都可控,且优化目标无偏;
- 前一项使用历史数据计算,后一项需要根据当前策略采样计算;
我们使用retrace方法估计的Q值代替第一项中的Q,使用值函数估计代替第二个Q,并分别减去状态值函数减少方差,得到最终ACER优化目标:
式子中当C->∞时,相当于使用retrace的off-policy策略梯度更新,当c=0时,相当于Actor-Critic更新,当c不为0的时候相当于介于off-policy和on-policy之间的更新。
1.2 新的置信域方法
TRPO更新需要不断计算Fisher向量乘法,难以应用到大规模问题中。ACER使用移动平均保持一个平均策略
θ
:
θ
a
←
α
θ
a
+
(
1
−
α
)
θ
θ: θ_a ← αθ_a + (1 − α)θ
θ:θa←αθa+(1−α)θ,保证每次更新不偏离平均策略太远,这样KL散度的变化是一个一阶项,是一个二次规划问题,可以直接求出最优解,计算方便。
算法伪代码:
需要注意的点:
- 算法首先on-policy地采样(存数据到buffer)并训练,然后多次从buffer中采样off-policy训练,off-policy训练的次数将在实验中进行讨论;
- sample的trajectory是有顺序的,不是完全的DQN类似的随机采样;
- 状态值函数通过当前策略下的动作值函数期望计算 V ( s ) = E a − π [ Q ( s , a ) ] V(s)=E_{a - \pi}[Q(s,a)] V(s)=Ea−π[Q(s,a)];
- 把retrace作为动作值函数网络的target更新动作值网络;
- Qretrace更新拆为了两步,实际上和retrace公式等价,先将后面t+1的项加上再加前面的rt:
- 由于需要历史数据的策略分布,因此在存数据的时候需要存策略分布参数。
1.3 离散算法Atari实验
左边是表现分数随训练步数的变化,右边是表现分数随时间的变化,实线、虚线分别表示有无新置信域更新方法的实验结果。结果显示ACER表现随off-policy的经验回放操作次数增加而增加,达到相同表现的样本利用率更高,并且接近Prioritized DQN的结果。
2 连续动作
2.1 stochastic dueling network
连续动作的问题是不能通过动作值函数的期望来求状态值函数(下式),因为动作a无穷多。
于是论文提出Stochastic Dueling Networks (SDNs)技术,使用状态值函数和优势函数计算Q,其中为防止网络输出优势函数A的期望不为0,需要减去A的期望,由于动作无穷多,我们通过采样计算均值来估计A的期望。这个方法对于每个时刻的输出是
V
(
s
t
)
V(s_t)
V(st)和
Q
(
s
t
,
a
t
)
Q(s_t,a_t)
Q(st,at)。公式和网络结构如下图所示:
需要注意的点:
- 在计算目标函数g的时候,第一项使用 Q o p c Q_{opc} Qopc而非 Q r e t Q_{ret} Qret,论文中解释尽管 Q o p c Q_{opc} Qopc没有 Q r e t Q_{ret} Qret稳定,但是能减少更好的利用累计奖励值,因为没有被重要性系数截断,实验中速度也更快;
- g的第2项也没有多次采样取均值,可能方差会变大;
3 总结
ACER为了利用历史数据使用了多项技术,整体算法较为复杂,但是基本思想还是能够理解。我对retrace这项技术理解还不到位,希望能够得到指正。