DQN 改进:从偏置、方差到表示结构
DQN 的改进几乎都围绕三件事:
- 缓解 $\max$ 引起的过估计偏置;
- 改善样本利用与学习信号(降低方差、提速纠错);
- 引入更合适的表示结构(让网络更易学)。
1. Double DQN:解耦“选择”与“评估”
DQN 的 TD 目标使用
$$ y = r + \eta\max_{a'} Q_{\theta^-}(s',a'), $$
其中 $\max$ 在同一估计上既选择又评估,容易产生正偏。
Double DQN 的修正:
- 用在线网络选择动作:
$$ a^* = \arg\max_{a'} Q_\theta(s',a'), $$
- 用目标网络评估该动作:
$$ y_{\mathrm{DDQN}} = r + \eta\, Q_{\theta^-}(s',a^*). $$
insight:把“最大化运算”从评估网络上移开,显著缓解系统性过估计。
2. Dueling Network:分解 $Q$ 的结构
Dueling 将 $Q$ 分解为状态价值与优势:
$$ Q(s,a)=V(s)+A(s,a)-\frac{1}{|\mathcal{A}|}\sum_{a'}A(s,a'). $$
insight:在许多状态里“动作差别很小”,学习 $V(s)$ 更关键;结构分解提供更好的归纳偏置。
3. Prioritized Experience Replay(PER):把算力花在更“意外”的样本上
设 TD 误差
$$ \delta = y - Q_\theta(s,a). $$
PER 用 $|\delta|$(或其变体)作为优先级,提高误差大的样本被采样概率,从而加速纠错。
由于改变了采样分布,会引入偏差,通常用重要性权重修正:
$$ w_i \propto \Big(\frac{1}{N\,p_i}\Big)^{\beta}. $$
(实现细节略,关键是理解“非均匀采样 + 偏差修正”的思想。)
4. $n$-step Return:在偏差—方差间折中
用 $n$ 步回报替代单步 bootstrap:
$$ G_t^{(n)}=\sum_{k=0}^{n-1}\eta^k r_{t+k+1}+\eta^n\max_a Q_{\theta^-}(s_{t+n},a). $$
- $n$ 越大:更接近 MC(偏差小,方差大)。
- $n$ 越小:更接近 TD(0)(方差小,偏差大)。
5. 实践中的组合:Rainbow 的思想
Rainbow 把 Double、Dueling、PER、n-step 等叠加,本质是同时修补:
- 估计偏置(Double);
- 表示瓶颈(Dueling);
- 学习信号稀疏/慢(PER、n-step)。
理解这些组件分别解决的问题,比记住“有哪些 trick”更重要。