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,具体可以有以下的应用场景
- 给定action和state,通过神经网络输出q-value
- 给定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
- Experience Replay 通过与环境交互,sample出Training data,并将sample出的training data input到两个Q network中
- 计算loss,通过loss back-propagate Q-network and update the weight of the Q network using gradient descent,但注意这个时候Targets Network不会被train
- 过了T个步骤后,将Q network中的权重拷贝的Target Network中
- 重复第一步
具体过程详解
- first phase----Gather Training data
zoom in on the first phase
Experience Replay 通过epsilon-greedy策略进行探索,得到reward、action、state和next-state,这些数据都会被放在training data 中,再将数据进行分发给两个网络
- Q-network 用于根据训练数据得到predict Q value
- Targets Network 用于从所有action中得到 best Q-value,它并不是直接输入到Network中,而是先拿到一个next state,然后输入到Targets Neural Network中,得到best action,从而得到best Q value作为target value
- Compute Loss and train the Q-network Q network计算得到的Q value与target network得到的best Q value进行计算得到loss,通过loss反向传播训练Q network
🤗 总结归纳
dqn强化学习这一块,后面还可以结合多种先进的技术来提高DQN的性能,例如现在很有名的Rainbow。Rainbow的主要有以下特点
- 多步骤引导(Multi-step BootStrapping):使用n步引导汇报(n-step bootstrapping targets)来计算目标Q值,有助于减少单步引导目标中的高估偏差
- 优先经验回放(Prioritized Experience Replay):Rainbow使用优先经验回放来提高训练效率,根据训练的重要性
- 噪声网络(Noisy Net):引进噪声网络,通过在网络的权重中添加噪声来增加探索性,有助于解决过拟合和探索不足的问题
- 分类 DQN(Categorical DQN): Categorical DQN由Bellemare等人在2017年提出,它使用一种称为“支持向量分布”(Support Vector Distribution)的技术来估计动作值的分布,而不是单一的期望值。这种方法允许网络学习动作值的整个分布,从而可以更精确地表示动作值之间的关系,特别是在动作空间非常大的情况下。
- 对立网络(Dueling Network)
Dueling Network是由Zhang等人在2016年提出的DQN的一个变体,它通过将Q网络分解为两部分来改进原始DQN的性能:一个用于估计状态值(Value)的网络和一个用于估计动作优势(Advantage)的网络。状态值表示一个状态的整体价值,而动作优势则表示一个动作相对于其他动作的价值。这种分解允许网络更有效地学习状态和动作之间的关系。
📎 参考文章
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
- Author:Zachary_Yang
- URL:https://notion-next-git-main-little1ds-projects.vercel.app//article/dqn-intro
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!