p12 3.3 学习状态值函数_cdn

p12 3.3 学习状态值函数

UP主 : 吴恩达-深度学习

时长 : 16:50

链接 : https://www.bilibili.com/video/BV1fdgVzmEhU?vd_source=c5f4fa69d4683faa24f604a2266ac501\&spm_id_from=333.788.player.switch\&p=12

笔记时间: 2026-06-05 11:52:16


【2025版】吴恩达强化学习教程 - 3.3 学习状态值函数


LIST 课程概览

本节课主要讲解如何使用深度神经网络来学习状态-动作值函数 Q(s,a)Q(s,a)Q(s,a),重点介绍了在连续状态空间中通过贝尔曼方程构建训练样本,并将强化学习问题转化为监督学习任务。课程以月球着陆器为例,展示了如何将状态和动作编码为输入向量,并利用神经网络逼近 Q(s,a)Q(s,a)Q(s,a)。


TOC 目录大纲

  1. 引入:连续状态空间与状态值函数学习
  2. 神经网络结构设计:输入与输出
  3. 状态与动作的编码方式
  4. 贝尔曼方程的推导与应用
  5. 从强化学习到监督学习的转化
  6. 训练数据的生成机制

NOTE 详细笔记

1. 引入:连续状态空间与状态值函数学习

  • 本节主题是"Continuous State Spaces "下的"Learning the state-value function"。
  • 在连续状态空间中,无法用查表法存储所有状态的值,因此需要使用函数逼近方法(如神经网络)来估计状态值或动作值函数。
  • 核心目标是学习一个函数 Q(s,a)Q(s,a)Q(s,a),表示在状态 sss 下采取动作 aaa 的期望回报。

📌 注:此处未出现字幕,但截图明确显示课程主题为"Learning the state-value function",结合上下文可确认这是本节核心目标。


2. 神经网络结构设计:输入与输出

  • 使用一个前馈神经网络来近似 Q(s,a)Q(s,a)Q(s,a):

    • 输入层:12个输入单元
    • 第一隐藏层:64个单元
    • 第二隐藏层:64个单元
    • 输出层:1个单元,输出 Q(s,a)Q(s,a)Q(s,a)
  • 网络结构图示如下:

    [输入] → [64 units] → [64 units] → [1 unit]
    ↑ ↑ ↑
    12 inputs hidden layer output

  • 每次输入一个状态 sss 和一个动作 aaa,网络输出对应的 Q(s,a)Q(s,a)Q(s,a) 值。

  • 动作选择策略:对所有可能动作计算 Q(s,a)Q(s,a)Q(s,a),选择最大值对应的动作。

✅ 示例动作包括:nothing, left, main, right(共四个离散动作)


3. 状态与动作的编码方式

  • 状态 sss :由8个数字构成的列表,包含以下信息:
    • x,yx, yx,y: 当前位置坐标
    • x˙,y˙\dot{x}, \dot{y}x˙,y˙: x 和 y 方向的速度
    • θ\thetaθ: 航天器角度
    • θ˙\dot{\theta}θ˙: 角速度
    • LR: 左右腿着地位置(可能用于判断是否安全着陆)
  • 动作 aaa :使用 one-hot 编码表示:
    • 若动作是第一个动作(如"无动作"),则编码为 [1, 0, 0, 0]
    • 若是第二个动作(如"左"),则编码为 [0, 1, 0, 0]
  • 合并后的输入向量 x⃗=s;a\vec{x} = s; ax =s;a 共有 12 维(8维状态 + 4维动作编码)。

📝 截图中显示:

复制代码
[S]
[a]

表示输入是状态和动作的拼接。


4. 贝尔曼方程的推导与应用

  • 贝尔曼方程(Bellman Equation)是强化学习的核心公式之一:

    Q(s,a)=R(s)+γmax⁡a′Q(s′,a′) Q(s,a) = R(s) + \gamma \max_{a'} Q(s', a') Q(s,a)=R(s)+γa′maxQ(s′,a′)

    • Q(s,a)Q(s,a)Q(s,a): 当前状态动作对的值函数
    • R(s)R(s)R(s): 执行动作后获得的即时奖励
    • γ\gammaγ: 折扣因子(通常 0<γ<10 < \gamma < 10<γ<1)
    • s′s's′: 下一状态
    • a′a'a′: 下一时刻可能的动作

🔍 解释:

  • 左边 Q(s,a)Q(s,a)Q(s,a) 是我们要学习的目标函数
  • 右边分为两部分:
    • 即时奖励 R(s)R(s)R(s)
    • 加上未来最大可能回报的折扣值

5. 从强化学习到监督学习的转化

  • 将强化学习问题转化为监督学习 问题:
    • 定义输入 x=(s,a)x = (s, a)x=(s,a)
    • 定义标签 y=R(s)+γmax⁡a′Q(s′,a′)y = R(s) + \gamma \max_{a'} Q(s', a')y=R(s)+γmaxa′Q(s′,a′)
    • 训练神经网络 fw,b(x)f_{w,b}(x)fw,b(x) 来拟合 yyy

数学表达式:

fw,b(x)≈y f_{w,b}(x) \approx y fw,b(x)≈y

  • 这样就可以使用标准的监督学习方法(如梯度下降)来训练神经网络。

✅ 关键思想:虽然没有真实标签,但我们可以通过贝尔曼方程构造"伪标签" yyy。


6. 训练数据的生成机制

  • 每次在环境中执行一次操作,可以获得一组观测数据:

    (s(i),a(i),R(s(i)),s′(i)) (s^{(i)}, a^{(i)}, R(s^{(i)}), s'^{(i)}) (s(i),a(i),R(s(i)),s′(i))

  • 利用这些数据可以构造训练样本 (x,y)(x, y)(x,y):

    • x=s(i);a(i)x = s\^{(i)}; a\^{(i)}x=s(i);a(i)
    • y=R(s(i))+γmax⁡a′Q(s′(i),a′)y = R(s^{(i)}) + \gamma \max_{a'} Q(s'^{(i)}, a')y=R(s(i))+γmaxa′Q(s′(i),a′)

💡 说明:

  • 多次交互会生成多个这样的样本
  • 每个样本都可用于训练神经网络
  • 最终目标是让网络输出 Q(s,a)Q(s,a)Q(s,a) 接近贝尔曼方程右侧的值

TIP 重点总结

编号 知识点 一句话解释
1 状态-动作值函数 Q(s,a)Q(s,a)Q(s,a) 表示在状态 sss 下执行动作 aaa 的长期期望回报
2 神经网络输入结构 将状态 sss 和动作 aaa 拼接成12维向量作为输入
3 one-hot 编码动作 用4维向量表示4个离散动作,实现动作的数值化
4 贝尔曼方程 Q(s,a)=R(s)+γmax⁡a′Q(s′,a′)Q(s,a) = R(s) + \gamma \max_{a'} Q(s', a')Q(s,a)=R(s)+γmaxa′Q(s′,a′),用于构建训练目标
5 监督学习视角 将强化学习转化为 f(x)≈yf(x) \approx yf(x)≈y 的回归问题
6 训练样本生成 通过环境交互获取 (s,a,R,s′)(s,a,R,s')(s,a,R,s′),再用贝尔曼方程计算 yyy

Q 思考题

  1. 为什么不能直接用查表法存储 Q(s,a)Q(s,a)Q(s,a)?在连续状态空间中该如何解决?
  2. 如何理解"将强化学习转化为监督学习"这一过程?其背后的数学依据是什么?
  3. 如果动作空间是连续的(例如推力大小),应该如何修改当前模型?
  4. 在训练过程中,我们使用的 yyy 是基于当前 QQQ 函数的估计值,这会导致什么潜在问题?如何缓解?

PIN 学习建议

  • 复习建议

    • 回顾第2门课中的神经网络基础(尤其是回归任务)
    • 理解贝尔曼方程的物理意义:当前价值 = 即时奖励 + 未来最优价值
    • 实践动手:尝试在简单环境中(如CartPole)实现一个类似的Q网络
  • 延伸阅读方向

    • DQN(Deep Q-Network)论文:Mnih et al., "Human-level control through deep reinforcement learning"
    • TD-learning(时序差分学习)原理
    • Target Network 与 Experience Replay 的作用(将在后续章节介绍)
  • 推荐练习

    • 使用Python实现一个简单的Q网络,输入状态和动作,输出Q值
    • 手动计算几个样本的贝尔曼目标 yyy
    • 尝试画出 x→yx \to yx→y 的训练数据示意图

📌 提示:本节内容是深度强化学习的基础,掌握好这个"从贝尔曼方程到监督学习"的转换逻辑,对于后续理解DQN、DDPG等算法至关重要。


AI自检修正

以下为AI自动检查发现的潜在问题,请人工确认:

  • 错误 原文: Q(s,a)=R(s)+γmax⁡a′Q(s′,a′)Q(s,a) = R(s) + \gamma \max_{a'} Q(s', a')Q(s,a)=R(s)+γmaxa′Q(s′,a′) → 应改为: Q(s,a)=R(s,a)+γmax⁡a′Q(s′,a′)Q(s,a) = R(s, a) + \gamma \max_{a'} Q(s', a')Q(s,a)=R(s,a)+γmaxa′Q(s′,a′)

    • 解释:即时奖励 RRR 不仅取决于状态 sss,还取决于动作 aaa。因此,正确的贝尔曼方程应该包含动作 aaa。
  • 错误 原文: 定义标签 y=R(s)+γmax⁡a′Q(s′,a′)y = R(s) + \gamma \max_{a'} Q(s', a')y=R(s)+γmaxa′Q(s′,a′) → 应改为: 定义标签 y=R(s,a)+γmax⁡a′Q(s′,a′)y = R(s, a) + \gamma \max_{a'} Q(s', a')y=R(s,a)+γmaxa′Q(s′,a′)

    • 解释:同样地,在定义监督学习的标签时,即时奖励 RRR 也应包括动作 aaa。

其他部分未发现明显错误。


补充截图

在每一步中,Q都只是某种猜测,

随着时间的推移,他们会变得更好,结果证明这就是实际的Q函数

一个神经网络架构,它将输入状态和动作,并尝试输出Q函数,即Q(s, a)

相关推荐
亲爱的阿瞎15 小时前
p09 2.4 random stochastic e_cdn
强化学习
亲爱的阿瞎1 天前
p08 2.3 贝尔曼方程_cdn
强化学习
盼小辉丶2 天前
PyTorch强化学习实战(11)——N步DQN(N-step DQN)
pytorch·python·深度学习·强化学习
啵啵鱼爱吃小猫咪3 天前
示教学习强化学习用的标准数据集
机器人·强化学习·示教学习
SuperHeroWu73 天前
【算法】强化学习中奖励和损失函数的关系
算法·环境·强化学习·损失函数·奖励
Agilex松灵机器人3 天前
松灵技术生态|IsaacLab中实现松灵PIPER机械臂键盘遥操作与数据采集教程
agent·强化学习·仿真·具身智能·skill·松灵机器人
皮皮木子7 天前
rl_locomotion 编译过程三
编译·强化学习·cmake·蒸馏
强盛机器学习~8 天前
2026热门方向!基于强化学习的多无人机移动边缘计算与路径规划研究(完整代码&数据)
人工智能·matlab·无人机·边缘计算·强化学习·无人机路径规划
春日见8 天前
强化学习方法分类:
人工智能·机器学习·分类·数据挖掘·强化学习