值函数近似 (Value Function Approximation)#
线性函数形式#
v^(s,w)=as+b=ϕT(s)[s,1]w[ab]=ϕT(s)w
其中:
- w 是参数向量。
- ϕ(s) 是状态 s 的特征向量。
- v^(s,w) 关于 w 是线性的。
非线性函数形式#
v^(s,w)=as2+bs+c=ϕT(s)[s2,s,1]wabc=ϕT(s)w
在这种情况下:
- w 和 ϕ(s) 的维度增加了,数值拟合可能会更准确。
- 虽然 v^(s,w) 关于状态 s 是非线性的,但它关于参数 w 依然是线性的。非线性特征被包含在 ϕ(s) 的映射中。
状态价值估计 (State Value Estimation)#
目标函数(Objective Function):
J(w)=E[(vπ(S)−v^(S,w))2]
- 核心目标是找到最优的参数 w 来最小化该目标函数。
- S 是一个随机变量,其概率分布主要有以下两种考量:
J(w)=∣S∣1s∈S∑(vπ(s)−v^(s,w))2
- 平均分布平等对待所有状态。但实际强化学习中,某些状态的访问频率更高且更关键,因此这种分布往往不适用。
稳态分布 (Stationary Distribution)#
稳态分布描述了马尔可夫过程的长期行为(Long-run behavior)。其中 {dπ(s)}s∈S 代表了状态分布的集合,满足 dπ(s)≥0 且 ∑s∈Sdπ(s)=1。
J(w)=s∈S∑dπ(s)(vπ(s)−v^(s,w))2
- dπ(s) 代表了在策略 π 下处于特定状态的概率平稳值。使用稳态分布可以使得在常访问状态上的拟合误差更小。
- 稳态分布满足公式:
dπT=dπTPπ
其中 Pπ 为贝尔曼方程中的状态转移矩阵。
优化方法#
使用梯度下降法更新参数:
wk+1=wk−αk∇wJ(wk)
真实梯度的推导过程如下:
∇wJ(w)=∇wE[(vπ(S)−v^(S,w))2]=E[∇w(vπ(S)−v^(S,w))2]=2E[(vπ(S)−v^(S,w))(−∇wv^(S,w))]=−2E[(vπ(S)−v^(S,w))∇wv^(S,w)]
在实际应用中,通常采用随机梯度下降(SGD):
wt+1=wt+αt(vπ(st)−v^(st,wt))∇wv^(st,wt)
其中 st 是 S 的一个采样。为了表达简洁,常数 2 被吸收到学习率 αt 中。由于真实的 vπ(st) 未知,我们需要用估计值来替代它:
- 基于蒙特卡洛 (Monte Carlo):使用一个回合中的折扣回报 gt 来近似 vπ(st)。
wt+1=wt+αt(gt−v^(st,wt))∇wv^(st,wt)
- 基于时序差分 (Temporal Difference, TD):目标值 rt+1+γv^(st+1,wt) 被视为 vπ(st) 的近似。
wt+1=wt+αt[rt+1+γv^(st+1,wt)−v^(st,wt)]∇wv^(st,wt)
TD-Linear 算法#
在 v^(s,w)=ϕT(s)w 的线性情况下,梯度为:
∇wv^(s,w)=ϕ(s)
将梯度代入 TD 算法:
wt+1=wt+αt[rt+1+γϕT(st+1)wt−ϕT(st)wt]ϕ(st)
这就是带线性函数逼近的 TD 学习算法,简称为 TD-Linear。
线性近似的求导解析#
在强化学习的线性近似中,v^(s,w) 是一个标量(预测的状态价值),而 w 是一个向量(权重参数)。
-
拆解线性表达式
对于列向量 ϕ(s)=[ϕ1,…,ϕn]T 和 w=[w1,…,wn]T,内积为:
v^(s,w)=i=1∑nϕiwi
-
对向量求导
∇wv^(s,w) 的本质是对标量函数按向量 w 的每一个分量求偏导:
∂wi∂(ϕ1w1+⋯+ϕnwn)=ϕi
拼合后即得到 ∇wv^(s,w)=ϕ(s)。
表格表示 (Tabular Representation)#
表格法是线性函数逼近的一个特例。
设定状态 s 的特征向量为独热编码(One-hot)向量:
ϕ(s)=es∈R∣S∣
此时:
v^(s,w)=esTw=w(s)
即 w(s) 提取了向量 w 中对应状态 s 的第 s 个分量。
动作价值函数近似#
Sarsa with Function Approximation#
wt+1=wt+αt[rt+1+γq^(st+1,at+1,wt)−q^(st,at,wt)]∇wq^(st,at,wt)
Q-learning with Function Approximation#
wt+1=wt+αt[rt+1+γa∈A(st+1)maxq^(st+1,a,wt)−q^(st,at,wt)]∇wq^(st,at,wt)
深度 Q 网络 (Deep Q-Network, DQN)#
DQN 使用神经网络来逼近非线性的 Q 函数。
损失函数 (Loss Function):
J(w)=E[(R+γa∈A(S′)maxq^(S′,a,w)−q^(S,A,w))2]
这实际上是在最小化贝尔曼最优误差 (Bellman Optimality Error)。定义目标值 y 为:
y≐R+γa∈A(S′)maxq^(S′,a,w)
为了保证训练的稳定性,防止目标值随着网络更新不断移动,DQN 引入了双网络架构:
- 主网络 (Main Network):q^(S,A,w),负责当前动作的评估与参数实时更新。
- 目标网络 (Target Network):q^(S′,A,wT),提供稳定的目标值 y。
引入目标网络后的损失函数变为:
J(w)=E[(R+γa∈A(S′)maxq^(S′,a,wT)−q^(S,A,w))2]
在运算时,假定 wT 是常数(即不参与梯度计算),梯度下降仅更新 w:
∇wJ(w)=−2E[(R+γa∈A(S′)maxq^(S′,a,wT)−q^(S,A,w))∇wq^(S,A,w)]
注:主网络的参数 w 每隔一段时间会复制给目标网络 wT。
经验回放 (Experience Replay)#
- 动机:强化学习中收集的连续数据存在强相关性,直接用于训练容易导致网络不稳定。
- 机制:将智能体与环境交互产生的数据以 (s,a,r,s′) 的元组形式存入一个回放缓冲区(Replay Buffer)B。
- 采样:在训练时,从缓冲区中抽取一批随机采样(Mini-batch)。这种抽取过程通常采用均匀分布(Uniform Distribution),从而打破数据之间的时间相关性,并显著提高数据的利用率。