价值学习技巧
经验回放
为了更好地学习 Q 值,可以加入经验回放缓冲区,将交互数据 (s, a, r, s′) 存储在缓冲区并在训练时进行随机采样得到一个批次的训练样本用于训练,既能够使样本满足独立假设,又可以提高样本利用效率。为了平衡常见样本和少见样本的学习,可以在经验回放的基础上加入非均匀抽样,抽样的概率满足:
pi∝∣δi∣+ϵi∈{1, 2, ⋯, b}
其中 δi 为样本 (si, ai, ri, si′) 的 TD 误差,常数 ϵ 为很小的正数,防止抽样概率为 0。调整抽样概率的同时也应该设置不同的学习率,为了抵消掉由抽样概率差异带来的预测偏差,可以设置学习率为:
αi=(bpi)βα
其中 α 为总体学习率,β∈(0, 1) 为超参数。使用这种优先经验回放的方式可以增加少见样本的利用效率。但是经验回放方法只适用于异策略算法(目标策略不同于行为策略,行为策略的经验可以重复用于目标策略的训练),对于同策略算法则不能使用过时的目标策略收集到的经验。
非均匀高估问题
假设在 Q-Learning 中最终估计得到的动作价值 q(s, a)=q⋆(s, a)+ϵ,其中 ϵ(s, a) 为相互之间独立的均值为零的随机噪声。这种估计虽然是无偏的 Eϵq(s, a)=q⋆(s, a),但是最大动作价值的期望则会产生高估:
Eϵamaxq(s, a)≥amaxq⋆(s, a)
以上不等式的证明如下:给定一组独立且期望相同的随机变量 X1, X2, ⋯, Xn,定义随机变量函数 ϕ(x):
ϕ(x)=max{x1+c1, x2+c2, ⋯, xn+cn}
其中 ci 为常数,考虑 ∀ x1, x2∈Rn,ϕ(x) 满足:
ϕ(λx1+(1−λ)x2)=imax(λxi(1)+(1−λ)xi(2)+ci)=imax(λ(xi(1)+ci)+(1−λ)(xi(2)+ci))≤λimax(xi(1)+ci)+(1−λ)jmax(xj(2)+cj)=λϕ(x1)+(1−λ)ϕ(x2)
因此 ϕ(x) 为凸函数,因此通过 Jasen 不等式可得
Exϕ(x)≥ϕ(Exx)=imax(Exi+ci)=μx+imaxci
利用这一结论可以证明 Q 值的高估现象
Eϵamaxq(s, a)=amax(q⋆(s, a)+ϵ(s, a))≥μϵ+amaxq⋆(s, a)=amaxq⋆(s, a)
而在 Q-Learning 的自举学习会导致最大化操作的高估偏差的传播和积累,即:
- 假设在某一步训练中 q(st+1, at+1) 高(低)估了真实的 q⋆(st+1, at+1)
- TD 目标 gt(1)=rt+1+maxaq(st+1, a) 高(低)估了真实的 q⋆(st, at)
- 被更新的 q(st, at)←q(st, at)+α(gt(1)−q(st, at)) 高(低)估了真实的 q⋆(st, at)
因此自举的学习方式会导致最大化操作的高估偏差的传播和积累。同时由于不同的状态价值对 (s, a) 出现的频率不同,因此会产生非均匀的高估,导致最终恢复出的策略不可靠。
算法 |
选择 |
求值 |
自举偏差传播问题 |
最大化高估问题 |
Q-Learning |
a^=argmaxaq(st+1, a) |
gt(1)=q(st+1, a^) |
√ |
√ |
Target Q |
a^=argmaxaq~(st+1, a) |
gt(1)=q~(st+1, a^) |
× |
√ |
Double Q |
a^=argmaxaq(st+1, a) |
gt(1)=q~(st+1, a^) |
× |
× |
Target Q
考虑到原始的 Q-Learning 算法存在由自举带来的偏差,以及 Q 表(网络)的更新带来的目标的不稳定性,可以加入额外的一个目标 Q 表 q~(s, a) 或 Q 网络 q~w−(s, a) 用于计算 TD 目标,从而切断自举:
gt(1)=q(st, at)−(rt+1+amaxq~(st+1, a))
并且目标 Q 表(网络)q~(s, a) 的值(参数)会间隔若干步与训练 Q 表(网络)q(s, a) 进行同步,以此提高算法稳定性。同时在同步时可以采用软更新,例如目标网络参数 w− 的同步方式可以设置为:
w−←τw−+(1−τ)wτ∈(0, 1)
Double Q
由于 Q-Learning 算法中训练时的最大化操作会产生对 Q 值的过高估计问题。Double Q 同时利用目标 Q 表(网络) q 和训练 Q 表(网络) q~ 来估计最优策略的动作价值 maxaq⋆(s, a),具体的优化目标为:
rt+1+γq~(st+1, aargmaxq(st+1, a))
与 Q-Learning 的区别在于 a^=argmaxaq(st+1, a)=argmaxaq~(st+1, a),其他算法逻辑则保持一致。由于 q~(st+1, argmaxaq(st+1, a))≤maxaq~(st+1, a),因此可以缓解 Q 值高估问题。