1. 值函数与贝尔曼方程:从离散到连续的跨越
在传统强化学习中,我们通常使用表格来记录每个状态(或状态-动作对)对应的价值。这种方法简单直观,就像小学生用乘法口诀表一样,查表就能得到结果。但当状态空间变得庞大或连续时,这种"查字典"的方法就遇到了瓶颈。
想象一下,你要记录围棋每个可能局面的价值。围棋的状态空间大约是10^170种可能,这比宇宙中原子的总数还要多得多。显然,用表格记录每个状态的价值是不现实的。这就是值函数近似方法诞生的背景。
值函数近似的核心思想是:用一个参数化函数来拟合真实的值函数。这个函数可以是线性的,也可以是非线性的(如神经网络)。通过调整函数参数,使得函数输出尽可能接近真实值。这就好比用一条曲线来拟合散点图上的数据点,而不是为每个点单独存储一个值。
1.1 状态值函数近似
状态值函数v(s)表示在状态s下,遵循某个策略π能获得的期望回报。在表格法中,我们直接存储每个s对应的v(s)。在函数近似中,我们使用一个参数化函数v̂(s,w)来近似v(s),其中w是函数的参数。
为了找到最优参数w,我们需要定义一个目标函数:
J(w) = (1/2)E[(v(s) - v̂(s,w))²]
这个目标函数衡量了我们的近似值与真实值之间的差距。通过最小化这个目标函数,就能找到最佳的w。这个过程就像调整收音机的旋钮来获得最清晰的信号。
使用梯度下降法更新参数:
w ← w - α∇J(w)
其中α是学习率,∇J(w)是目标函数对w的梯度。在实际计算中,我们通常使用随机梯度下降,即每次只用一个样本来估计梯度,这样可以大大提高计算效率。
1.2 动作值函数近似
类似地,我们可以对动作值函数q(s,a)进行近似。动作值函数表示在状态s下采取动作a,之后遵循策略π能获得的期望回报。这在控制问题中特别有用,因为我们需要比较不同动作的价值来选择最优动作。
动作值函数的近似形式为q̂(s,a,w),参数更新方式与状态值函数类似:
w ← w + α[r + γq̂(s',a',w) - q̂(s,a,w)]∇q̂(s,a,w)
这里r是即时奖励,γ是折扣因子,s'是下一个状态,a'是下一个动作。这个更新规则被称为半梯度法,因为目标值r + γq̂(s',a',w)也依赖于当前的参数w。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
