强化学习笔记5--值函数近似、policy gradient

一、值函数近似

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 降低方差
相关推荐
EntyIU20 小时前
Flowable流程开发笔记
笔记·flowable
自不量力的A同学1 天前
LibreOffice 26.2.5 发布
笔记
星恒随风1 天前
C++ STL 详解:map 与 multimap 的使用、operator[]
开发语言·c++·笔记·学习·状态模式
@Mike@1 天前
05-数据库学习笔记(缓冲池优化和存储模型)
数据库·笔记·学习
九硕智慧建筑一体化厂家1 天前
直流照明|社区公共空间智慧便民照明方案
笔记·智慧城市
摇滚侠1 天前
Codebuddy 官网 Codebuddy IntelliJ IDEA 插件 阅读笔记 1
java·笔记·intellij-idea
九硕智慧建筑一体化厂家1 天前
直流照明|酒店民宿温馨智能照明方案
笔记·智慧城市
Zzj_tju1 天前
如何写论文复现笔记:从 Reproduction Report 到博客草稿
笔记
IT古董1 天前
【MES学习笔记系列】02 - MES 需求分析
笔记·学习·需求分析