一、值函数近似
1. 为什么需要值函数近似
在之前的 TD、SARSA、Q-learning 等方法中,我们默认使用表格型方法 来存储每个状态(或状态-动作对)的价值。但在真实世界中,状态空间往往是连续、高维或极其庞大的:
-
围棋棋盘的状态数约 10^170,远超宇宙原子总数
-
自动驾驶中,摄像头输入是高维连续像素空间
-
机器人控制中,关节角度、角速度等是连续变量
显然,无法为每个可能的状态分配一个独立的存储单元,更不可能遍历所有状态。
值函数近似的核心思想 :不再试图精确记录每一个 v(s) 或 q(s,a),而是用一个参数化的函数来拟合整个价值函数,用有限的参数去捕捉状态空间中内在的结构和规律。
2. 值函数近似的形式

2.1 线性函数近似
当近似函数为参数的线性函数时,形式最为简洁:

其中 ϕ(s) 是状态 s 的特征向量,d 是特征维度,w 是参数向量。
举例:

即使特征向量中包含非线性项,函数对参数 w 仍然是线性的。这种"特征非线性,参数线性"的形式保留了计算和分析上的便利性。
2.2 非线性函数近似
当用神经网络等非线性模型时,形式为:

3. 泛化性

4. 目标函数与优化
要学习参数 w,需要定义一个衡量近似好坏的目标函数,并通过优化算法求解。

4.1 目标函数:加权均方误差
最常用的目标函数是真实价值与估计价值的均方误差:

这里的期望是对状态分布 μ(s) 取的,它决定了不同状态在优化中的重要性。
4.2 状态分布 μ(s) 的两种常见选择

4.3 参数优化:随机梯度下降

代入公式:

公式中的红色项 vπ(s) 是未知的 ,因此这个更新规则无法直接实现。实际应用中,我们采用估计值Ut代替**vπ(s)。**可以采用学习过的MC、sarsa、Q-learing等方法。

5. 从状态价值到动作价值
对动作价值函数 q(s,a) 的近似同理,只需构造状态-动作对的特征向量 ϕ(s,a):

所有优化框架、TD 更新规则都完全通用,只需将 v^(s,w) 替换为 q^(s,a,w),并在更新时使用对应的特征向量即可。
sarsa:

Q-Learing:

6、deep Q-Learing
1. 从 Q-learning 到 Deep Q-Learning
在之前的讨论中,我们使用线性函数近似来替代表格。然而,对许多实际问题(如雅达利游戏,输入是 84x84 像素的屏幕图像),手工设计有效的特征 ϕ(s,a) 极其困难。
Deep Q-Learning 的核心思想:直接用深度神经网络来近似最优动作价值函数 Q*(s,a)。网络将原始状态(如图像像素)作为输入,输出每个动作的 Q 值估计。这个网络记为 Q(s,a;θ),其中 θ 代表网络中所有的权重与偏置。
2. DQN 的目标函数
DQN 的训练目标仍然是 Q-learning 的 TD 误差,但通过最小化一个损失函数来更新网络参数 θ。
对于一条经验样本 (s,a,r,s′),我们希望网络的预测 Q(s,a;θ) 接近 Q-learning 的更新目标,即 TD 目标 y:

其中 θ− 是目标网络(稍后详述)的参数,计算梯度时被当作固定常数。因此,单步的平方误差损失函数为:

实际的优化目标是在经验回放池中采样出的一个 mini-batch 上的期望损失:

这里的 D 是经验回放池,θ− 是被冻结的目标网络参数。通过梯度下降最小化 J(θ),即可端到端地训练深度网络。
对整个 mini-batch 取平均,得到梯度函数:

3. 两大核心技术
单纯的 Q-learning + 神经网络直接训练会极不稳定甚至发散,原因有两点:
-
样本的时序相关性:连续交互产生的样本高度相关,违反 SGD 的独立同分布假设。
-
目标值依赖当前网络:Q-learning 的目标本身包含网络输出,网络更新后目标值立即变化,易形成"追逐移动目标"的震荡。
DQN 通过以下两个创新解决了这些问题:
3.1 经验回放(Experience Replay)
-
做法 :将每一步交互产生的转移 (s,a,r,s′)存入一个固定大小的回放缓冲区 D。训练时,从 D 中均匀随机采样一个 mini-batch 进行参数更新。
-
作用:
-
打破数据相关性:随机采样使训练样本近似独立同分布,稳定了梯度更新。
-
提高样本效率:每条经验可以被多次学习,避免一次性丢弃。
-
3.2 目标网络(Fixed Target Network)
-
做法:维护两个结构相同的神经网络:
-
在线网络 Q(s,a;θ):每一步都参与更新,实时跟踪最新参数。
-
目标网络 Q(s,a;θ−):每隔固定步数 C,才将在线网络的参数 θ 完整拷贝过来:θ−←θ。在这期间,θ− 保持不变。
-
-
作用:使 TD 目标 在若干步内保持相对稳定,解决了目标值与当前网络高度耦合所导致的训练震荡或发散,使学习过程更加平稳。
4. DQN 算法流程

5、问题解决
3. 常见的目标函数(衡量指标)
3.1 基于状态价值的目标函数
每个状态价值的均值
对于回合制任务或带有discount的连续任务,通常用状态价值函数的加权平均:
3.2 平均奖励目标函数
每一步即时奖励的均值且不含discount
对于 continuing 任务 (无终止状态),常用平均每步奖励:
-
对"内存开销大"的解决 :以固定数量的网络参数θ ,替代了与状态空间成正比的巨型表格。这是一种极致的压缩和泛化方式。
-
对"定义函数难"的解决 :用端到端的深度学习 ,替代了需要人类智慧的手工特征工程。网络在原始数据和任务奖励的驱动下,自己去发现什么是重要的。
二、Policy Gradient
1. 基本思想与参数化策略
策略梯度方法直接对策略进行参数化:

这里 θ 是策略的参数向量(比如神经网络的权重)。我们希望找到最优参数 θ*,使得某个衡量策略表现的目标函数 J(θ) 最大化。学习过程就是沿着梯度方向更新参数:

2. 与表格型方法的对比
-
优化对象不同
-
表格型:直接对每个状态(或状态-动作对)的价值进行估计,最优策略就是每个状态下取最大价值的动作。
-
策略梯度:优化目标是关于参数 θθ 的标量函数 J(θ),通过调整 θ 来最大化 J,而不是直接操纵价值表。
-
-
获取动作概率的方式不同
-
表格型:每个状态下的动作概率直接存储在表中,查表即可得到 π(a∣s)。
-
策略梯度:需要用一个函数逼近器(如神经网络)从状态 s 映射到动作概率分布,通过前向传播计算出 πθ(a∣s)。
-
-
策略修改的机制不同
-
表格型:修改策略就是直接修改表格中的概率值(例如将贪心动作概率设为1)。
-
策略梯度:不直接修改概率,而是通过改变参数 θ 间接改变整个策略分布,这种"间接控制"使得泛化成为可能,但也使得更新更依赖梯度信号。
-
-
编辑 其中 d(s) 是状态分布,代表我们关心哪些状态。常见的 dd 选取方式:
-
与策略无关的分布

-
与策略有关的分布

-
编辑
3.3 论文中最常见的折中形式

4. 策略梯度定理与梯度计算
无论选择哪种目标函数,策略梯度定理 都给出了一个不含状态分布导数的期望形式,这是所有策略梯度算法的基石。
下面以reinforce方法为例:

某条trajectory上的奖励为R(τ)所有trajectory在参数θ下的平均奖励为

进行梯度计算:

进一步变换,n表示trajectory的索引,t表示某条trajectory上的某对(st,at)

收集数据,根据公式更新参数,不断循环

4.1 定理统一形式
对于上述所有目标函数,梯度都可以写成:Q近似于G即trajectory上的return,pθ(a|s)=π(a|s)

更准确地说:

4.2 基本梯度估计:REINFORCE

4.3 引入 Baseline 降低方差
