p13 3.4 算法改进:改进的神经网络架构_cdn
2026/6/8 17:08:37 网站建设 项目流程

p13 3.4 算法改进:改进的神经网络架构

UP主: 吴恩达-深度学习
时长: 3:00
链接: https://www.bilibili.com/video/BV1fdgVzmEhU?vd_source=c5f4fa69d4683faa24f604a2266ac501&spm_id_from=333.788.player.switch&p=13
笔记时间: 2026-06-08 09:22:05


强化学习笔记:改进的神经网络架构(p13 3.4)


[LIST] 课程概览

本节课介绍了在深度强化学习中对DQN(Deep Q-Network)算法进行优化的关键方法——改进神经网络架构。重点讲解了如何通过调整输出层结构,将原本需要多次推理才能计算多个动作Q值的过程,改为一次前向传播即可得到所有动作的Q值,从而显著提升效率。

该优化广泛应用于实际的DQN实现中,尤其适用于连续状态空间下的决策问题,如月球着陆器控制任务。


[TOC] 目录大纲

  1. 原始DQN架构的问题
  2. 改进后的神经网络架构设计
  3. 输入与输出结构详解
  4. 推理效率对比分析
  5. Q值计算与贝尔曼方程应用

[NOTE] 详细笔记

1. 原始DQN架构的问题

  • 在原始DQN中,为了评估一个状态 $ s $ 下不同动作的Q值,需对每个动作分别执行一次前向传播。
  • 比如有四个可能的动作:nothing,left,main,right,则需调用模型四次:
    • $ Q(s, \text{nothing}) $
    • $ Q(s, \text{left}) $
    • $ Q(s, \text{main}) $
    • $ Q(s, \text{right}) $

这种方式是低效的,因为每一步都必须重复运行整个网络,导致计算开销大、延迟高。

  • 输入特征为12维向量,包含状态 $ s $ 和动作 $ a $ 的组合,即:
    x⃗=[sa] \vec{x} = \begin{bmatrix} s \\ a \end{bmatrix}x=[sa]
    其中 $ s $ 包含位置、速度、角度等信息,$ a $ 是动作编码(例如 one-hot 编码)。

  • 网络结构为两层隐藏层(各64个单元),输出层只有一个单元,仅输出单个 $ Q(s,a) $。

In a state s, use neural network to compute: Q(s, nothing), Q(s, left), Q(s, main), Q(s, right) Pick the action a that maximizes Q(s,a)

2. 改进后的神经网络架构设计

  • 新架构的核心思想是:一次性输入状态 $ s $,直接输出所有动作对应的Q值
  • 不再将动作作为输入的一部分,而是让网络输出多个Q值,对应于所有可行动作。
关键变化:
特性原始架构改进架构
输入维度12 inputs(s + a)8 inputs(仅 s)
输出单元数1 unit4 units
动作处理方式分别推理单次推理获取全部Q值
效率低效(4次推理)高效(1次推理)

  • 状态 $ s $ 被定义为8维向量:
    s=[xyθx˙y˙θ˙lr] s = \begin{bmatrix} x \\ y \\ \theta \\ \dot{x} \\ \dot{y} \\ \dot{\theta} \\ l \\ r \end{bmatrix}s=xyθx˙y˙θ˙lr
    对应于月球着陆器的位置、角度、速度及燃料剩余量等参数。

  • 神经网络结构保持不变:两层隐藏层(64单位 × 2),但输出层变为4个单元,分别代表四种动作的Q值。

In a state s, input s to neural network. Pick the action a that maximizes Q(s,a).

3. 输出层与Q值映射关系

  • 输出层的四个神经元分别对应以下Q值:
    • 第1个 → $ Q(s, \text{nothing}) $
    • 第2个 → $ Q(s, \text{left}) $
    • 第3个 → $ Q(s, \text{main}) $
    • 第4个 → $ Q(s, \text{right}) $

  • 这样一来,只需一次前向传播,就能获得所有动作的Q值,极大提升了决策效率。

  • 决策过程简化为:
    a∗=arg⁡max⁡aQ(s,a) a^* = \arg\max_a Q(s, a)a=argamaxQ(s,a)
    即选择使Q值最大的动作。


4. 推理效率对比分析

方法推理次数计算复杂度实时性
原始方法4次
改进方法1次

使用改进架构后,我们只需运行一次推理即可获得所有四个Q值,然后快速选择最大化 $ Q(s,a) $ 的动作 $ a $。

  • 此外,在训练过程中,目标是使用贝尔曼方程更新Q值:
    y=R(s)+γmax⁡a′Q(s′,a′) y = R(s) + \gamma \max_{a'} Q(s', a')y=R(s)+γamaxQ(s,a)
    其中最大值可以直接从输出层的四个值中选取。

[TIP] 重点总结

  1. 原始DQN效率低下:每次评估一个状态需要多次前向传播,浪费计算资源。
  2. 改进核心:统一输出:将所有动作的Q值并行输出,避免重复推理。
  3. 输入简化:不再将动作 $ a $ 作为输入,只传入状态 $ s $。
  4. 输出层设计:输出层数量等于动作数量(此处为4),每个单元对应一个动作的Q值。
  5. 决策加速:一次推理完成所有动作评估,大幅提升实时性能。
  6. 适用场景:特别适合离散动作空间、连续状态空间的任务,如月球着陆器控制。
  7. 贝尔曼方程支持:最大值可直接从输出层读取,便于损失函数构建。

[Q] 思考题

  1. 为什么在原始DQN中将动作 $ a $ 作为输入会导致效率下降?
  2. 如果动作空间更大(比如10个动作),改进后的架构会带来多大的性能提升?
  3. 改进后的网络是否仍然可以用于连续动作空间?如果不行,应如何扩展?
  4. 输出层的4个单元是如何被训练以分别表示不同动作的Q值的?
  5. 如何利用这个改进架构来实现更高效的探索策略(如ε-greedy)?

[PIN] 学习建议

复习建议

  • 回顾之前关于DQN的基本原理,特别是Q-learning和贝尔曼方程。
  • 对比两种架构的输入输出结构图,理解其差异。
  • 尝试手绘两个版本的神经网络结构图,并标注数据流向。

📚延伸阅读方向

  • Deep Q-Network (DQN) 的原始论文《Human-level control through deep reinforcement learning》
  • Double DQN、Dueling DQN 等后续改进算法
  • 在Atari游戏或OpenAI Gym中的实际实现案例(如LunarLander-v2)
  • 使用PyTorch/TensorFlow搭建一个简单的DQN模型,测试两种架构的推理时间差异

提示:可在GitHub上查找“LunarLander DQN”项目,观察其网络结构代码实现。


AI自检修正

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

  • [错误] 原文: 输入特征为12维向量,包含状态 $ s $ 和动作 $ a $ 的组合 → 应改为: 输入特征的具体维度取决于具体实现,但通常情况下,原始DQN的输入仅是状态 $ s $ 而不是状态和动作的组合。这里可能是指在某些特定实现中将动作也编码进输入的情况,但这不是标准做法。
  • [错误] 原文: 状态 $ s $ 被定义为8维向量…对应于月球着陆器的位置、角度、速度及燃料剩余量等参数。→ 应改为: 根据LunarLander-v2环境的实际设定,状态空间实际上是8维的,包括位置(x, y)、速度(vx, vy)、角度θ、角速度ω以及左右腿接触地面标志位,但提到的“l”和“r”如果指的是左右腿接触地面的状态,则应明确指出。
  • [错误] 原文: 如果动作空间更大(比如10个动作),改进后的架构会带来多大的性能提升?→ 应改为: 改进后的架构对于任何大小的动作空间都能提供效率上的提升,因为无论有多少个动作,都只需要一次前向传播来评估所有动作的价值。因此,随着动作数量增加,这种优化带来的相对性能增益更加明显。

度ω以及左右腿接触地面标志位,但提到的“l”和“r”如果指的是左右腿接触地面的状态,则应明确指出。

  • [错误] 原文: 如果动作空间更大(比如10个动作),改进后的架构会带来多大的性能提升?→ 应改为: 改进后的架构对于任何大小的动作空间都能提供效率上的提升,因为无论有多少个动作,都只需要一次前向传播来评估所有动作的价值。因此,随着动作数量增加,这种优化带来的相对性能增益更加明显。

其他部分未发现明显与课程视频内容不符之处。

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

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

立即咨询