深度强化学习算法的样本效率(sample efficiency)到底是什么?

本文源自改论文中的一章,基于样本效率优化的深度强化学习方法综述。需要的可自取

一、深度强化学习方法的样本效率

深度强化学习已在街机游戏和物理模拟环境中取得显著成果,但受到采样成本的影响,难以向真实环境任务中迁移。对于模拟环境,采样次数仅与计算速度有关, 在训练过程中,每秒可以完成几万次的环境交互过程; 而对于真实环境,由于控制器与感知器物理情况的限制,单位时间内能完成的采样次数急剧降低。例如,DQN算法在数小时内就能完成200 M帧的训练任务,相当于50帧/秒的实际环境中46天的游戏时间。同时,在深度强化学习算法中,训练效果受超参数影响较大。为了获得更好的训练效果,往往需要通过多次训练来进行超参数调优,进一步提高了训练成本。考虑到真实深度强化学习任务的采样成本问题,本文给出样本效率的定义。

定义6(样本效率)。在深度强化学习任务中, 样本效率即利用有限的交互次数,通过合理的策略与环境交互进行采样,并利用采样数据进行训练,以获取策略优化的指标。
(个人总结一下:)样本效率高就是指在同样的交互次数中,可以更全面的探索环境,并得到更高的策略。
评估算法的样本效率,既可以在使用相同交互次数的前提下衡量动作策略的训练效果,也可以在到达相同训练效果的前提下衡量达到此效果所需的交互采样次数。由于在强化学习算法中,智能体以当前策略与环境交互进行采样,并利用已得到的样本数据对策略进行优化,探索过程与训练过程相互促进,所以可以通过增强对环境的探索能力和提高对数据的利用能力两个方向提高样本效率。

  1. 增强对环境的探索能力。增强对环境的探索能力需要更有效地对环境中可能存在更优策略的动作方向进行探索, 即对极少和未曾执行的动作进行选择, 或对极少和未曾访问过的状态进行访问. 探索能力更强的算法可以在与环境交互的过程中得到更有价值的样本数据, 能够有效地避免陷入局部最优值并有着更高的训练效率.

  2. 提高对数据的利用能力。提高对数据的利用能力需要在样本数据确定的情况下,更有效地利用已有样本对动作策略进行训练,得到更优的动作策略。更优的动作策略也可以指导交互动作选择,进而获得更有价值的样本数据,加速学习进程。

本文将基于Q值函数和策略梯度的两类深度强化学习方法,以增强探索能力和提高利用能力两个方向为主,探究提高样本效率的方案。

二、通过增强探索机制提高样本效率

对于监督学习和无监督学习任务,训练数据已知,训练数据分布固定。而在强化学习中,需要智能体根据当前的动作策略网络以合适的方式选择动作,并通过在环境中执行动作来获得采样数据。因此在强化学习的样本数据中,数据的分布将受到动作策略的影响。

在多数强化学习任务环境中,可行解的空间范围极大,难以遍历全部的状态-动作空间寻找最优解,通常要求算法利用启发式搜索的思想,能够基于当前的动作策略网络输出,朝着可能存在最优解的方向进行探索,并尽力保证探索的范围合适,以免陷入局部最优解。例如, 在MuJoCo环境的Hopper任务中,智能体不仅需要保证模拟各关节的稳定性以防止由于摔倒导致的任务提前结束,即状态空间的探索深度,还需要保证尝试多种未知的动作以学习控制关节快速前进的能力,即动作空间的探索广度。

4.1 经典探索策略

在强化学习任务中,解空间内的任一可行解都可能是最优解,所以要想保证算法在理论上能够使动作策略收敛于最优策略,当且仅当探索策略具有能够访问到所有可行解的能力。

在Q值函数方法中,通常使用ε-贪心和固定范围的高斯噪声作为探索策略进行动作探索。其中, ε-贪心应用在离散动作任务中,即在动作空间有限的情况下,以ε的概率随机选择动作空间内任意动作,并以1−ε的概率,基于贪婪的思想选取Q值最大的动作, DQN, DDQN等算法均使用ε-贪心进行动作探索; 固定范围的高斯噪声通常应用在连续任务中,即动作维度有限但动作域连续的情况下,在动作策略网络输出动作a中加入均值为0的高斯噪声 N ( 0 , σ 2 ) Ν(0, σ^2) N(0,σ2)得到动作 a ′ a' a,并以 a ′ a' a与环境交互进行采样, 其中, σ 2 σ^2 σ2为超参数, 在DDPG, TD3等算法中通常固定为0.05或0.1.

在策略梯度方法中,以动作概率分布表示策略,而非Q值函数方法中固定的贪婪策略, 所以动作策略中包含探索策略。对于离散动作空间,深度神经网络输出所有动作的选择概率,经过softmax层处理后,进行采样完成动作选择。对于连续动作空间,则同时输出动作选择的均值μ和方差 σ 2 σ^2 σ2,并在高斯分布 N ( 0 , σ 2 ) Ν(0, σ^2) N(0,σ2)中采样完成动作选择. VPG, A3C, TRPO, PPO等算法均以该方式进行动作选择.

ε-贪心和高斯分布均以一定概率可以选择到动作域内的任意动作。当交互次数足够大时,在环境的状态转移作用下,可以访问到任务环境中所有状态-动作对,能够保证理论上训练策略收敛于最优策略。

4.2 策略梯度方法中的探索能力增强机制

在Atari 2600的60个游戏任务中,同一算法对于不同类型的任务训练效果差异较大。例如,在Atlantis, Breakout,Video Pinball等游戏中可以获得超越人类数十倍的得分,但在Montezuma’s Revenge,Venture等冒险类游戏中,得分远低于人类水平。所以通过观察Atari不同游戏的特性和分析智能体在不同游戏中的得分情况可知:在任务环境具有密集的、引导性强的奖励时,用深度强化学习算法可以获得显著的效果;而在任务环境需要较长的正确动作决策序列才能获得奖励时,却难以取得良好的训练效果。即以随机概率分布进行探索的算法,在密集奖励环境中训练效果显著,但在稀疏奖励环境中难以进行有效训练[3]。同时,在真实世界的任务中,可以确定的合理奖励通常是稀疏的,人们难以获取足够多的专家经验来为任务设计合理的密集奖励。在奖励不合理的情况下,智能体训练得到的优化策略无法满足真实任务需求[39]。

对于稀疏奖励任务,智能体需要经过一系列正确的动作决策后才能获得奖励,而在获得足够奖励前,无法进行有效的训练优化。智能体在通过随机概率分布进行探索的同时,还需利用现有数据增强探索能力。

通常,人们将任务环境反馈的奖励值称为外在奖励,智能体以最大化外在奖励为训练目标,外在奖励也是评估动作策略优劣的标准。对于策略梯度方法,在外在奖励的基础上增加内在奖励,是增强探索能力效果提升最显著的方案,得到用于训练的混合奖励如公式(9)所示。

r t = r t e + r t i r_t=r^{e}_{t}+r^{i}_{t} rt=rte+rti (9)
其中, r t e r^{e}_{t} rte表示t时刻的外在奖励, r t i r^{i}_{t} rti表示t时刻的内在奖励,并将混合奖励 r t r^t rt用于智能体的训练。内在奖励rit中包含着动作探索的方向信息, 在环境奖励稀疏时或在训练的初期,内在奖励发挥主要作用,并引导智能体进行高效探索;在训练的后期,内在奖励趋向于0,主要通过外在奖励寻找最优策略。由于环境观察数据有限且要同时考虑内在奖励计算的时间和空间复杂度,所以需要构建较为简单的模型来近似计算内在奖励。如何构建内在奖励,使其能够包含有效的探索方向信息,成为增强策略梯度方法中探索能力的研究热点。基于内在奖励的探索能力增强模型框架如图 6所示。
基于内在奖励的探索能力增强模型框架
目前, 效果突出的内在奖励模型构建方法有信息熵最大化方法、伪计数方法和状态预测方法.

  1. 信息熵最大化方法。信息熵最大化方法基于信息增益理论,在训练中增加状态转移预测模型,将内在奖励的目标定义为最大化动作执行后状态转移预测模型可以获得的信息增益,即希望利用有限的交互次数获取更多的环境信息。但由于整个模型的信息增益计算困难,信息熵最大化理论难以应用到算法中。Houthoof等人提出了VIVE (variational information maximizing exploration)算法,利用变分贝叶斯理论,对信息增益进行合理的近似估算,有效增强了智能体的探索能力[40]。

  2. 伪计数方法伪计数方法。基于不确定性理论,认为不确定性越高的状态越有可能存在未知的动作奖励, 并且状态的不确定性与智能体对状态的访问次数成反比。 而深度强化学习的状态空间极大,如何准确衡量某一确定状态的访问次数,是伪计数方法的关键问题。其中,Bellemare等人提出了基于上下文树切换(context tree switching,CTS)的伪计数方法,首次利用近似计数的思想,使用CTS密度模型对状态访问的次数变化情况进行模拟,将基于访问次数的奖励引入深度强化学习任务中[41]。Ostrovski等人提出了基于像素卷积神经网络(pixel convolutional neural networks,PixelCNN)的伪计数方法,使用像素卷积神经网络进行伪计数,获得了比CTS密度模型更好的效果[42]。Tang等人提出了基于自编码器的局部敏感哈希(locality-sensitive Hashing,LSH)方法,先使用自编码器进行特征降维,随后对降维后的特征进行哈希值计算,并基于每个哈希值对应的状态访问次数计算内在奖励,以更直接的计数方式达到了密度模型的效果[43]。

  3. 状态预测方法。状态预测方法基于好奇心理论,认为生物个体学习技能的动机是对未知世界的好奇。 在强化学习中,建立预测智能体行为后果的模型,将好奇心定义为智能体预测自身行为后果能力的误差,通过对预测误差较大的状态给予更多的内在奖励,引导探索方向。随着预测模型的不断训练,智能体将能均匀地向各方向探索环境。所以,如何利用采样数据构建并训练合适的状态预测模型,是状态预测方法的主要研究方向。Stadie等人提出了基于模型预测的探索奖励方法,首次在深度强化学习中引入状态预测模型,利用当前状态与动作来预测后续状态,并以预测误差作为内在奖励进行训练,在稀疏奖励任务中获得了显著的效果[44]。Pathak等人提出了好奇心驱动探索方法,将好奇心的取值定义为对环境变化预测的误差,并在状态预测模型中引入自监督的逆动力学模型,可以有效地在高维像素特征中提取与智能体动作结果相关的主要特征,排除不影响智能体行为的部分环境因素,不仅有着更高的训练效率,还对不可控的环境噪声具有鲁棒性[14]。Burda等人在好奇心驱动探索方法的基础上,基于状态预测方法进行大量实验,对比包括由像素、随机特征、自编码特征、逆动态特征的4种不同编码特征对学习效果的影响。验证了自监督逆动力学模型的有效性[45]、此外,好奇心机制受到无法预测的随机状态特征的影响,在环境中带有特殊噪声的情况下无法有效判断状态的新颖性。Burda等人提出了基于随机网络蒸馏(random network distillation,RND)的奖励驱动探索方法,将环境变化的不确定性分为偶然不确定性和认知不确定性,并通过神经网络间的认知误差衡量认知不确定性,解决了在特殊噪声情况下的失效问题,并获得了更好的效果[15]。

目前,基于信息熵最大化的方法受限于信息熵计算精度而难以获得良好的效果,对增强策略梯度方法探索能力的研究主要集中在伪计数方法和状态预测方法中。与状态预测方法相比,伪计数方法的偏差和误差更小,不易受到环境的影响,更适合用于奖励相对较多的任务;而状态预测方法依赖于对环境变化情况的预测,更适用于奖励极度稀疏和任务极度复杂的环境。

4.3 Q值函数方法中的探索能力增强机制

不同于策略梯度方法,Q值函数方法受限于Q值函数的优化过程,难以通过内在奖励的方式增强探索效率。在策略梯度方法中,只使用当前策略与环境交互得到的采样样本进行策略梯度值计算,内在奖励在训练前期起到激励智能体探索的作用;在训练后期,内在奖励值趋近于0,几乎不会对训练过程有负面影响,且可以保证最优策略的一致性。但Q值函数方法需要在整个任务的状态-动作空间中计算全局Q值函数,面临着过高估计的问题。过高估计问题将导致智能体在训练过程中陷入局部最优值甚至使智能体策略崩溃,所以奖励值的低偏差与低方差成为保证Q值函数方法训练效果的主要约束条件。内在奖励在前期引入的高偏差和高方差导致无法增强Q值函数的探索能力,还会引起训练策略的崩溃,所以需要其他方案增强探索能力[46]。

定义7(过高估计)。在Q值函数方法的训练过程中,受环境的不确定性或奖励噪声影响,对应状态的确定动作的奖励为概率分布值而非固定值。以奖励分布期望为中心,大于奖励期望的奖励值更容易随着贪婪的Q函数优化过程传播,小于奖励期望的奖励值则难以被学习,导致通过深度神经网络得到的Q估计值通常大于真实值,且无法正确估算真实的Q值函数的现象,该现象称为过高估计。

然而可以使探索能力增强的方案并不局限于奖励空间中,研究者已从动作空间、参数空间、网络结构等方面对探索能力进行研究。设计了多样的探索方式。Q值函数方法中探索能力增强方案的结构如图 7所示.
在这里插入图片描述
● 在网络结构方向。Osband等人提出了Bootstrapped DQN算法,利用样本分布来近似总体分布的思想,用多个随机初始化的Q网络代替原有的单个网络,在实现中,为保证效率只改变输出层构建不同的Q值函数,由此得到的多个Q值形成样本集合,可以对环境空间进行更多样化地探索,并在采样数据中加入掩码,使样本以一定概率用于Q值函数的训练,保证Q值函数的多样性。该算法摒弃了原有的无方向的ε-贪心探索策略,通过Q值函数分布,在保证探索范围的同时,引导了探索的总体方向[47]。由此,研究者发现,利用多个Q值输出表来表示动作价值分布会有着更好的稳定性。Bellemare等人和Dabney等人进行了分布式Q值函数的尝试,提出了更灵活的网络结构和优化方式,分别称为C51算法[34]和IQN算法[48].

● 在参数空间方向。Fortunato等人提出了NoisyNet-DQN算法,改变原有动作空间的探索方式,即利用噪声函数在参数空间中加入无偏噪声,并通过随机采样的方式决定每个时刻噪声函数的参数,有着更强的探索能力和训练效率,并可以提高泛化能力[33]。Plappert等人提出了基于自适应噪声比例的参数噪声扰动方法,在为参数空间加入噪声的基础上加入自适应的噪声范围,并验证此类方法在连续动作任务以及在策略梯度类方法上的效果,证明参数空间的噪声可以提升不同类别强化学习方法的训练效率[49]。Han等人提出了基于噪声降低和在线权重调整(noise reduction and online weight adjustment)的参数扰动DQN算法NROWAN-DQN,即在NoisyNet-DQN算法的基础上,考虑到引入网络噪声而导致不稳定的负面影响,提出在线权重调整的降噪机制,在提供探索能力的基础上使训练过程更稳定[50]。

● 在动作空间方向。Hong等人提出了动作差异驱动探索方法,希望增大当前动作选择网络与之前动作选择网络的差距,在损失函数中加入新、旧策略之间的距离衡量损失。使得在网络训练难以得到更高回报时。尽可能地朝不同方向进行探索。有效地防止动作策略陷入局部最优[51]、Ciosek等人专注于连续动作空间任务。提出了OAC (optimistic actor critic)算法。认为动作值在Q值方向上的梯度可以指示出更具价值的采样方向。为选择的动作加上梯度正方向的偏移。提升了与环境交互采样的质量[52]、

目前,对于Q值函数方法,已有多种增强探索能力的方案,虽然都能通过增强探索能力在一定程度上提升算法的训练效率,但在对探索能力的提升有限,在复杂程度高、奖励稀疏的环境中难以获得显著成效。

4.4 多种探索增强机制的比较

在探索增强机制中,主要问题是如何能够在固定探索次数的情况下,采集到更多样性或更有价值的样本,需要探究如何评判样本的潜在价值或新颖性,并试图朝着使样本更新颖的方向进行动作探索。在具体实现中,要求既能找到简单有效的样本新颖性衡量标准,又能在朝着样本新颖方向采样的同时不影响最大化回报的训练目标。

策略梯度方法根据当前策略与环境进行交互采样,通过估计当前策略的梯度进行优化。所以在设计探索机制时,首要考虑与环境交互时探索机制的无偏性,即能够在不改变当前策略与策略梯度计算精度的情况下提升探索范围,且无动作偏差。

Q值函数方法在任务的整个状态-动作空间内寻找最优Q值,且受环境的奖励噪声和奖励不确定性影响,经常会出现过高估计的问题。所以在设计探索机制时,首要考虑不改变环境奖励的精度和不增加任务的不确定性,即在保证不会因引入不确定性而过高估计的情况下提升探索范围,且无奖励偏差。

对于本文所述的多种增强探索机制,在动作偏差、奖励偏差、探索能力和适用范围方向的对比情况见表 2。其中,内在奖励只适用于策略梯度方法且有着最好的增强探索效果。 例如,可以在稀疏奖励甚至不使用外在奖励的情况下,通关复杂的冒险类游戏Super Mario Bros和Montezuma’s Revenge[45],所以当涉及复杂任务的策略训练时,往往以策略梯度方法和内在奖励为基本框架进行算法设计[6]。部分增强探索机制,例如分布式价值函数优化,由于结构限制只适用于Q值函数方法中。此外,部分探索机制对各类强化学习算法均适用,例如参数空间探索[49]和动作差异驱动[51],可以在任务的训练速度和训练得分上有所提升,但效果有限。
在这里插入图片描述

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的进步!!Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 二、 Java语法基础 5 数据类型 5 运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 20 四、 面向对象★★★★★ 21 五、 封装(面向对象特征之一)★★★★ 23 六、 继承(面向对象特征之一)★★★★ 25 七、 接口(面向对象特征之一)★★★★ 28 八、 多态(面向对象特征之一)★★★★ 30 九、 java.lang.Object 31 十、 异常★★★★ 34 十一、 包(package) 37 十二、 多线程★★★★ 39 为什么要使用多线程 39 创建线程和启动 39 线程的生命周期 44 线程管理 45 线程同步 49 线程通信 52 线程池 58 死锁 64 线程相关类 65 十三、 同步★★★★★ 67 十四、 Lock接口 70 十五、 API 71 String字符串:★★★☆ 71 StringBuffer字符串缓冲区:★★★☆ 73 StringBuilder字符串缓冲区:★★★☆ 74 基本数据类型对象包装类★★★☆ 75 集合框架:★★★★★,用于存储数据的容器。 76 Collection接口 77 Iterator接口 78 List接口 78 Set接口 80 Map接口 81 把map集合转成set的方法 82 使用集合的技巧 83 Collections--集合工具类 83 Arrays—数组对象工具类 84 增强for循环 85 可变参数(...) 86 枚举:关键字 enum 86 自动拆装箱 86 泛型 87 System 89 Runtime 90 Math 90 .Date:日期类,月份从0—11 92 Calendar:日历类 93 十六、 IO流:用于处理设备上数据 ★★★★★ 94 IO流的概念 95 字符流与字节流 98 流对象 101 File类 102 Java.util.Properties 103 介绍IO包中扩展功能的流对象 103 十七、 网络编程 110 网络基础之网络协议篇 111 UDP传输 124 TCP传输 126 十八、 反射技术 127 十九、 Ajax原理及实现步骤★★★★★ 130 Ajax概述 130 Ajax工作原理 130 Ajax实现步骤 130 详解区分请求类型: GET或POST 131 $.ajax标准写法 134 二十、 正则表达式:其实是用来操作字符串的一些规则★★★☆ 135 二十一、 设计模式★★★★★ 136 设计模式简介 136 单例设计模式:★★★★★ 156 工厂模式★★★★★ 159 抽象工厂模式★★★★★ 163 建造者模式 170 原型模式 177 适配器模式 182 桥接模式 188 过滤器模式 192 组合模式 193 装饰器模式★★★★★ 196 外观模式 201 享元模式 204 代理模式★★★★★ 208 责任链模式 212 命令模式 216 解释器模式 219 迭代器模式 222 中介者模式 224 备忘录模式 226 观察者模式 230 状态模式 233 空对象模式 236 策略模式★★★★★ 238 模板模式 240 访问者模式 244 设计模式总结★★★★★ 247 二十二、 Java其他总结 248 Java JVM知识点总结 248 equals()方法和hashCode()方法 270 数据结构 273 Array方法类汇总 304 Java数组与集合小结 305 递归 309 对象的序列化 310 Java两种线程类:Thread和Runnable 315 Java锁小结 321 java.util.concurrent.locks包下常用的类 326 NIO(New IO) 327 volatile详解 337 Java 8新特性 347 Java 性能优化 362

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值