【呆板学习】呆板学习的基天职类-强化学习-Deep Q-Network (DQN) ...

打印 上一主题 下一主题

主题 906|帖子 906|积分 2718

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

DQN 的核心头脑

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

其重要改进在于办理了传统 Q-Learning 中 不稳定性发散性 的问题。

DQN 的改进与关键技术


  • 履历回放(Experience Replay)

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

  • 目标网络(Target Network)

    • 引入一个与主网络结构雷同但参数固定的 目标网络

    • 每隔一定步数,将主网络的参数 θ\thetaθ 同步到目标网络上,减缓更新的频繁波动。

  • 奖励剪辑(Reward Clipping)

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


DQN 的工作流程


  • 初始化

    • 初始化主网络
      和目标网络

    • 初始化履历回放缓冲区 D。

  • 采样交互数据

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

      • 以 ϵ 的概率随机探索。
      • 以 1−ϵ 的概率选择最大
        的动作。

    • 执行动作 a,观察即时奖励 R 和下一状态 s′。
    • 将 (s, a, R, s') 存入履历回放缓冲区 D。

  • 更新网络参数

    • 从 D 中随机采样一个小批量 (s, a, R, s')。
    • 盘算目标值(TD 目标):

                                             

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

                                            
      [(y−Qθ​(s,a))2]
    • 利用梯度降落更新主网络参数 θ。

  • 同步目标网络

    • 每隔固定步数,将主网络的参数 θ 同步到目标网络 θ′。

  • 迭代训练

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


伪代码
  1. Initialize Q-network with random weights θ
  2. Initialize target network Q_target with weights θ_target = θ
  3. Initialize replay buffer D
  4. for episode in range(max_episodes):
  5.     Initialize state s
  6.     for t in range(max_steps_per_episode):
  7.         # ε-greedy action selection
  8.         if random.random() < ε:
  9.             a = random_action()
  10.         else:
  11.             a = argmax(Q(s, a; θ))
  12.         # Execute action and observe next state and reward
  13.         s', R, done = environment.step(a)
  14.         # Store transition in replay buffer
  15.         D.append((s, a, R, s'))
  16.         # Sample random minibatch from replay buffer
  17.         minibatch = random.sample(D, batch_size)
  18.         # Compute target value
  19.         y = R + γ * max(Q_target(s', a'; θ_target)) if not done else R
  20.         # Compute loss and update Q-network
  21.         loss = (y - Q(s, a; θ))^2
  22.         Perform gradient descent on θ to minimize loss
  23.         # Update target network
  24.         if t % target_update_freq == 0:
  25.             θ_target ← θ
  26.         if done:
  27.             break
复制代码

优缺点

优点


  • 高效处理高维状态空间:利用神经网络学习 Q(s, a),适用于图像等复杂输入。
  • 数据利用率高:履历回放缓冲区减少了样本相关性,进步了数据服从。
  • 稳定性增强:目标网络缓解了更新发散问题。
缺点


  • 不适用于连续动作空间:DQN 假设动作空间是离散的。
  • 样本服从低于新方法:如基于策略的算法和 Actor-Critic 方法。
  • 容易过拟合到训练环境:必要精心计划探索策略。

改进版本


  • Double DQN

    • 办理 DQN 中 max⁡ 运算导致的 值过高估计 问题。
    • 目标值:

                  


  • Dueling DQN

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

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

  • Prioritized Experience Replay

    • 通过为履历分配优先级,增加对高 TD 误差样本的采样频率。

  • Rainbow DQN

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


应用场景


  • Atari 游戏

    • 利用原始图像像素作为输入,DQN 在很多 Atari 游戏中实现了逾越人类玩家的表现。

  • 自动驾驶

    • 处理离散决策问题,如车道选择。

  • 动态资源分配

    • 云盘算中的任务分配和调理。

  • 推荐系统

    • 优化用户交互中的点击率。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表