p12 3.3 学习状态值函数_cdn
2026/6/6 19:32:26 网站建设 项目流程

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; a]x=[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)+γamaxQ(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)+γmaxaQ(s,a)
    • 训练神经网络fw,b(x)f_{w,b}(x)fw,b(x)来拟合yyy

数学表达式:

fw,b(x)≈y f_{w,b}(x) \approx yfw,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))+γmaxaQ(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维向量作为输入
3one-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)+γmaxaQ(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 yxy的训练数据示意图

📌 提示:本节内容是深度强化学习的基础,掌握好这个“从贝尔曼方程到监督学习”的转换逻辑,对于后续理解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)+γmaxaQ(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)+γmaxaQ(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)+γmaxaQ(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)+γmaxaQ(s,a)

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

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


补充截图

在每一步中,Q都只是某种猜测,
随着时间的推移,他们会变得更好,结果证明这就是实际的Q函数

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询