机器学习 | 细说Deep Q-Network(DQN)

发布于:2025-04-18 ⋅ 阅读:(26) ⋅ 点赞:(0)

👀参考视频&博客

📝相关前文导航

📚传统Q学习的局限性

  • 在强化学习中,智能体通过试错学习策略,Q学习算法通过维护一个Q表(表格记录每个状态-动作对的预期收益)来指导决策。但Q表存在致命缺陷:
    • 维度灾难:当状态空间庞大(如游戏画面是像素级输入)时,Q表无法存储所有可能的状态-动作对。传统Q表存储的Q值数量为 ∣ S ∣ × ∣ A ∣ ∣S∣×∣A∣ S×A,当状态空间 S S S是连续或高维时,存储和更新Q表变得不可行。
    • 泛化能力差:无法通过已有经验推理类似但未见过的情况。传统Q学习无法通过“相似状态”推理未见过的情况,例如在迷宫中,两个结构相似但位置不同的状态需要重新学习,而DQN的神经网络可通过特征提取自动泛化
  • Q表就像一个只能靠死记硬背的学生,面对一本百科全书厚度的题目(复杂状态),它需要记住每一题的答案(动作价值),但现实是题目太多根本记不住,遇到新题时更是一筹莫展

📚DQN介绍

🐇核心思想

  • DQN用神经网络替代Q表,实现从状态到动作价值的映射(Q函数近似)。DQN用神经网络 Q ( s , a ; θ ) Q(s,a;θ) Q(s,a;θ)替代Q表,输入状态 s s s,输出所有动作的Q值。目标是最小化预测Q值与目标Q值的均方误差(MSE)
    • L ( θ ) = E [ ( r + γ max ⁡ a ′ Q t a r g e t ( s ′ , a ′ ) − Q ( s , a ; θ ) ) 2 ] L(\theta) = \mathbb{E}\left[ \left( r + \gamma \operatorname*{max}_{a'} Q_{\mathrm{target}}(s', a') - Q(s, a; \theta) \right)^2 \right] L(θ)=E[(r+γmaxaQtarget(s,a)Q(s,a;θ))2],其中 θ θ θ是主网络参数。
  • 优势与意义:
    • 处理高维状态:神经网络可处理图像、声音等复杂输入。
    • 样本高效:经验回放允许重复利用历史数据。
    • 稳定训练:目标网络缓解了「追逐移动目标」的问题。
  • 🌟 DQN就像一个「会总结经验的老司机」
    • 它把每次开车经历(经验)记录到笔记本(经验池)中,随机翻阅不同路况(随机采样),避免只记住最近一次事故(打破相关性)。
    • 同时,它有一个「驾驶教科书」(目标网络),每隔一段时间更新一次,而不是每天改交规(稳定学习目标),最终练就了稳定驾驶技术。

🐇关键技术

  • 经验回放(Experience Replay)
    • 原理:智能体将每一步的经验(状态、动作、奖励、下一状态)存储在一个经验池中。 训练时,从经验池中随机抽取一批历史经验(而非按顺序使用),打破数据间的相关性,避免模型陷入局部最优(如连续相似状态导致梯度更新方向偏差)。
    • 🌟经验回放就像一个厨师做菜
      • 传统Q学习是「边买菜边做菜」,食材(经验)按顺序处理,可能重复用同一种食材,导致菜品(模型)味道单一。
      • DQN的厨师会先把各种食材(不同时间、不同状态的经验)存放到冰箱(经验池),每次随机取出不同食材混合烹饪(随机采样),最终菜品更均衡稳定。
  • 目标网络(Target Network)
    • 原理 :使用两个结构相同的神经网络主网络(Main Network)负责选择动作和实时更新参数。目标网络(Target Network)用于计算TD目标(Q目标值),参数定期从主网络同步。 目标网络的参数更新频率远低于主网络(如每1000步同步一次)。
    • 🌟目标网络就像一个「参考答案库」
      • 如果学生(主网络)每次做题时,答案(目标值)都根据自己当前的知识随时变化,会导致学习混乱(如今天说1+1=2,明天说1+1=3)。
      • DQN的解决方案是:定期从老师(目标网络)那里获取一份固定答案(冻结参数),学生在一段时间内基于这份答案学习,避免自我干扰。

🐇DQN的工作流程

⭐️流程分步讲解

---

  1. 当前状态(S) :就像司机看到的路况(如红灯、行人、车道线),输入到Q网络中,网络会给出每个动作的“驾驶评分”(Q值)。
  2. 动作选择(A) ——ε-greedy策略
    • ε概率:Q-Netwiork,选评分最高的动作(如绿灯直行)。
    • 1-ε概率:随机选动作(如突然左转,探索未知操作)。
    • 初始新手爱乱试,随着训练降低,老司机更信任经验。
  3. 与环境互动
    • 执行动作后,环境反馈奖励(R)和新状态(S’)。
    • 奖励像交规打分(安全驾驶+1分,闯红灯-10分)。
    • 新状态是下一步的路况(如变绿灯、出现障碍物)。
  4. 经验存储(Experience Replay)
    • 将这次经历(S, A, R, S’)存入经验池(D),类似司机的行车记录仪。
    • 池子容量有限,新经验会覆盖旧数据(保留近期和多样化的驾驶片段)。
  5. 训练Q网络
    • 随机抽取一批经验:避免“只记得最近事故”,综合不同场景学习。
    • 计算目标Q值(y) y = R + γ ⋅ max ⁡ a ′ Q target ( S ′ , a ′ ) y = R + \gamma \cdot \max_{a'} Q_{\text{target}}(S', a') y=R+γmaxaQtarget(S,a)
      • γ(折扣因子):像司机的远见(0.9表示重视未来奖励,0.1则短视)。
      • 目标网络(Target Q-Network):提供稳定的参考Q值(类似驾校教材,定期更新,避免答案总变)。
    • 计算损失(Loss)KaTeX parse error: Expected 'EOF', got '}' at position 5: Loss}̲ = \frac{1}{N} …,相当于对比“司机预测的驾驶评分”和“实际应得的评分”,误差越大,调整越迫切。
    • 梯度下降更新主网络
      • 通过反向传播计算梯度(分析错误来源),用优化器(如Adam)调整主网络参数,减少预测误差。
      • 类似学生通过错题本修正知识漏洞,下次遇到类似路况时评分更准。
  6. 更新参数(硬更新)
    • 每隔一段时间,将主网络参数( ω ω ω复制给目标网络( ω T ω_T ωT,就像教练根据学员进步修订教材。
    • 训练目标是让主网络的预测Q值接近目标Q值(减少预测误差)。

🔄 整体流程循环小结

  1. 交互:观察状态 → 选择动作 → 获得反馈(R, S’)。
  2. 存储:记录经验(S, A, R, S’)到池子。
  3. 学习随机抽经验计算目标值(y)计算损失梯度下降更新主网络
  4. 同步:定期同步目标网络参数。

🐇DQN的局限性及改进方向

  • 局限性
    • 过高估计(Overestimation):因 max 操作导致Q值被系统性高估,影响策略稳定性(Double DQN通过解耦动作选择与评估解决此问题)。
    • 灾难性遗忘(Catastrophic Forgetting):神经网络在更新后可能遗忘早期经验(可通过持续经验回放缓解)。
  • 改进算法
    算法 核心改进 效果
    Double DQN 使用主网络选择动作,目标网络评估值 减少Q值高估计
    Dueling DQN 分离状态价值与动作优势函数 提升策略评估效率
    Noisy DQN 在网络参数中引入噪声 替代ε-greedy,实现自适应探索

网站公告

今日签到

点亮在社区的每一天
去签到