当前位置:   article > 正文

初探强化学习(10)强化学习中的一些术语(non-stationray,sample efficiency,planning和Learnin,Reward,off-policy和on-policy )_深度学习 样本效率

深度学习 样本效率

1. 关于stationray

参考博客
Stationary or not
根据环境是否稳定、可以将强化学习问题分为stationarynon-stationary

1.1 stationary

如果状态转移和奖励函数是确定的,即选择动作 a a a后执行它的结果是确定的,那么这个环境就是stationary。这一般对应于medel-based RL。也就是已经训练了环境模型。
在这里插入图片描述

1.2 non-stationary

如果状态转移或奖励函数是不确定的,即选择动作 a a a后执行它的结果是不确定的,那么这个环境就是non-stationary。
在这里插入图片描述

2. sample efficiency

样本效率是指学习系统达到任何选定的目标性能水平所需的数据量,它(sample efficiency)是深度强化学习中一个基础问题。举个简单的例子,为了训练机器人打Atari视频游戏,深度Q网络(Deep Q-Networks)需要跟游戏环境进行上亿次的交互,才能学习到比较好的策略,训练时间为6~9天。相比起来我们人类几分钟就能学会玩一个游戏。因此目前的深度强化学习的样本效率是非常低的。

主要参考博客

这个博客,大牛分析了关于基于模型的强化学习和无模型强化学习在sample efficiency的方面的对比。一般来讲,大家都任务基于模型的RL的sample efficiency比无模型的RL高,但是这个大牛却给出了不一样的观点。如果上面那个博客你打不开,可以看一下这个翻译过的博客,不过翻译的错误出很多,可以将就看一下。
正文开始
“基于模型的方法比没有模型的方法更具样本效率。”近年来,这种经常重复的格言在几乎所有基于模型的RL论文(包括Jacob论文)中都引起关注。如此常识,没有人甚至不介意在旁边加上引文,陈述的真实性是不言而喻的。很明显,但是这是错误的。实际上,在很多情况下,两种方法的采样效率是相同的。

在比较两种方法在给定转换数据集时学习的值函数时,可以看出MBRL和MFRL之间的等效性。无模型方法是通过TD学习直接学习此值函数。相反,基于模型的方法是通过学习转换模型然后展开来隐式地学习此值函数。折扣奖励的总和为我们带来了价值。给定相同的转换数据集,这两种方法中的每一种都将计算出真实值函数的近似值。当数据丰富时,两种方法都将给出接近完美的近似值。算法的采样效率是指随着越来越多的数据可用,逼近误差降低的速度

这两种算法在表面上看起来非常不同,因此期望误差以不同的速率减小。但是,正如Parr 2008中所证明的那样,在表格和线性设置中,这两种方法不仅具有相同的比率,而且实际上产生了完全相同的值函数!这两种方法是等效的。基于模型的方法并没有使它具有更有效地采样的基础

但是,即使知道了这种等效性,许多研究人员仍然有很强的直觉,即学习环境模型会更好。我们同意!让我们尝试进一步探索这种直觉,以便我们更好地了解它可能存在或可能不存在的地方。

从认知学到进化论,详述强化学习两大最新突破
第一波deep RL研究引发了某些警示。首先,deep RL系统的学习方式人类完全不同。有人认为,这种差异表现为人类学习与deep RL的采样效率不同。

采样效率是指学习系统达到任何选定目标性能水平所需的数据量。在这一指标上,第一波deep RL系统确实与人类学习者有着本质区别。例如,为了在Atari视频游戏或国际象棋等任务中获得专业级别的表现,Deep RL系统的训练数据需要比人类专业选手多几个数量级。简而言之,至少在最初的系统中,Deep RL训练速度太慢,无法生成人类学习的合理模型。

但很快,Deep RL研究中发生了重大创新,这些创新减少了对训练数据量的要求,使得deep RL的采样效率得到了显著提升,因此可以生成人类学习模型,这为心理学和神经科学的研究找到新的出发点。

我们主要考虑两种提升样本效率的关键方法:episodic deep RL(情景式deep RL)和meta-RL(元强化学习)。我们研究了这些技术如何实现快速deep RL,及其对心理学和神经科学的潜在影响。

2.1 Deep RL慢的原因

快速RL技术关键出发点是搞清楚为什么初始的deep RL方法速度如此慢,样本效率如此低下。在这里,我们讲两个主要原因。在本文的最后,我们将回过头来研究这两个原因之间的联系。

第一个原因是增量参数调整,也可以被理解为梯度下降算法所带来的局限性。早期deep RL方法(在人工智能研究中仍然被广泛使用)采用梯度下降来描述从感知输入到动作输出的深度神经网络曲线。这种形式的学习过程中所做的调整必须很小,以便最大限度地泛化并避免覆盖之前的学习效果(有时被称为“灾难性干扰”)。这种对小步长调整的需求是早期deep RL方法速度慢的原因之一。

第二个原因是弱感应偏差。学习理论的一个基本信条是“偏差-方差权衡”,这在任何学习过程中都存在。归纳偏置(inductive bias)是指机器学习算法在学习过程中对某种类型假设的偏好。学习过程对学习模式的初始假设越强(即学习过程的初始归纳偏置越强),完成学习所需的数据就越少(假设初始归纳偏置与数据中的相符)。弱归纳偏置的学习过程可以掌握更广泛的模式(更大的方差),但样本效率通常会降低。实际上,强归纳偏置(对输入数据仅考虑范围窄的假设)才是可以快速学习的原因。更重要的是,通用神经网络是极低偏置的学习系统:它们有许多参数(不同权重),需要适应各种类型的数据。这意味着早期deep RL模型中采用的通用神经网络往往是样本效率奇低的,需要大量数据来学习。

以上两个因素 - 增量参数调整和弱感应偏差 - 共同造成了早期deep RL模型速度慢的事实。然而,随后的研究表明,这两个因素都可以减轻,从而允许deep RL以更加样本有效的方式进行学习。在下文中,我们考虑两种特定技术,一种解决增量参数调整问题,另一种解决弱感应偏差问题。除了它们在AI领域的影响之外,这两种AI技术都与心理学和神经科学有着明显的联系,我们将详细说明。

2.2 Episodic Deep RL:通过情景记忆快速学习

如果增量参数调整是deep RL速度慢的一个原因,那么一种解决方法可能是避免这种增量更新。单纯靠控制梯度下降来优化学习率会导致灾难性干扰问题。

最近的研究表明,另一种方法也可以实现相同的目标,即保留过去事件的明确记录,并直接将此记录用作制定新决策的参考点。这种方法称为episodic RL,与机器学习中的“非参数”(不对目标函数的形式作出强烈假设)方法相似,如K近邻算法,也类似于心理学中学习理论的“实例”或“范例”教学。

当遇到新情况且必须决定采取何种行动时,程序将当前情况的内部表示与过去情况的存储表示进行比较。根据与当前最相似的过去情况,选择相关联的动作。当使用多层神经网络计算内部状态表示时,我们将得到的算法称为“episodic deep RL”。

episodic RL的成功取决于用于计算状态相似度的状态表示。后来的研究表明,通过使用梯度下降学习来形成这些状态表示可以改善性能。这些结果解释了episodic RL在Atari学习环境57项游戏中的强大性能和高数据效率,展示了结合慢(表示)学习和快速(估算)学习的好处。
在这里插入图片描述
在episodic deep RL中,与标准增量方法不同,可以立即利用每个经验事件获得的信息来指导行为。然而,episodic deep RL能够消除早期deep RL慢的因素,进行快速学习,主要取决于其减缓了增量学习。这种增量学习是对连接权重的渐进学习,允许系统对每个新观察到的情况形成有用的内部表示或嵌入(embeddings)。这些表示的格式通过经验学习获得,使用相同类型的增量参数更新(即标准deep RL的根基)。最终,通过这种较慢的学习形式提升了episodic deep RL的速度。也就是说,通过慢学习实现了快速学习。

在这里插入图片描述
在这里插入图片描述

2.3 在看一些国外网友的解释:

主要是这个博客
样本效率是指学习系统达到任何选定的目标性能水平所需的数据量。
Sample efficiency refers to the amount of data required for a learning system to attain any chosen target level of performance.

3. Planning and Learning

这个是关于model-based RL的介绍,里面提到Planning
这个讲的比较详细了。

在强化学习中有一种划分方式可以将算法大体分成两大类,一类是需要模型来刻画环境的算法(model-based),如动态编程和启发等;另一类算法则不需要环境模型(model-free),如MC与TD等。

model-based 依赖计划(planning),而model-free则主要依靠学习(learning)。尽管如此,二者还是有许多相似之处,比如强化学习的大多数情况是要计算动作的价值函数的,二者也是如此,再比如几乎所有的方法都基于对未来态势的变化的预测,计算反向传播值。于是,有必要用一种统一的视角来讨论二两类方法。

所谓环境模型指的是一切被用于agent预测环境对其动作的反应的信息。已知某一状态与动作,模型可以产生对下一状态动作与奖励的预测。如果模型是随机的(stochastic),即下一状态以不同概率的几种不同可能的分布,这样的模型称为分布模型(distribution models),如果下一状态以某概率产生一种可能,则称为抽样模型(sample models)。模型可用来模拟经验。

在强化学习中,所谓计划planning指的是任何计算过程,只要这个过程是以模型作为输入,输出策略(或更好的策略)
在这里插入图片描述
计划planning主要可划分为两种:一种称为状态空间计划,即在企图在状态空间找到最优策略;另一种为计划空间计划,即在计划的空间中找到最佳策略。现主要考虑第一种。所有的状态空间计划方法在优化策略时,都会将计算价值函数作为关键的中间步骤,且计算方式是应用在模拟经验上的反向更新操作:
在这里插入图片描述
无论学习还是计划都是要估计价值函数的,而学习与计划的主要区别在于:学习learning使用产生于环境的真实的经验,而计划planning则是使用由环境模型产生的模拟数据。上述的通用框架也表明了学习与计划可以互相转化。下面的算法即是一个实例:


这个博客讲的通俗易懂
摘抄一句,
在强化学习中,环境初始时是未知的,agent 不知道环境如何工作,agent 通过不断地与环境交互,逐渐改进策略。(learning过程

在 plannning 中,环境是已知的,我们被告知了整个环境的运作规则的详细信息。
Agent 能够计算出一个完美的模型,并且在不需要与环境进行任何交互的时候进行计算。
Agent 不需要实时地与环境交互就能知道未来环境,只需要知道当前的状态,就能够开始思考,来寻找最优解。

4. Reward

4.1 奖励函数的本质:向智能体传达目标

强化学习的标准交互过程如下:每个时刻,智能体根据根据其 策略(policy),在当前所处 状态(state) 选择一个 动作(action),环境(environment) 对这些动作做出相应的相应的响应,转移到新状态,同时产生一个 奖励信号 (reward),这通常是一个数值,奖励的折扣累加和称为 收益/回报 (return),是智能体在动作选择过程中想要最大化的目标

在这个过程中,“奖励 & 收益” 其实是智能体目标的一种形式化、数值化的表征。可以把这种想法非正式地表述为 “收益假设”

智能体所有的 “目标” 或 “目的” 都可以归结为:最大化智能体收到的标量奖励信号的累计和(称之为“收益”)的概率期望值 —— Richard S.Sutton

使用收益来形式化目标是强化学习最显著的特征之一

  • 注意,收益是通过奖励信号计算的,而奖励函数是我们提供的奖励函数起到了人与算法沟通的桥梁作用

某种程度上,奖励函数设计可以看作 “面向强化学习的编程”,算法工程师根据特殊 “语法”,将期望的任务和目标 “翻译” 成奖励函数,由强化学习算法进行 “编译”,最后在 agent 与 environment 的交互过程中 “运行”(指导算法训练)。“编译器”(RL算法)的性能和 “编程质量”(奖励函数质量)共同决定了策略的性能。

  • 需要注意的是,智能体只会学习如何最大化收益,如果想让它完成某些指定任务,就必须保证我们设计的奖励函数可以使得智能体最大化收益的同时也能实现我们的目标

4.2 主线奖励和稀疏奖励问题

主线奖励

  • 主线事件:强化学习的任务目标通常可以分为两类
    • 定性目标的达成,比如二维平面导航任务中agent到达终点、下棋获胜、游戏通关等
    • 定量目标的极值化,比如最大化投资收益、最小化电量消耗等

这是所有强化学习任务的 根本目标,可以把上述定性目标的达成和定量目标的改善成为 主线事件

  • 主线奖励:根据主线事件可以相应地定义 主线奖励,这通常是简单的
    • 对于定性任务,无论任务多么复杂,判断任务是否完成通常是比较简单的,可以在定性目标达成时给予 agent 一个正向奖励
    • 对于定量任务,我们通常可以观测到目标本身或它的某种度量,可以将其本身或经过某种形式的变换后作为回报

主线回报相对于任务目标而言往往是无偏的,因此只包含主线回报的奖励函数往往是最简单也最理想(从指向性来看)的形式

稀疏奖励问题

  • 主线奖励很稀疏,如果仅使用主线奖励,往往导致稀疏奖励问题
  • 看一个简单的例子,下面是一个 grid world平面导航任务,agent要从左上角移动到右下角,动作集为上下左右运动,到达终点时可以获取25的奖励,其他情况下没有奖励。这是一个确定性环境,且仅有终止状态有奖励
  • 下面第一张是使用value iteration 直接求出的状态价值分布;第二张是使用 model-free 方法的 Q-learning学习的效果,可以看到价值函数的学习过程以及 agent 策略逐步确定的过程
  • 在这里插入图片描述

在这里插入图片描述
由于仅有一个定性任务完成奖励,在早期通过随机探索获取有效转移的概率很低;由于大部分状态下反馈信号的缺失,agent 难以发现应该向右下方向移动,也就无从通过主动增加右下移动动作来触发更多的主线事件
任务简单,状态动作空间较小时:如上例所示,agent 容易通过 ε \varepsilon ε-greedy 随机探索的方法探索到主线事件,从而保证有效转移至少占据一定的比例,使得 RL 算法最终能够收敛
随着任务复杂度提升、状态动作空间增大,通过随机方式探索到主线事件的概率变得很小,稀缺的反馈信号无法为 agent 指明探索方向,难以形成局部知识,而盲目探索又导致有效转移无法出现或数量极少,二者相互作用导致样本效率极低,RL算法难以收敛
反馈信号稀疏,训练早期难以形成局部知识,难以给出局部指导,导致盲目探索;训练晚期只能给出片面指导,导致片面利用,样本效率低下甚至无法收敛,学习困难,这就是 稀疏奖励问题
稀疏奖励会影响强化学习样本效率。

4.3 完善奖励函数设置

针对稀疏奖励问题,学界提出了很多方法,可以概括为以下三类

  • 设法提升有效转移的出现概率和利用效率,如事后经验回放、蒙特卡洛树搜索、层级强化学习、增加辅助任务等
  • 使用遗传算法或进化方法代替DRL方法,这两类方法可以在超长的时间跨度下收集稀疏奖励作为直接优化的依据,而不会受制于 episode
    长度导致的贡献度分配困难
  • 完善奖励函数本身的设计

下面对第三种方法加以说明

4.4 三种辅助奖励函数

要从奖励函数设置角度克服稀疏奖励问题,直观的想法就是在主线回报的基础上增加其他的奖励项或惩罚项,使得奖励函数变得稠密,给与Agent足够强的指导,从而加快 DRL 算法收敛速度并提升性能。这些主线奖励以外的奖励称为 辅助奖励,通常有三类

  • 子目标奖励:这是辅助奖励的主要形式,其设计方法是把任务目标进一步分解为子目标,然后按照各自在促进主线事件实现过程中的贡献大小和作用方向分别给予适当的奖励或惩罚,这个操作也称为贡献度分配子目标总体上分为 “鼓励型” 和 “回避型” 两类。理想情况下,贡献度分配是由RL算法在主线目标引导下自行完成的。
  • 塑形奖励:塑形奖励的基本思想就是向没有定义奖励信号的状态添加奖励信号,早期,添加奖励的具体方式缺少理论指导,往往会导致偏离任务初衷的行为。吴恩达在20世纪末提出了 Potential-Based Reward Shaping 技术,给出了一种在维持最优策略不变前提下加速算法收敛的奖励塑形方法,现在的 “塑形奖励” 通常指这种方法及基于其思想的变体。Potential-Based Reward Shaping 方法给每个状态设定一个势能函数 ϕ ( s ) ϕ(s) ϕ(s),代表着当前状态与目标之间的距离,这样转移 ( s , a , a ′ ) (s,a,a′ ) (s,a,a) 就有了额外的塑形奖励 γ ϕ ( s ′ ) − ϕ ( s ) γϕ(s′)−ϕ(s) γϕ(s)ϕ(s) ,即
    在这里插入图片描述
    这使得奖励函数变得稠密,从而对 agent 的探索起到了高效的引导作用。吴恩达的工作还证明了,理论上最优的势能函数是最优状态价值估计函数 v ∗ v∗ v,直接获取 v ∗ v∗ v是不现实的(如果能拿到,贪心就得到 π ∗ π∗ π,但是只要充分利用任务的 domain-knowledge,即使 ϕ ( s ) ϕ(s) ϕ(s) v ∗ v∗ v差距很大,也能显著加快算法收敛。实践中也常常使用基于这个思想的一种不基于势能的变体,每个状态直接给一个奖励,越接近目标越大,相当于将势能函数直接作为塑形回报,为了避免正的额外奖励导致 reward hacking 问题,通常改为施加负反馈塑形回报,即越接近终点给予的惩罚越小,迫使agent尽快移动到终点位置。这种方式比较简单,但是不能保证最优策略不变
  • 内驱奖励:这种奖励意在模仿自然生物的好奇心,它不针对任何具体的目标,而是无差别地鼓励 agent
    探索未知状态,借此增加有效转移发生概率,这种方法主要用于在复杂任务中加强探索。实践中,若前两种辅助奖励效果已经够好,则不需要内驱奖励

用一张图来表示这些奖励函数,上侧图代表对 “鼓励型” 子目标施加正向奖励,对 “回避型” 子目标施加惩罚;下侧图代表对两类子目标都施加负奖励,通过减少惩罚的形式激励 “鼓励型” 子目标,这种方法可以避免 Reward Hacking,但是可能导致 “懦弱” 行为
在这里插入图片描述
在这里插入图片描述

  • 所有这些辅助奖励的设计都需要对任务逻辑有深入了解,且需要 domain-knowledge。越复杂任务,动作空间、状态空间越大,就越难通过奖励函数向 agent 清楚传达我们的目标,设计奖励函数的成本就越高。如果去看一些复杂任务的奖励函数,往往会感到一头雾水,比如下面这个后空翻任务
    在这里插入图片描述
    对应的奖励函数
    在这里插入图片描述
    这个任务来自论文 《Deep Reinforcement Learning from Human Preferences》,为了用RL方法实现它,研究人员花费5个小时设计了右侧的奖励函数。可见,其中 backroll = -ob[7] 应该是一个定性型的主线奖励,其他都是各种辅助奖励

4.5 奖励函数设计的困境

主线奖励针对性地地鼓励主线事件发生,只有在定性目标达成或定量目标得到优化时才会得到奖励,因此优化收益就等价于促进定性目标达成、定量目标极值化,这通常是无偏的,但是奖励比较稀疏
随着辅助奖励的加入,虽然 agent 得到了更多指导,但也导致最大化收益时连带实现的目标发生偏移,使得 agent 出现异常行为。这些异常行为主要可以分三类

  1. 鲁莽:如果奖励函数中没有对某个不希望出现的行为设置惩罚,或者惩罚力度过小,会导致agent无法学会规避此事件,或是权衡利弊后选择承担此事件的惩罚以换取更大的收益。比如二维平面导航任务中,如果没有对碰撞和电量过低设置惩罚,可能导致agent为了避免绕路试图
    “穿过” 墙壁,或无视自身电量不足的现状只顾驶向终点,直至半路停车抛锚
  2. 贪婪:贪婪行为主要分为 Wireheading 和 Reward Hacking 两类。Wireheading主要指由于动作空间设置不合理,导致 agent学会通过执行特殊动作改变其对环境信息进行感知与加工的过程,以获取超额回报、屏蔽惩罚的问题。比如玩俄罗斯方块的 agent,可能学会在游戏结束前按下暂停键以避免扣分,或者通过使用作弊码直接加分,为了避免这类问题,应当设计合理的动作空间。RewardHacking 主要指由于由于奖励函数片面奖励某个子目标而又缺乏制衡时,agent 可能反复攫取局部收益而忽略初始目标的问题,比如二维平面导航任务,要求agent从一个房间的起点走到另一个房间的终点,为了鼓励穿过门,在门位置施加奖励,这可能导致agent反复来回穿过门以攫取局部奖励。为了避免这类问题,应该通过减少惩罚的形式鼓励agent实现子目标,除了主线奖励和内驱奖励外,尽量避免对子目标施加正向奖励,除非某个鼓励类子目标的达成是一次性的或数量可控
  3. 懦弱懦弱行为常见于辅助惩罚项很多且绝对值相对与主线奖励过大的情形。agent在训练初期收到大量的负反馈阻碍了其进一步探索到主线事件并获取奖励,从而陷入局部最优,可以看作一种特殊的 reward hachking 问题。比如在 Atria 游戏 PitFall中,Agent为了躲避密集的惩罚信号而选择停在起始位置不动。

总的来看,设计奖励函数的过程,就是在主线奖励的基础上加入辅助奖励的过程,这一方面可以加强对agent的指导,促进算法收敛;另一方面也会引入目标偏差,如果想减少偏差,就要面对高昂的成本
在这里插入图片描述

5. off-policy和on-policy

这要参考这个博客
强化学习可以分成off-policy(离线)和on-policy(在线)两种学习方法,按照个人理解,判断一个强化学习是off-policy还是on-policy的依据在于生成样本的policy(value-funciton)和网络参数更新时的policy(value-funciton)是否相同。

off-policy的经典算法有Q-learning,而on-policy的经典算法有SARSA算法,两者的算法流程如下所示。
(off-policy的代表算法)Q-learning算法:

initialize Q(s,a) randomly
for each episode:
    initialize state s;
    while s is not terminal:
        choose action a from s using ε-greedy strategy;
        observe reward r and next state s';
        Q(s,a) <- Q(s,a) + α[r + γ*maxQ(s',a') - Q(s,a);
        s <- s';]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

(on-policy的代表算法)SARAS算法:

initialize Q(s,a) randomly
for each episode:
    initialize state s;
    choose action a from s using ε-greedy strategy;
    while s is not terminal:
        observe reward r and next state s';
        choose a' from s' using ε-greedy strategy;
        Q(s,a) <- Q(s,a) + α[r + γ*Q(s',a') - Q(s,a);
        s <- s', a <- a';]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这两个算法的流程基本一致,唯一不同在于Q函数的更新:

Q-learning在计算下一状态的预期收益时使用了max操作,直接选择最优动作,而当前policy并不一定能选择到最优动作,因此这里生成样本的policy和学习时的policy不同,为off-policy算法;
在这里插入图片描述

而SARAS则是基于当前的policy直接执行一次动作选择,然后用这个样本更新当前的policy,因此生成样本的policy和学习时的policy相同,算法为on-policy算法。
在这里插入图片描述
从这两张图可以看出,判断离线策略还是在线策略,主要看下一个状态的动作 A ’ A’ A是由谁提供的。如果是policy自己给自己预测动作 A ’ A’ A,那么就是在线策略,比如SARSA。如果是有另一个policy给Q提供 A ’ A’ A,那么就是离线策略。

而最近深度强化学里中使用的experience-replay机制将生成的样本与训练的样本独立开来,使用某一policy生成的样本拿来训练的时候,很可能当前policy已经和之前有所差别,因此使用experience-replay机制的DRL算法基本上是off-policy算法

这个博客讲的也还可以。

下面还有一些主要参考的博客。
这个博客简述了一些强化学习中常用又容易忘记或者混淆的知识点。

6. 优势函数

什么是优势函数
优势函数表达在状态 s s s下,某动作 a a a相对于平均而言的优势。
从数量关系来看,就是随机变量相对均值的偏差。
使用优势函数是深度强化学习极其重要的一种策略,尤其对于基于policy的学习。
定义如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/668183
推荐阅读
相关标签
  

闽ICP备14008679号