# ReinforcementLearning **Repository Path**: mirrors_shenweichen/ReinforcementLearning ## Basic Information - **Project Name**: ReinforcementLearning - **Description**: This project contains several Deep Reinforcement Learning method and some experiments basd on OpenAi gym. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-22 - **Last Updated**: 2026-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DeepRL 对最近看的一些强化学习方法进行记录 # 使用说明 1. 运行`solve.py`,当满足问题解决条件后,会自动保存模型。 2. 运行`test.py`,加载保存的模型进行测试。 # 实验说明 1. [Cart-Pole-v1](http://gym.openai.com/envs/CartPole-v1/) 这是一个比较简单的测试环境,输入状态为4维的连续值组成的向量,输出动作为2个离散动作。 在该环境中,小车能够连续100局保持大于475个step即为解决。 [**实验结果和相关统计图表**](./experiment/CartPole-v1/results.md)。 # 方法介绍 ## Value-Based ### Q-Learning 传统的Q-Learning方法对于每一个(state,action) 对,需要维护其价值。那么当state的维度升高时,就会导致维度灾难,例如对于一个输入是原始图像数据的环境来说,假设输入是的像素图片,每个像素有256种取值,那么总共的状态数为种。这是一个很大数字,会导致存储Q-Tabel消耗巨大的空间,同时Q-Value也将变得非常稀疏,导致学习难以进行。 ### Deep Q-Leaning 引入神经网络来对Q(s,a)进行近似表示。神经网络输入为state_size维度的向量,输出为action_size维度的向量,每一维代表一个Q(s,a)值。根据DQN的输出,我们可以获得在当前state下每一个action的Q-Value,根据Q-Value来选择当前的action。 这里简要介绍几种经典的DQN方法,具体细节请查阅相关论文 - Nips DQN > Playing Atari with Deep Reinforcement Learning, Mnih et al., 2013 - 提出了end2end的DQN学习方法(针对图像输入,使用CNN提取图像信息) - 引入经验回放 1. 每个step的经验可能被使用多次,提高数据利用率 2. 连续若干step的经验存在着强相关性,从经验池中随机选择样本有助于打破相关性减少更新的方差 - Nature DQN > Human-level control through deep reinforcement learning, Mnih et al., 2015 - 引入了Target Q网络,在计算Target Q值(相当于DQN更新时的label)的时候使用专门的TargetQ网络计算,减少目标Q值与当前Q值得相关性。每隔若干step使用当前Q网络的参数更新TargetQ网络。 - clip error 提出将error截断在-1,1之间,提升稳定性 - Double DQN > Deep Reinforcement Learning with Double Q-learning, van Hasselt et al., 2015 - 主要提出在计算Target Q值的时候,使用当前网络选择贪婪策略,然后使用Target Q网络来评估策略。这样有利于减少由于直接使用max(Target Q)值带来的过度估计。 - 注意和Double Q-Learning进行区分(Double Q-Learning是交替交换两个Q的角色进行更新,而Double DQN依然是若干step使用当前网络更新TargetQ网络) - Dueling DQN > Dueling Network Architectures for Deep Reinforcement Learning, Wang et al., 2016 - 在某些情况下,我们更关注agent所处的state如何,而不是其在该state下做出的action。 - 主要提出一种duelling结构,将Q网络分解为Value和Advantage,分别学习当前state的价值和在当前状态下各个action的相对价值。最后将两个通道的输出相加得到估计得Q-Value - 实现过程中由于Q = V+A,对V和A同时加减一个常量不影响Q值的大小,为了能得到固定的V和A,对A减去所有A的均值。 ## Policy-Based 待补充 ## Actor-Critic 待补充