表格型方法为每个状态或状态动作对保存一个独立数值。当状态空间连续或维度很高时,不可能访问并存储所有条目。函数近似用共享参数表示价值:
V^(s;w)≈Vπ(s)
或:
Q^(s,a;w)≈Qπ(s,a)
共享参数使模型可以把已见状态的经验泛化到相似状态。
如果有目标 Ut,可以最小化均方误差:
J(w)=21E[(Ut−V^(St;w))2]
随机梯度更新为:
wt+1=wt+α[Ut−V^(St;wt)]∇wV^(St;wt)
Monte Carlo 可以令 Ut=Gt;TD 方法则令:
Ut=Rt+1+γV^(St+1;wt)
TD 目标本身依赖参数 wt,但半梯度方法只对当前预测求导,把目标暂时视为常数:
wt+1=wt+αδt∇wV^(St;wt)
δt=Rt+1+γV^(St+1;wt)−V^(St;wt)
这并不一定是某个普通均方损失的完整梯度,但在线性同策略设置下具有良好的收敛性质。
令特征向量为 x(s)∈Rd:
V^(s;w)=w⊤x(s)
则梯度为 x(s),更新简化为:
wt+1=wt+αδtx(St)
线性方法计算便宜、容易分析,并可结合 tile coding、Fourier basis 或人工设计特征。
函数类通常无法精确表示真实值函数。TD 学习寻找的不是直接最小化每个状态的 Bellman 误差,而是近似求解:
V^=ΠTπV^
其中 Π 表示把 Bellman 更新后的函数投影回可表示的函数空间。采样分布决定了投影使用的权重,因此训练数据覆盖范围会直接影响近似结果。
控制问题中可以使用:
Q^(s,a;w)
半梯度 SARSA 的更新为:
wt+1=wt+α[Rt+1+γQ^(St+1,At+1;wt)−Q^(St,At;wt)]∇wQ^(St,At;wt)
离散动作可以让网络一次输出所有动作的 Q 值;连续动作中直接计算 maxaQ(s,a) 更困难,通常需要额外的策略网络。
DQN 使用神经网络逼近 Q,并通过两项关键机制改善稳定性:
- Experience Replay:随机采样历史转移,减弱连续数据的相关性并提高样本复用率。
- Target Network:使用延迟更新的参数 w− 构造相对稳定的目标。
典型目标为:
yt=Rt+1+γamaxQ^(St+1,a;w−)
损失为:
L(w)=E[(yt−Q^(St,At;w))2]
以下三项同时出现时可能导致发散:
- 函数近似。
- 自举更新。
- 异策略训练。
这被称为 deadly triad。目标网络、双重 Q-learning、梯度裁剪、保守的学习率和更合理的数据分布,都是常见缓解手段,但不能替代对训练稳定性的持续监控。
除平均回报外,还应检查 TD 误差分布、Q 值尺度、目标网络漂移、不同随机种子的方差以及 replay buffer 中的数据覆盖。函数近似带来了泛化能力,也让强化学习从求解表格固定点转变为不断移动的数据分布与优化目标之间的耦合问题。