当前位置: 首页 > news >正文

强化学习之 DQN、Double DQN、PPO

文章目录

  • 通俗理解
    • 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. 类比总结

情况DQNDouble 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 的优势

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

PPO 的特点
适合连续动作(比如机器人、自动驾驶)。
学习更快、更稳定(不会因为犯错太严重而崩溃)。
工业级应用广泛(被 DeepMind、OpenAI 等广泛使用)。


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

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

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

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

用生活比喻

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

结合公式理解

相关文章:

  • 黑马python(八)
  • springboot使用nacos注册中心、配置中心的例子
  • AndroidView的简单使用
  • 物制药自动化新突破:EtherNet/IP转Modbus TCP网关模块实战应用
  • 【AI Study】第四天,Pandas(6)- 性能优化
  • 系统思考与核心竞争力
  • 【AI论文】ReasonMed:一个370K的多智能体生成数据集,用于推进医疗推理
  • OpenStack 入门体验
  • wireshark过滤器的使用
  • 21.加密系统函数
  • 海豚人工智能与大数据实验室的指导和系统内的指导文件是不一样的​
  • Pandas 中的 Period 对象
  • Android 中 解析 JSON 字符串的几种方式
  • man 的用法
  • 数据卷能管理两边,使其数据一致?——补充
  • 5G光网络新突破:<Light: Science Applications>报道可适应环境扰动的DRC实时校准技术
  • FPGA基础 -- Verilog行为建模之循环语句
  • WordPress用 Options Framework 创建一个自定义相册功能
  • linux内核调试
  • 【JUC】显示锁
  • 局网站建设自查/外贸建站平台
  • 建设总承包网站/太原好的网站制作排名
  • 专门做图片的网站/关键词分析软件
  • 做网站用什么技术/免费外网加速器
  • 广州公司注册官网/漳州seo网站快速排名
  • 昭通商城网站建设/搜索大全搜索引擎