强化学习之 DQN、Double DQN、PPO

文章目录

通俗理解

DQN

一个简单的比喻和分步解释来理解 DQN(Deep Q-Network,深度 Q 网络),就像教小朋友学打游戏一样:

  • 先理解基础概念:Q 学习(Q-Learning)
    • 想象你在教一只小狗玩电子游戏(比如打砖块)。小狗每做一个动作(比如"向左移动"或"发射球"),游戏会给出一个奖励(比如得分增加)或惩罚(比如球掉了)。小狗的目标是通过不断尝试,学会哪些动作能获得最多奖励。
      Q 值:就是"在某个状态下做某个动作能获得的未来总奖励的预估"。比如:
    • 状态:"球在中间,挡板在左边"
    • 动作:"向右移动挡板"
    • Q 值:预估这个动作未来能得多少分(比如 +5 分)。
    • 小狗会记住每个状态-动作对的 Q 值,然后选择 Q 值最高的动作(贪心策略)。
  • 问题来了:状态太多,记不住!
    • 现实中的游戏状态可能非常复杂(比如球的精确位置、速度、挡板位置等)。如果用表格记录所有状态-动作对的 Q 值,表格会大到存不下(就像试图记住全世界的每一粒沙子)。
  • DQN 的解决方案:用神经网络代替表格
    • DQN 的核心思想是:用神经网络来近似 Q 值函数,而不是用表格。就像用 AI 画一幅画,而不是手动画每一笔。
      输入:当前游戏的状态(比如屏幕像素或简化特征)。
    • 输出:每个可能动作的 Q 值(比如"向左""向右""不动"对应的分数)。
    • 训练:通过游戏中的经验(状态、动作、奖励、新状态)不断调整神经网络,让它的预测越来越准。
  • DQN 的两个关键技巧
    为了让神经网络学得更好,DQN 加了两个"外挂":
    • (1) 经验回放(Experience Replay)

      • 小狗不会只用最近一次的经验学习,而是把过去的经验(比如过去 1000 次的"状态-动作-奖励-新状态")存到一个"记忆库"里,训练时随机抽取一批来学习。这样能避免神经网络被最近的错误"带偏"。
    • (2) 目标网络(Target Network)

      • 训练时,神经网络会不断变化,导致它预测的目标值(比如"未来总奖励")也在变,这会让学习不稳定。DQN 的解法是:复制一个固定的"目标网络",每隔一段时间才更新它,让目标值更稳定。
  • DQN 的工作流程(简单版)
    • 小狗(智能体)观察游戏状态 → 输入神经网络。
    • 神经网络输出每个动作的 Q 值 → 选择 Q 值最高的动作(或偶尔随机探索)。
    • 执行动作,获得奖励和新状态 → 存入记忆库。
    • 从记忆库随机抽取一批经验,用目标网络计算"未来总奖励" → 调整神经网络参数,让预测更准。
    • 重复以上步骤,直到神经网络学会"高手策略"。

DQN 就是用神经网络+经验回放+目标网络,让 AI 在复杂环境中学会"如何做决策",而不需要手动设计规则。它像是一个能从错误中学习、越玩越聪明的"游戏高手"。

Double DQN

我们继续用打游戏的小狗 来比喻,帮你轻松理解 Double DQN (双重 DQN)------ 它是 DQN 的升级版,解决了一个关键问题:DQN 容易高估 Q 值(动作的分数),导致学到的策略不稳定。


  • 先回顾 DQN 的问题:Q 值容易"虚高"
    在 DQN 中,神经网络会预测每个动作的 Q 值(比如"向左移动"得 10 分,"向右移动"得 8 分)。小狗会选择 Q 值最高的动作(比如"向左")。
  • 但 DQN 有一个隐藏 bug
    • 神经网络在预测 Q 值时,可能会过于乐观,把某些动作的分数估得比实际更高(比如"向左"其实只能得 7 分,但 DQN 预测成 10 分)。
    • 这样会导致小狗经常选到"看起来好但实际上一般"的动作,影响学习效果。

为什么会出现这个问题?

因为 DQN 用同一个神经网络同时做两件事:

  1. 预测当前动作的 Q 值(比如"向左"得 10 分)。
  2. 计算未来总奖励(比如"向左后,未来能得多少分")。

由于神经网络本身有误差,它可能会高估未来的奖励,导致 Q 值整体偏大。

  • Double DQN 的解决方案:拆分"选动作"和"评估动作"
  • Double DQN 的核心思想是:让两个不同的神经网络分别负责"选动作"和"评估动作",避免自己高估自己。

具体怎么做?

  1. 仍然用两个网络(和 DQN 一样):

    • 主网络(Main Network):负责预测当前状态下的 Q 值(比如"向左"得 10 分)。
    • 目标网络(Target Network):负责计算未来总奖励(比如"向左后,未来能得多少分")。
  2. 但关键改进:

    • 不再让目标网络直接选"哪个动作最好"(DQN 的做法)。
    • 改成让主网络先选动作,再让目标网络评估这个动作的 Q 值

举个例子:

  • 当前状态:游戏画面
  • 主网络(Main Network) 看了之后,预测"向左"得 10 分,"向右"得 8 分 → 选择"向左"(因为 10 > 8)。
  • 目标网络(Target Network) 不直接选动作,而是计算"如果执行'向左',未来能得多少分"(比如未来能得 5 分)。
  • 最终 Q 值 = 当前奖励 + 未来得分 = 比如 1(当前奖励) + 5(未来得分) = 6 分(而不是 DQN 直接预测的 10 分)。

这样,Q 值就不会被过度高估,因为主网络选动作,目标网络评估动作,两者互相制约。


3. 为什么 Double DQN 更稳定?

  • DQN 的问题:同一个网络既选动作又评估动作,容易"自己骗自己",导致 Q 值虚高。
  • Double DQN 的改进:主网络选动作,目标网络评估动作,避免"高估陷阱",让 Q 值更接近真实情况。

效果

  • 学习更稳定,不会因为 Q 值虚高而选错动作。
  • 最终策略更可靠,游戏得分更高。

4. 类比总结

情况 DQN Double DQN
选动作 目标网络直接选 Q 值最高的动作 主网络先选动作
评估动作 目标网络同时选动作和评估 目标网络只评估主网络选的动作
问题 容易高估 Q 值 避免高估,更稳定

简单来说

  • DQN 是"一个人又当裁判又当选手",容易作弊(高估自己)。
  • Double DQN 是"让一个人选选手,另一个人当裁判打分",更公平!

5. 实际效果

在打砖块游戏中:

  • DQN 可能会因为 Q 值虚高,经常选"看起来好但实际上一般"的动作,导致得分不稳定。
  • Double DQN 能更准确地评估动作价值,学到的策略更稳定,得分更高。

总结

Double DQN 就是 DQN 的"防虚高版本":

  1. 主网络选动作(避免目标网络直接选)。
  2. 目标网络评估动作(避免自己高估自己)。
  3. 结果更稳定、更准确,让 AI 玩游戏更厉害! 🎮✨

PPO

我们继续用打游戏的小狗 来比喻,帮你轻松理解 PPO(近端策略优化,Proximal Policy Optimization)------ 它是一种比 DQN 和 Double DQN 更高效的强化学习算法,特别适合训练智能体(比如游戏 AI、机器人)做出连续决策。

  • 先回顾之前的算法:DQN 的局限性
    • 之前的 DQN(包括 Double DQN)主要适用于离散动作 (比如"向左""向右""不动"),但在现实中,很多任务需要连续动作(比如"用力推 0.5 牛顿""以 3.14 米/秒的速度移动")。
  • DQN 的问题
    • 只能处理离散动作(比如游戏手柄的几个按键)。
    • 学习效率较低,可能需要大量尝试才能找到好策略。

PPO 就是为了解决这些问题 ,它特别适合连续动作任务(比如机器人控制、自动驾驶)。

  • PPO 的核心思想:
    • PPO 的目标是让智能体(小狗)学会不断尝试新动作,但不会因为犯错太严重而崩溃。它的核心思想可以总结成一句话:

"鼓励智能体尝试稍微更好的动作,但别让它冒险尝试太糟糕的动作。"

具体怎么做?

PPO 通过两个关键技巧 实现这个目标:
(1) 策略优化:让智能体学会"微调"动作

  • 智能体(小狗)会不断尝试新动作,并观察结果(奖励或惩罚)。
  • PPO 不会让它一下子彻底改变策略 (比如从"轻轻推"变成"用力砸"),而是鼓励它小幅调整(比如"稍微加大力度")。
  • 这样能避免智能体因为突然尝试太激进的动作而失败(比如游戏角色突然跳崖)。

(2) "安全绳"机制:限制策略变化幅度

  • PPO 会给策略更新加一个**"安全绳"**(数学上的限制),确保新策略和旧策略不会相差太大。
  • 如果新策略太激进(比如突然让小狗疯狂冲刺),PPO 会强制把它拉回来,避免灾难性失败。

类比

  • 就像教小朋友骑自行车:
    • DQN:可能一下子让小朋友从"慢慢骑"变成"飞速冲刺",容易摔倒。
    • PPO:鼓励小朋友"稍微加快一点速度",但如果他差点摔倒,就立刻调整回来。
  • PPO 的训练过程(简单版)
    • 智能体尝试动作:小狗在游戏里随机尝试一些动作(比如"用力推""轻轻拉")。
    • 观察结果:游戏会给出奖励(比如得分增加)或惩罚(比如角色死亡)。
    • 计算"好坏":PPO 会比较新策略和旧策略的表现,看看新动作是否更好。
    • 安全调整:如果新动作太激进(比如导致角色突然死亡),PPO 会强制把策略拉回安全范围。
    • 重复训练:不断重复以上步骤,让智能体学会"稳定进步"的策略。

4. PPO 的优势

对比项 DQN PPO
动作类型 只能处理离散动作(比如按键) 可以处理连续动作(比如力度、速度)
学习效率 需要大量尝试才能找到好策略 更高效,能快速调整策略
稳定性 可能因 Q 值高估而学偏 有"安全绳"机制,避免激进策略
适用场景 简单游戏(如打砖块) 复杂任务(如机器人控制、自动驾驶)

PPO 的特点

适合连续动作 (比如机器人、自动驾驶)。

学习更快、更稳定 (不会因为犯错太严重而崩溃)。

工业级应用广泛(被 DeepMind、OpenAI 等广泛使用)。


5. 举个实际例子:PPO 训练机器人走路

  • 任务:让机器人学会走路(需要控制关节角度、力度等连续动作)。
  • DQN 的问题:只能输出"左转""右转"等离散动作,无法精确控制关节力度。
  • PPO 的解决方案
    • 让机器人尝试微调关节角度(比如"膝盖弯曲 5 度")。
    • 如果机器人差点摔倒,PPO 会强制调整策略,避免过度激进的动作。
    • 最终机器人学会稳定行走,甚至跑步!

6. 总结

PPO 就是一种更聪明、更稳定的强化学习算法,它的核心思想是:

"鼓励智能体尝试更好的动作,但别让它冒险尝试太糟糕的动作。"

用生活比喻

  • DQN:像教小狗"要么完全不动,要么疯狂冲刺"(容易失败)。
  • PPO:像教小狗"每次只稍微调整一点动作,稳步进步"(更安全高效)。

结合公式理解

相关推荐
Listennnn5 小时前
强化学习三大分类
人工智能·强化学习
MarkGosling1 天前
【资源合集】强化学习训练LLM Agents的实战资源库:AgentsMeetRL
llm·agent·强化学习
汤姆和佩琦1 天前
LLMs基础学习(八)强化学习专题(4)
学习·强化学习·策略随机探索
Gowi_fly3 天前
从 PPO、DPO 到 GRPO:大语言模型策略优化算法解析
llm·强化学习
我不是小upper4 天前
AReaL-boba²:首个全异步强化学习训练系统它来了!!
人工智能·强化学习
panbaoran9134 天前
【一】零基础--分层强化学习概览
强化学习·hrl
AI速译官5 天前
Confidence Is All You Need
强化学习
汤姆和佩琦9 天前
LLMs基础学习(八)强化学习专题(1)
深度学习·学习·强化学习·马尔可夫决策过程
白水baishui11 天前
搭建强化推荐的决策服务架构
架构·推荐系统·强化学习·决策服务·服务架构