type
status
date
slug
summary
tags
category
icon
password
😀
From q learning to deep q network!
Deep Q Network:融合神经网络和Q-learning。
寻常的Q-learning使用Q-table存储信息,包含state、action和q-value,但是具体应用中容易爆显存,并且搜索状态很耗时,但是在深度学习中,神经网络可以很好的处理这件事,Neural Nets are the best Function Approximators,具体可以有以下的应用场景
  1. 给定action和state,通过神经网络输出q-value
  1. 给定state,选择action,通过强化学习的方法选择动作

📝 主旨内容

DQN Architecture Components

神经网络(TO Fixed Q-targets)

创建了两个神经网络,一个用于目标网络(Target Network),一个用于当前的Q网络。
The Q network is the agent that is trained to produce the Optimal State-Action value. The Target network is identical to the Q network.
Online Network用于与环境交互并实时更新其权重,它负责预测当前策略下的Q值
Target Network 是 Online Network的延迟复制版本,使用Online Network的参数进行初始化,并且以较慢的速率更新权重,负责生成目标Q值。
传统的Q learning基于当前策略,目标值快速变化,从而引起训练过程中的不稳定性,在DQN中,目标网络的参数更新是滞后的,这就实现了Fixed Q targets,减少训练过程中的噪声,使学习过程更加稳定

经验回放(Experience Replay)

Experience Replay interacts with the enironment to generate data to train the Q network
实现一个经验回放机制,使用Replay Buffer存储代理(agent)和环境交互的经验(状态、动作、奖励、下一个状态),在训练过程中随机抽取经验(以batch的形式)进行学习。打断了Experience之间的连续性,使得学习更具有效率。

DQN工作流程------DQN Workflow

  1. Experience Replay 通过与环境交互,sample出Training data,并将sample出的training data input到两个Q network中
  1. 计算loss,通过loss back-propagate Q-network and update the weight of the Q network using gradient descent,但注意这个时候Targets Network不会被train
  1. 过了T个步骤后,将Q network中的权重拷贝的Target Network中
  1. 重复第一步

具体过程详解

  1. first phase----Gather Training data
zoom in on the first phase
Experience Replay 通过epsilon-greedy策略进行探索,得到reward、action、state和next-state,这些数据都会被放在training data 中,再将数据进行分发给两个网络
  1. Q-network 用于根据训练数据得到predict Q value
  1. Targets Network 用于从所有action中得到 best Q-value,它并不是直接输入到Network中,而是先拿到一个next state,然后输入到Targets Neural Network中,得到best action,从而得到best Q value作为target value
  1. Compute Loss and train the Q-network Q network计算得到的Q value与target network得到的best Q value进行计算得到loss,通过loss反向传播训练Q network
 
 

🤗 总结归纳

dqn强化学习这一块,后面还可以结合多种先进的技术来提高DQN的性能,例如现在很有名的Rainbow。Rainbow的主要有以下特点
  1. 多步骤引导(Multi-step BootStrapping):使用n步引导汇报(n-step bootstrapping targets)来计算目标Q值,有助于减少单步引导目标中的高估偏差
  1. 优先经验回放(Prioritized Experience Replay):Rainbow使用优先经验回放来提高训练效率,根据训练的重要性
  1. 噪声网络(Noisy Net):引进噪声网络,通过在网络的权重中添加噪声来增加探索性,有助于解决过拟合和探索不足的问题
  1. 分类 DQN(Categorical DQN): Categorical DQN由Bellemare等人在2017年提出,它使用一种称为“支持向量分布”(Support Vector Distribution)的技术来估计动作值的分布,而不是单一的期望值。这种方法允许网络学习动作值的整个分布,从而可以更精确地表示动作值之间的关系,特别是在动作空间非常大的情况下。
  1. 对立网络(Dueling Network)
    1. Dueling Network是由Zhang等人在2016年提出的DQN的一个变体,它通过将Q网络分解为两部分来改进原始DQN的性能:一个用于估计状态值(Value)的网络和一个用于估计动作优势(Advantage)的网络。状态值表示一个状态的整体价值,而动作优势则表示一个动作相对于其他动作的价值。这种分解允许网络更有效地学习状态和动作之间的关系。

📎 参考文章

 
 
💡
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
epsilon-greedy 策略 配置Naive UI
  • Giscus
Zachary_Yang
Zachary_Yang
一个普通的干饭人🍚
Announcement
🎉欢迎来到我的博客🎉
-- 亲爱的读者们,你们好! ---
👏在这里,我希望能够和你们一起分享我对生活的观察、对技术的理解和热爱,暂将博客分为以下几个栏目👏
🌿 心绪漫卷边:一些小随笔
🌌 智绘非遇路:AI领域
😊 浅笑编程边:前后端开发
🛠 技术汇流石下:零散技术分享

祝好,
Zachary_Yang