【机器学习】机器学习的基本分类-强化学习-Deep Q-Network (DQN)

Deep Q-Network (DQN) 是 Q-Learning 的扩展版本,通过使用深度神经网络来逼近 Q 函数,解决了 Q-Learning 在高维状态空间上的适用性问题。DQN 是深度强化学习的里程碑之一,其突破性地在 Atari 游戏上表现出了超过人类玩家的水平。


DQN 的核心思想

DQN 使用一个神经网络 来逼近状态-动作值函数 。通过不断地更新网络参数 θ\thetaθ,使其逼近真实的

其主要改进在于解决了传统 Q-Learning 中 不稳定性发散性 的问题。


DQN 的改进与关键技术

  1. 经验回放(Experience Replay)

    • 将智能体的交互数据存储到一个 回放缓冲区(Replay Buffer)中。
    • 随机采样小批量数据进行训练,以减少样本之间的相关性,提高数据利用率。
  2. 目标网络(Target Network)

    • 引入一个与主网络结构相同但参数固定的 目标网络
    • 每隔一定步数,将主网络的参数 θ\thetaθ 同步到目标网络上,减缓更新的频繁波动。
  3. 奖励剪辑(Reward Clipping)

    • 将奖励值裁剪到 ,防止过大值影响梯度更新的稳定性。

DQN 的工作流程

  1. 初始化

    • 初始化主网络 和目标网络
    • 初始化经验回放缓冲区 D。
  2. 采样交互数据

    • 当前状态 sss 下,按照 -贪婪策略选择动作 a:

      • 以 ϵ 的概率随机探索。
      • 以 1−ϵ 的概率选择最大 的动作。
    • 执行动作 a,观察即时奖励 R 和下一状态 s′。

    • 将 (s, a, R, s') 存入经验回放缓冲区 D。

  3. 更新网络参数

    • 从 D 中随机采样一个小批量 (s, a, R, s')。

    • 计算目标值(TD 目标):

    • 计算均方误差(MSE)损失:

      (y−Qθ(s,a))2

    • 使用梯度下降更新主网络参数 θ。

  4. 同步目标网络

    • 每隔固定步数,将主网络的参数 θ 同步到目标网络 θ′。
  5. 迭代训练

    • 重复上述步骤,直到收敛。

伪代码

python 复制代码
Initialize Q-network with random weights θ
Initialize target network Q_target with weights θ_target = θ
Initialize replay buffer D

for episode in range(max_episodes):
    Initialize state s
    for t in range(max_steps_per_episode):
        # ε-greedy action selection
        if random.random() < ε:
            a = random_action()
        else:
            a = argmax(Q(s, a; θ))

        # Execute action and observe next state and reward
        s', R, done = environment.step(a)

        # Store transition in replay buffer
        D.append((s, a, R, s'))

        # Sample random minibatch from replay buffer
        minibatch = random.sample(D, batch_size)

        # Compute target value
        y = R + γ * max(Q_target(s', a'; θ_target)) if not done else R

        # Compute loss and update Q-network
        loss = (y - Q(s, a; θ))^2
        Perform gradient descent on θ to minimize loss

        # Update target network
        if t % target_update_freq == 0:
            θ_target ← θ

        if done:
            break

优缺点

优点
  1. 高效处理高维状态空间:使用神经网络学习 Q(s, a),适用于图像等复杂输入。
  2. 数据利用率高:经验回放缓冲区减少了样本相关性,提高了数据效率。
  3. 稳定性增强:目标网络缓解了更新发散问题。
缺点
  1. 不适用于连续动作空间:DQN 假设动作空间是离散的。
  2. 样本效率低于新方法:如基于策略的算法和 Actor-Critic 方法。
  3. 容易过拟合到训练环境:需要精心设计探索策略。

改进版本

  1. Double DQN

    • 解决 DQN 中 max⁡ 运算导致的 值过高估计 问题。

    • 目标值:

  2. Dueling DQN

    • 将 Q 网络拆分为 状态价值函数 V(s)优势函数 A(s, a)

      Q(s, a) = V(s) + A(s, a)

  3. Prioritized Experience Replay

    • 通过为经验分配优先级,增加对高 TD 误差样本的采样频率。
  4. Rainbow DQN

    • 集成了多种改进,包括 Double DQN、Dueling DQN、Prioritized Replay、Noisy Networks 等。

应用场景

  1. Atari 游戏

    • 使用原始图像像素作为输入,DQN 在许多 Atari 游戏中实现了超越人类玩家的表现。
  2. 自动驾驶

    • 处理离散决策问题,如车道选择。
  3. 动态资源分配

    • 云计算中的任务分配和调度。
  4. 推荐系统

    • 优化用户交互中的点击率。
相关推荐
检信智能1 小时前
检信 Allemotion 多模态融合技术,解析非接触情绪采集的底层逻辑
人工智能·语音识别
RoboWizard2 小时前
固态硬盘对游戏帧数有影响吗?
人工智能
2301_768103495 小时前
AI视频创作Agent实战03:DeepSeek文案裂变与草稿版本控制
人工智能
火山引擎开发者社区5 小时前
Anker 首届黑客松挑战赛|9 月 7 日报名启动
人工智能
Dawson Zhu6 小时前
工作流与 Agent 的工程选型:从“控制权归属“看 LLM 应用架构
人工智能·语言模型·架构·aigc·agi
计算机源码社7 小时前
【大数据项目实战】基于大数据的影视内容生态综合质量分析与可视化-基于数据挖掘的影视内容类型共现与口碑聚类分析系统
大数据·人工智能·python·数据挖掘·数据分析·毕业设计·课程设计
C^h7 小时前
pytorch 适合初学者 0基础学习
人工智能·pytorch·python
Rocky Ding*7 小时前
【三年面试五年模拟】2026-09-06 拼多多 AI Agent研发岗秋招笔试4道算法题完整题解
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·拼多多
小柯南敲键盘7 小时前
跨马翻译:AI批量图片翻译工具,跨境电商视频字幕翻译与智能抠图一体搞定
人工智能·python·音视频
luckystar513~7 小时前
Geo + AI:【时空智能体】技术剖析
人工智能·ai·gis·geoai·空间智能体·时空智能体