DQN、A3C、DDPG、IQN…你都掌握了吗?一文总结强化学习必备经典模型(二)

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: DQN、A3C、DDPG、IQN…你都掌握了吗?一文总结强化学习必备经典模型

1.2 DDQN


为了介绍DDQN,首先介绍Double Q-learning。Q-learning学习是使用单估计器(single estimate)去估计下一个状态,Double Q-learning则是使用两个函数QA 和QB (对应两个估计器),并且每个Q 函数都会使用另一个 Q 函数的值更新下一个状态。两个Q 函数都必须从不同的经验子集中学习,但是选择要执行的动作可以同时使用两个值函数。该算法的数据效率不低于Q学习。对于每次更新,一组权重用于确定贪婪策略,另一组用于确定其值。为了清楚地进行比较,可以首先解除Q-learning中的选择和评估,并将目标写为:



Double Q-leanring学习误差可以写为:



在argmax中,行动的选择仍然是受在线权重θ_t的影响。这意味着,和Q-learning一样,仍然是根据当前的值来估计贪婪策略的值。使用第二套权重θ't来公平地评估这个策略的价值。这第二套权重可以通过交换θ和θ'的角色来对称地更新。

Double Q学习通过将目标中的最大操作分解为行动选择和行动评估来减少高估的情况。虽然没有完全解耦,但DQN架构中的目标网络为第二个值函数提供了一个自然的候选者,而不必引入额外的网络。因此,可以根据在线网络来评估贪婪策略,但使用目标网络来估计其价值。参照Double Q-learning和DQN,把由此生成的算法称为Double DQN(DDQN)。它的更新方式与DQN相同,但将目标(Y_t)^DQN替换为:



Double DQN在实现的时候直接利用DQN网络,θ_t、θ_t′每隔N次替换为θ_t ,如下图算法流程所示。这是DQN使用Double Q-learning代价最小的方式:



当前 SOTA!平台收录DDQN共 80 个模型实现资源。

项目 SOTA!平台项目详情页
DDQN 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/ddqn-tuned-hs


1.3 DDPG

DDPG是Google DeepMind团队提出的一种用于输出确定性动作的算法,它解决了Actor-Critic神经网络每次参数更新前后都存在相关性导致神经网络只能片面的看待问题这一缺点,同时也解决了DQN不能用于连续性动作的缺点,属于model-free、off-policy、policy-based的方法。简单来说:DQN+Actor-Critic =>Deep Deterministic Policy Gradient (DDPG)。

DDPG包括如下特点:

  1. actor和critic分别由训练网络和目标网络构成,相当于总共含有4个网络,目的是增强学习过程的稳定性;
  2. 引入experience buffer的机制,用于存储agent与环境交互的数据(s_t,a_t,r_t,s_t+1)。experience buffer的容量置为某个值,当experience buffer充满数据时,则需要删掉最旧的样本数据,保证experience buffer中永远存放着最新的转换序列。每次更新时,actor和critic都会从中随机地抽取一部分样本进行优化,来减少一些不稳定性;
  3. DDPG采用soft update缓慢地更新两个目标网络中的参数;
  4. 在神经网络中加入batch normalization,以应对不同量纲的问题;
  5. DDPG算法采用向动作网络的输出中添加随机噪声的方式实现exploration。

DDPG具体的算法如下:


首先是定义actor和critic的两个网络结构并初始化网络中的参数(网络模型均一致),之后定义经验池(experience buffer)的存放和采样过程,最后是将完整的DDPG算法过程放到一个大的类中。对于actor网络来说,模型更新方法是基于梯度上升的。该网络的损失函数就是从critic网络中获取的Q值的平均值,在实现的过程中,需要加入负号,即最小化损失函数,来与深度学习框架保持一致。而critic网络的参数更新方式是与DQN算法一样的,就是通过最小化目标网络与现有网络之间的均方误差来更新现有网络的参数,只不过唯一不同的地方在于目标网络的参数在DDPG算法中是缓慢更新的,而不是像DQN中一样每隔N步就将现有网络的参数直接复制过来。


当前 SOTA!平台收DDPG共3个模型实现资源

项目 SOTA!平台项目详情页
DDPG 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/ddpg


1.4  A3C

Asynchronous Advantage Actor-Critic(A3C)是强化学习中的一种有效利用计算资源, 并且能提升训练效用的算法。A3C包括三个核心点:异步训练框架、网络结构优化、Critic评估点的优化,通过多个agent和环境进行互动,每个agent都能生成数据,然后将数据一起送给模型进行学习。因此,A3C的主要贡献是一种异步并发的强化学习框架。

首先,异步训练框架是指构建一个公共的神经网络模型,包括Actor网络和Critic网络两部分的功能。公共模型下面有n个worker线程,每个线程里有和公共模型相同的网络结构,每个线程会独立的和环境进行交互得到经验数据,这些线程之间互不干扰,独立运行。每个线程和环境交互到一定量的数据后,计算在自己线程里的神经网络损失函数的梯度,但是这些梯度却并不更新自己线程里的神经网络,而是去更新公共模型。也就是n个线程会独立的使用累积的梯度分别更新公共部分的神经网络模型参数。每隔一段时间,线程会将自己的神经网络的参数更新为公共神经网络的参数,进而指导后面的环境交互。

其次,网络结构优化是指,将Actor和Critic放在一起,即输入状态后,同时得到状态价值和对应的策略。然后,关于Critic评估点的优化,使用了N步采样,以加速收敛。具体伪代码如下:



与基于价值的方法一样,A3C依靠平行的actor learner和累积更新来提高训练的稳定性。虽然策略的参数θ和值函数的参数θ_v是独立的,但在实践中,总是会共享一些参数,通常使用一个卷积神经网络,它有一个策略π(a_t|s_t; θ)的softmax输出和一个值函数V(s_t; θ_v)的线性输出,所有非输出层共享。

A3C将策略π的熵加入到目标函数中,通过阻止过早收敛到次优的确定性策略来改善 exploration。包括熵正则化项在内的全部目标函数的梯度与策略参数有关,其形式为:


当前 SOTA!平台收录A3C60个模型实现资源。


项目 SOTA!平台项目详情页
A3C 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/a3c-ff-1-day-hs


1.5 PPO


PPO(Proximal Policy Optimization)近端策略优化算法和DDPG一样,也是Actor-Critic的架构,但是和DDPG的不同点是:PPO的actor输出的不是一个动作,而是一个策略。为了解决数据使用效率低的问题,PPO通过重要性采样方案重复使用样本。

重要性采样是指,当从一个分布中采样比较困难时,可以从另一个容易的分布中采样,两种采样分布不同,所以需要将采样到的样本进行修正。在PPO中,如果我们想使用策略B抽样出来的数据来更新策略P,可以将td_error乘一个重要性权重:IW=P(a)/B(a),就是目标策略动作概率a的概率除以行为策略出现a的概率。通过引入重要性采用方法,PPO将Actor-Critic架构中的On-policy变为Off-policy。

为了解决新旧策略差异大导致的更新不稳定问题,PPO在策略梯度更新的基础上添加了一个约束,希望每次更新策略差异不要太大。PPO算法的优化使用了如下公式:



另一种方法,可以作为clipped surrogate objective的替代方法,或者作为其补充,是使用引入KL-divergence的惩罚并调整惩罚系数,使得在每次策略更新时达到KL-divergence的一些目标值d_targ。在这个算法的最简单的实例中,在每次策略更新中执行以下步骤:


  • 使用mini-batch SGD的几个epoch,优化KL惩罚的目标。

只要对典型的策略梯度实施稍作改动,就可以计算和区分上述代用损失。对于使用自动差异化的实现方式,只需构建损失L^CLIP或L^KLPEN,并对这个目标进行多步随机梯度上升。优化目标函数如下:

PPO引入一种适用于递归神经网络的策略梯度实施方式,在T个时间段内运行策略(T远小于episode长度),并使用收集的样本进行更新。这种方式需要一个优势估计器,该估计器不会超出时间步长T。估计器为:



推广这一方式,可以使用广义优势估计的截断版本:


由此,得到完整的使用固定长度轨迹段的PPO算法如下Algorithm 1 所示。每次迭代中,N个(平行的)actor中的每一个都收集T个时间段的数据。然后,在这N*T个时间段的数据上构建代用损失,并在K个epoch中用mini-batch SGD对其进行优化:

当前 SOTA!平台收录PPO3 个模型实现资源。

项目 SOTA!平台项目详情页
PPO 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/ppo-3


1.6  HER


HER针对的是一种特殊场景的问题,即环境中只存在稀疏的二元奖励,该奖励用于表示任务是否完成,即只有任务完成的时候agent才会得到一个奖励。在这种场景下,策略的学习十分困难。为了辅助agent快速找到策略,一种常用的方法是 reward shaping,即根据对环境的先验信息人为设计奖励,但这种方法需要具备对特定场景的知识,并根据这些知识精心设计奖励。另外,这些reward所表示的含义有可能与原本的目标是相悖的,因此并不适用于某些不知道合理行为是何种行为的场景中。研究如何从 unshaped reward 中学习策略具有十分重要的意义,例如反映任务是否成功完成的二元奖励。Hindsight Experience Replay (HER)方法可以与任意 off-policy 算法结合,适用于有多个目标需要实现的场景。HER不仅可以提升训练的样本效率,还可以在奖励是二元且稀疏的情况下学习到好的策略。HER的基本思想是:在重放每个episode时,用一个新的目标替代原本agent需要完成的目标,这个新的目标是当前episode中实现过的目标。

具体来说,经过了一个episode: s_0,s_1,...,s_T 之后,将每个transition s_t→s_t+1 存储起来,每个experience里的目标不仅包含初始设定的目标,还包含一些重新设定的目标。当采用off-policy算法时(所学习的策略与正在执行的策略不一致),可以将trajectory里的目标更改为任意其他目标。

对于如何选取用于replay的目标,论文中提出了三种方案:

  • final:goal corresponding to the final state in each episode:把相应序列的最后时刻的状态作为新的目标goal。
  • future:replay with k random states which come from the same episode as the transition being replayed and were observed after it:从该时刻起往后的同一序列中的状态,随机采样k个作为新的目标goal。
  • episode:replay with k random states coming from the same episode as the transition being replayed:对于同一序列中的状态,随机采样k个作为新的目标goal。
  • random:replay with k random states encountered so far in the whole training procedure:从全局出现过的state中,随机选择k个作为新的目标goal。


其中,对于第一种方式,每一条原始经验可以得到一条新的经验,而对于后三种方式,每一条原始经验可以得到k条新的经验。

经验池(Replay Buffer)中同时包含原本目标所对应的transition以及重新设定的目标所对应的transition,算法流程如下:

HER重点是Replay Buffer的构建,而模型本身可以选择任意off-policy的强化学习模型,如DQN、DDPG等。

当前 SOTA!平台收录HER3模型实现资源。

项目 SOTA!平台项目详情页
HER 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/her
相关文章
|
机器学习/深度学习 存储 算法
【强化学习】常用算法之一 “DQN”
DQN算法是深度学习领域首次广泛应用于强化学习的算法模型之一。它于2013年由DeepMind公司的研究团队提出,通过将深度神经网络与经典的强化学习算法Q-learning结合,实现了对高维、连续状态空间的处理,具备了学习与规划的能力。本文对DQN算法进行了详细的讲解,包括发展史、算法公式和原理、功能、示例代码以及如何使用。DQN算法通过结合深度学习和Q-learning算法,实现了对高维、连续状态空间的处理,具备了学习和规划的能力。
1674 0
【强化学习】常用算法之一 “DQN”
|
机器学习/深度学习 存储 算法
I2A、MBMF、MVE、DMVE…你都掌握了吗?一文总结强化学习必备经典模型(三)
I2A、MBMF、MVE、DMVE…你都掌握了吗?一文总结强化学习必备经典模型
564 0
|
5月前
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】XGBoost: 强化学习与梯度提升的杰作
在机器学习的广阔领域中,集成学习方法因其卓越的预测性能和泛化能力而备受瞩目。其中,XGBoost(Extreme Gradient Boosting)作为梯度提升决策树算法的杰出代表,自其诞生以来,便迅速成为数据科学竞赛和工业界应用中的明星算法。本文旨在深入浅出地介绍XGBoost的核心原理、技术优势、实践应用,并探讨其在模型调优与解释性方面的考量,为读者提供一个全面且深入的理解框架。
177 2
|
机器学习/深度学习 算法 自动驾驶
【强化学习】常用算法之一 “PPO”
强化学习是一种通过智能体与环境的互动来学习最优行为策略的机器学习方法。相较于监督学习和无监督学习,强化学习的特点在于具有延迟奖赏和试错机制。在强化学习中,智能体通过选择动作来影响环境,并且从环境中获得奖励作为反馈。强化学习的目标是通过与环境的交互,使得智能体能够学会最优的行为策略。PPO算法属于策略优化(Policy Optimization)算法家族,是由OpenAI在2017年提出的。与其他策略优化算法相比,PPO算法具有较高的样本利用率和较好的收敛性能。
1310 1
【强化学习】常用算法之一 “PPO”
|
机器学习/深度学习 算法 安全
基于时态差分法的强化学习:Sarsa和Q-learning
时态差分法(Temporal Difference, TD)是一类在强化学习中广泛应用的算法,用于学习价值函数或策略。Sarsa和Q-learning都是基于时态差分法的重要算法,用于解决马尔可夫决策过程(Markov Decision Process, MDP)中的强化学习问题。
217 1
|
机器学习/深度学习 算法 自动驾驶
强化学习模型
强化学习模型
183 0
|
机器学习/深度学习 算法 知识图谱
【强化学习】常用算法之一 “SARSA”
强化学习是一种通过学习与环境交互来最大化累积奖励的方法。在强化学习中,一个智能体在特定环境中根据当前状态选择一个动作,执行该动作后,环境将转移到新的状态,并且智能体将获得奖励。强化学习的目标是通过学习,使智能体能够选择一系列能够获取最大累积奖励的动作序列,即找到最优策略。SARSA算法是一种基于状态-动作值的强化学习算法,用来学习最优策略。本文详细介绍了强化学习中的SARSA算法,包括其发展历程、算法原理、功能以及使用方法,并给出了求解迷宫问题的示例代码。
541 0
【强化学习】常用算法之一 “SARSA”
|
机器学习/深度学习 人工智能 自然语言处理
【ICLR2020】基于模型的强化学习算法玩Atari【附代码】
【ICLR2020】基于模型的强化学习算法玩Atari【附代码】
189 0
|
机器学习/深度学习 存储 算法
DQN、A3C、DDPG、IQN…你都掌握了吗?一文总结强化学习必备经典模型(一)
DQN、A3C、DDPG、IQN…你都掌握了吗?一文总结强化学习必备经典模型
412 0
|
机器学习/深度学习 算法
介绍Q-Learning和两种常见的强化学习算法原理
介绍Q-Learning和两种常见的强化学习算法原理
95 0

热门文章

最新文章