ChatGPT第二弹:PPO算法

e99abc5a7ecd498d06a11da39952a2ae.png

作者:陈一帆

出处:哈工大SCIR

进NLP群—>加入NLP交流群

1. ChatGPT与PPO算法

在上篇文章中我们提到,ChatGPT的训练过程主要分为三步:微调GPT-3模型、人工对微调后模型的生成结果打分以训练得到一个奖励模型、 基于微调后的GPT-3结合奖励模型采用强化学习的方法更新策略。而第三步中强化学习的方法为OpenAI于2017年提出的Proximal Policy Optimization(PPO)算法。PPO算法提出后应用场景相当广泛,包含图像识别[1]、机械臂控制[2]、电子游戏[3]以及今天的ChatGPT。OpenAI基于PPO算法设计的AI程序OpenAI Five甚至在2019年4月13日击败了Dota 2世界冠军战队OG[4]

在接下来的部分中,我们会在第二章中介绍强化学习的基础知识,第三章中介绍PPO算法论文并对其中的公式进行推导。

2. 强化学习基础

以下内容参考OpenAI Spinning Up[5],其为OpenAI公开的一份关于深度强化学习的教育资源。

2.1 基本定义

强化学习(Reinforcement Learning)是一个马尔科夫决策过程,可定义为五元组,其中为状态空间,为动作空间,是状态转移函数,是奖励函数,是初始状态分布。状态转移函数是一个到的映射,有,即状态采取动作后状态转移到的概率,又可以写为或者等;奖励函数是一个到实数域的映射,可以写作,但多数情况下会根据问题的实际定义简化为, 表示状态下执行动作的奖励,也可以记为或其他。

强化学习过程中,智能体首先处于开始状态,然后选择动作执行,与环境产生交互,获得奖励并转移到状态,我们称智能体经历的状态、动作序列为轨迹,强化学习的目标是最大化累积奖励:

要实现最大化累积奖励,其重点在于智能体处在某个状态时应该选择哪个动作执行,或者其选择动作应该服从一个怎样的分布,记作,一般称之为策略(Policy),策略即是强化学习中优化的变量。

63cdb7e5465c3ab3f7672ee6911b4271.png

图 1强化学习示意图

须知:

  1. 智能体处在某个状态执行何种动作由模型决定,执行该动作后转移到哪一个状态,以何种方式转移取决于环境。有时这是固定的,有时则会服从一定的分布;

  2. 马尔科夫过程意味着:智能体处在任意一个状态,其后续的策略都与之前的动作无关;

  3. 式(1)中的代表着轨迹的结束,可能是到达了特定的状态,或是达到一定条件;

  4. 式(1)是有穷的、无折扣的累积奖励,另外一种是无穷的、有折扣的累积奖励,定义一个折扣因子,无穷有折扣的累积奖励公式为:

    对于无穷的情况设计一个折扣因子,直观上是因为当前已获取的奖励要比未获取的奖励更好,数学上的好处是这样求和不会产生无穷大的值。具体何种形式的累积奖励取决于实际问题。

为了后续推导的方便,我们引入两个重要的量。为了评估某个状态的整体上的好坏,引入了状态值函数(State value function),用函数来表示,其定义为状态未来累积奖励的期望,期望越大说明当前状态越有利。引入状态动作值函数(State-action value function),用函数表示,其定义为状态下采取动作后未来累积奖励的期望。与之间存在如下的等式关系:

关于Q、V值的定义和转换关系可以参考图2

23923134421a0aff25667f4e6e267f9b.png

图2  Q、V 值的定义和转换关系[6]

显然,强化学习模型优化目标可以使用表示,其中表示智能体的开始状态。

2.2 Model-Free vs Model-Based, Value-Based vs Policy-Based, off-policy vs on-policy

强化学习算法种类繁多,可按图3所示类别粗略分类。

93f281886e7dd13051ad2f527fdce5d3.png

图3 强化学习算法分类[5]

可以看到PPO算法是无模型的强化学习算法,属于策略优化类算法,并且是on-policy的。本节中我们将对这些概念进行介绍,让大家对PPO算法有一个更好的认识。这些概念一共可分为三组,分别是:

  • 基于模型的强化学习(Model-based RL)、无模型的强化学习(Model-free RL);

  • 基于策略的强化学习(Policy-based RL)、基于值的强化学习(Value-based RL,即图中Q-leranng);

  • on-policy、off-policy。

根据问题求解思路、方法的不同,我们可以将强化学习分为基于模型的强化学习(Model-based RL)、无模型的强化学习(Model-free RL),在这里“模型”的含义是对环境进行建模,具体而言,是否已知其知和,即和的取值。

如果有对环境的建模,那么智能体便可以在执行动作前得知状态转移的情况即和奖励,也就不需要实际执行动作收集这些数据。否则便需要进行采样,通过与环境的交互得到下一步的状态和奖励,然后仅依靠采样得到的数据更新策略。

我们以围棋为例举例说明,自然而然地,我们会以棋盘上棋子的分布作为状态,以一次落子作为动作,一般以当前棋局的胜率作为奖励。不妨假设强化学习程序是黑方棋手,如果以黑方棋手落子前棋子分布作为状态,那么每次状态的改变便是两颗棋子,由于无法预测白方棋手的落子,我们无法对状态转移进行建模,此场景便是无模型的强化学习。但是,我们使用搜索引擎会发现,AlphaGO、AlphaGo Zero、AlphaZero 均是基于模型的强化学习模型,其差别便在于,他们会在训练的过程中同时扮演黑方棋手和白方棋手,这也便是“自己与自己下棋”的由来,那么状态的定义便是任意一方落子前棋子的分布,如此状态转移情况显而易见:给定当前棋子的分布(当前状态)以及本次落子的位置(动作),求落子后棋子的分布(下一步状态)。而奖励值(落子后棋局的胜率)获取的一般思路是棋局模拟,即不执行实际的落子动作,而是使用其他模型模拟棋局的进行得到获胜概率。具体方法是蒙特卡罗树搜索:例如将棋局继续进行 1600 次,得到执行各候选动作的获胜次数,除以 1600 作为获胜概率,如此也可以找到当前最优动作,模拟棋局的进行不依赖实际落子,AlphaGo Zero 依赖一个更加小型的模型快速走子,AlphaZero 直接依赖待学习的策略帮助自己走子。这类似于人类棋手的心算,在强化学习场景下我们说这是对环境进行建模,如此我们便可以称其为基于环境的强化学习。

上述是较为复杂的基于模型的强化学习算法,不考虑对环境的建模,基于模型的强化学习可以简单的使用动态规划求解,任务可定义为预测(prediction)和控制(control)。预测的输入是和策略,目的是评估当前策略的好坏,即求解状态价值函数。控制的输入是,目的是寻找最优策略和。

对预测任务的求解可简单利用上述与关系的公式,易得的迭代公式:

式中的均为已知,只需迭代求解即可,上述方程也称为贝尔曼期望方程(Bellman Expectation Equations)。这里也可以列线性方程组求解,有个状态节点,即有个方程。

而对于控制任务,策略是未知、待优化的。在最优策略的求解问题上,有两种方法:值迭代、策略迭代。策略迭代会从一个初始化的策略出发,先进行策略评估,即固定然后使用预测的方法求解最优值函数, 然后进行策略改进,可以简单的利用来贪婪的改进策略, 不停的进行策略评估和策略改进两个步骤,直至收敛。而值迭代方法则利用公式:

相比与策略迭代的方法,其并没有进行完成完整的预测操作, 预测操作无论是求解线性方程组或是迭代至收敛,均需要消耗较长时间, 值迭代的方法简化了这一操作,仅根据下一个状态的值,得到当前状态下一个轮次的值。

相比于基于模型的强化学习,无模型的强化学习方法更具有研究价值,也更复杂。我们首先介绍强化学习领域中存在已久的两大类方法:基于值的强化学习(Value-based RL)和基于策略的强化学习(Policy-based RL)。基于值的强化学习方法会学习并贪婪的选择值最大的动作,即。该方法往往得到确定性策略(Deterministic Policy)。而基于策略的强化学习方法则对策略进行进行建模,直接对进行优化。该类方法一般得到随机性策略(Stochastic Policy)。

确定性策略是在任意状态下均选择最优动作,它是将状态空间映射到动作空间的函数。它本身没有随机性质,因此通常会结合-greedy或向动作值中加入高斯噪声的方法来增加策略的随机性。一般基于值的强化学习方法学习到的是确定性策略。随机性策略是在状态下按照一定概率分布选择动作。它本身带有随机性,获取动作时只需对概率分布进行采样即可。一般基于策略的强化学习方法学习到随机性策略。

需要注意的是,上文中提到的策略迭代、值迭代算法与此处基于值的强化学习方法、基于策略的强化学习方法并无对应关系,他们均是基于值函数来完成策略的更新,可以划入基于值的强化学习方法中。

我们最后简要介绍两种基于值的强化学习算法Q-Learning和SARSA(State-Action-Reward-Sate-Action) 并以此为例说明on-policy和off-policy的强化学习。

首先介绍他们选择动作的策略-greedy:

Q-learning算法与SARSA算法均为无模型的基于值的强化学习算法,由于不知道、,他们均需要通过与环境交互得到奖励值和状态转移的结果,智能体从开始状态到结束状态的一条轨迹,我们称之为episode,episode中一次状态转移我们称为step,每一个step我们都更新一个值:

我们称式(4)为行为策略(Behavior Policy),智能体遵循该策略选择动作与环境进行交互获取数据(奖励值、转移到的状态),与之相对的为目标策略(Target Policy),目标策略依赖行为策略获取的数据进行更新,更新也会同步到行为策略,目标策略是我们优化的对象,也是强化学习模型推断时使用的策略。式 (5) 即为目标策略的更新公式,其中来自于行为策咯,、来自于环境,而则取决于目标策略,SARSA 算法的目标策略同样为-greedy,目标策略与行为策略保持一致,我们称 SARSA 是 on-policy算法。Q-learning 算法的目标策略是,目标策略与行为策略并不一致,我们说 Q-learing 是 off-policy 算法。

两者的伪代码如图4、图5所示。可以看到图4中 来自于,而图5中A′ 来自于上一句代码中-greedy 策略。

db69fc1e3437be01277ad7f1656a5426.png图4 Q-learning 算法:off-policy[7]

a500ac4a06d711b68beea4698cf458e9.png

图5 SARSA算法:on-policy[7] 整体而言,on-policy是行为策略与目标策略一致,而off-policy是行为策略与目标策略不一致。除此之外还需要注意的是offline离线学习算法,该类型算法使用静态的已经获取好的数据用于学习和部署,与前面 提到的实时与环境交互获得反馈的在线强化学习模型有所不同。 2d309dd841f941b2a0bc3ea782bbb7a7.png

图6 on-policy vs off-policy vs offline RL[8]

行为策略与目标策略的不一致有多种情况,Q-learning 中选择 ϵ-greedy 作为行为策略目的是在数据获取过程中有一定的探索性,而在图6(b)中行为策略与目标策略的不一致在于行为策略会累积一定数据后更新目标策略,或者说目标策略的更新不会马上同步到行为策略中,此时行为策略是旧的目标策略。图(a)则是 on-policy 算法,图(c)是 offline 算法,可以看到仅有简单的数据收集-> 策略学习-> 模型部署过程。

2.3 强化学习基础小结

在上文中,我们首先介绍了强化学习的定义与优化目标,并介绍了重要的两个值函数:状态值函数,状态动作值函数,无论是基于值或是基于策略的强化学习方法中他们均有着重要的作用。在第二节中我们首先简要介绍了基于模型的强化学习,分为预测和控制两种形式,学习控制其本质是为了寻找最优策略,而学习预测是为了对策略找到一种评价标准。在无模型的强化学习方法中,我们首先介绍了基于值的强化学习法方法,并以Q-learning和SARSA为例介绍了on-policy和off-policy。基于策略的强化学习方法的介绍,我们将通过阅读PPO论文进行。

b1074b336a962fb93ffbce99fe81871f.png

图7 强化学习示意图

3. PPO论文讲解

 PPO算法的提出来自于论文《Proximal Policy Optimization Algorithms》,该论文内容只有8页,首先回顾了策略梯度算法的发展,提出了两种形式的PPO算法,并比较了其他强化学习算法的效果。在本章我们首先跟随作者的思路,从最简单的策略梯度算法开始,然后拓展到 Trust Region Policy Optimization(TRPO)算法,进一步得到PPO算法的两种形式:、,最后进行实验验证效果。不同于论文中仅给出公式的做法,我们补全了一些公式的推导过程,并对PPO算法的特点进行了一点讨论。

3.1 策略梯度定理

策略梯度定理是策略梯度算法中最简单的形式,论文中给出了策略梯度算法中梯度估计的一般形式:

梯度策略算法中,策略被建模为一个神经网络模型,神经网络的参数决定了策略,进而决定了状态动作值函数、状态值函数。上式中为机会方程(Advantage Function),有。引入该变量的意义在于:

“Sometimes in RL, we don’t need to describe how good an action is in an abolutesense, but only how much better it is than others on average. That is to say, we want to know the relative advantage of that action. We make this concept precise with the advantage function. ”

为了使神经网络根据这一形式进行梯度下降操作,作者构造了如下形式的目标函数,其对求导即可得到上述形式的梯度。

该方法下,模型容易在一次轨迹中进行多步优化,这并不准确,因为一次优化后其轨迹信息理应再次采样,后续的实验中也会证明这一方法容易导致较大的策略迭代,并造成严重影响。

下面我们从基本定义开始推导。

最简单的策略梯度定理

策略梯度定理以轨迹的期望收益作为优化目标,即,为了推导方便,此处将会是有穷的、无折扣的累积奖励,但无穷的、有折扣情况下的推导也几乎完全相同。

我们首先得到轨迹在下出现的概率

因此轨迹出现概率的对数形式为:

注意,由于环境对于没有任何依赖,因此,,的梯度均为0。其对梯度求导有:

接下来会使用一个对数求导的恒等变换:

得到以上中间结论后,可以开始以下推导:

cb3bf4d623ae31b7fd6cba29a979c7b9.png

最后得到的这一形式的公式是最简单的策略梯度定理,大家可以参考OpenAI给出的实现代码[9]。结合代码我们可以更好的了解简单的策略梯度算法训练过程:在初始化变量代表的神经网络模型后,我们也同时得到其代表的策略。根据模型提供的策略,智能体与环境进行交互,得到一条轨迹,在这个过程中获取到的还有每一次动作的奖励,每一次决策时动作的概率分布,以及选择的动作,带入上述公式即可计算值。对于这一条轨迹,其对应的奖励由环境决定是一个定值,对于一条已经出现在数据集中的轨迹,其由何种策略生成已经与策略无关了,这也是前文中提到的梯度为0的理解方式。策略模型会根据值,将轨迹中出现的的的概率予以提高,这条轨迹的总收益越高,提高的幅度也越大。随着训练的进行,模型的参数会向着高收益轨迹出现概率更大的方向变化。

悟已往之不谏,知来者之可追:仅考虑未来的奖励(Reward-to-Go)

上述方法中每一对(s,a)增加的幅度均与成正比,这样做并不合适,智能体只应该根据动作的结果来进行决策,在决策前已经获得的奖励不应该影响决策,应该只包括未来的奖励。因此将式(6)修改为:

在代码实现上与原来不同的仅仅只有轨迹生成后loss值的计算,loss值的计算需要(s,a)对的权重,原公式中权重均为轨迹的总收益,此处为(s,a)对之后总的奖励。

EGLP 引理(Expected Grad-Log-Prob Lemma)

这已经很接近论文中的形式了,我们继续补充一些技巧进行后面的推导。不妨设随机变量符合概率分布,则

显然

因此

在此基础上,只需要函数只依赖于状态,都有:

因此式(7)可以替换为:

这里使用到的函数一般被称为基线。最常见的是,这样做在理论上意味着:我们并不关注当前状态下执行这个动作的值到底有多高,而是关心该动作相比于所有动作的平均水平相比是好还是坏。在实际实验过程中,这也会让策略学习更快更稳定。

因为, ,,若取,则

此处是下多次采样得到的轨迹的期望收益,而论文中给出的是单条轨迹下的期望收益值,成功得到论文中形式,也成功介绍了策略梯度算法的大致情况。

3.2 信赖域策略优化算法(Trust Region Policy Opitimization)

由于上述方法中模型迭代步长过大,并且其未在策略变化后重新进行采样,因此作者将上述目标函数修正如下:

上式中代表更新之前的参数。对目标函数进行线性近似,对约束进行二次近似后,该问题的求解可以用共轭梯度法有效求解。

这一公式的来历我们参考了论文[10]。策略梯度算法对策略的更新均使用公式:。在这里更新步长非常重要,当步长不合适时,更新的参数所对应的策略是一个更不好的策略,当利用这个更不好的策略进行采样学习时,再次更新的参数会更差,因此很容易导致越学越差,最后崩溃。

在这一节中,我们使用表示策略对应的累积奖励函数,如果可以将新的策略所对应的奖励函数分解成旧的策略所对应的奖励函数加其他项。只要新策略所对应的其他项大于等于零,那么就能保证奖励函数单调不减。

现证明

其中,和分别表示新策略和旧策略。证明过程如下:

1e615c404100eb30d0ecf95a2176a059.png

我们将式(9)进一步写为:

其中为的联合概率,为状态s在整个动作空间求和;对整个状态空间求和;求整个时间序列的和。

我们定义

以此去掉时间序列求和操作。得到:

这一公式可以直观解为:对原策略下任意状态,其所有动作的机会函数值以被选中概率作权重的加权和均是0(机会函数的定义),新策略就是在保持机会函数值不变的情况下,每个状态都有了新的动作的概率分布使得机会函数的加权和都大于等于0,那么新状态就一定优于旧状态。即保证的时候,就可以保证新策略是比旧策略好的。

但由于近似误差和估计误差的存在,可能会存在一些状态不满足,即。

旧策略的状态分布代替新策略的状态分布

在上述公式中含有新策略,同样也含有新策略,这个复杂的依赖关系 让式(10)难以优化,即根据机会函数值调整得到时,势必还要考虑到前面的。以此我们引入TRPO的第一个技巧对状态分布进行处理。我们忽略状态分布的变化,依然采用旧的策略所对应的状态分布。这个技巧是对原代价函数的第一次近似。其实,当新旧参数很接近时,我们将用旧的状态分布代替新的状态分布也是合理的。式(10)变成了:

此处作者使用了一个新的符号来表示相对于旧策略新策略产生的奖励。接下来作者参考论文[11]中的结论:当策略网络可微的时候,将和看成关于变量的函数,那么对于有:

该结论可直观的由图8所示。

0efe8631761a1e910fe5a6110c601af7.png

图8 TRPO 一阶近似图

这个式子告诉我们:在一个很小的步伐上(相当于旧策略,或者说 未更新的当前策略),若可以得到优化,那同样可以被优化。但这个公式并未给出一个合适的步长。

式(11)提供了一个思路,就是想办法在旧策略的邻域内去提升,但问题在于难以找到合适的值。为了解决这个问题,Kakada提出了一种叫Conservative Policy Iteration的算法,它给出了关于的下界。

定义,将新策略表示为当前策略和贪婪 策略的混合:

接下来 Kakada 就推导出了不等式

但式(13)仅适用于式(12)所示混合策略,而式(12)是实践中还是很难去处理的,因此接下来作者将会做一些处理使得从适用于混合策略延展到适用于普遍的策略。式(13)的意义在于如果策略的更新使得式(13)右边的提升,那么就保证了的提升,这就是我们想要的。

作者在此给出了一个具有普适性的不等式

该不等式给了的下界,我们定义这个下界为,下面利用这个下界,我们证明策略的单调性:

则:

如果新的策略能使得最大,那么有, ,这个使得最大的新的策略就是我们一直在苦苦找的要更新的策略。到这里我们的思路是:已知的下界,然后对下界求最大,从而优化出一个符合我们目标的。

该算法目前仅仅只是理论层面的,距离实践还需要接下来的一些处理。我们首先将该问题形式化为

在这里不是目标策略参数,而是指代当前策略,指未更新前的,或者说相对于新策略的旧策略。然后我们将最大KL散度这个奖惩项放到约束里去。之所以要这么做,是因为惩罚系数值太大了 (通常之间),从而在优化过程中会加大对KL散度的偏倚,又因为优化是求最大值,因此奖惩项会变得很小,根据KL散度的特点,策略的更新步伐就会很小,训练速度很缓慢,因此显然将最大KL散度当成奖惩项不是很合适,那么自然地做法就是将其转变为约束。具体得到:

θθ

上式中的约束就是策略参数的置信区域,也就是TRPO名称的由来,它约束了参数的值不会更新幅度太大,从而造成策略提升失效的现象,也就是说在约束范围之内,可以放心的去按照目标函数去优化参数。对于每一个step,都会在安全的区域内进行更新。最大化KL散度转为约束之后,取消了奖惩系数,就不存在更新步伐过小的现象了。

平均KL散度代替最大KL散度

之所以这么做,是因为最大KL散度需要遍历每一个状态,导致实际计算中计算量过大。平均KL散度通过期望的形式可以用批量样本的方式去近似,那么我们的优化目标进一步改为:

其中:

重要性采样

观察这样一个变换:

整理得到:

上述式子的场景是:服从分布,我们想计算的期望值,但是假设我们不能在分布中采样数据,只能从另外一个分布中去采样数据,可以是任何分布,那么经由上述式子,我们就可以从中采样,再去计算,最后取期望值,就是我们所求的答案。

对于

我们首先将

变换成

然后将目标函数中的替换为期望, 得到:

引入重要性采样操作,将替换为,得到:

目标函数成功变换为所求形式,完整的公式为:

3.3 CLIP

对于上述式子,如果令,那么即可得到:

上式为CPI(Conservative Policy Iteration)算法的目标函数,正如其名,CPI算法使用了一种非常保守且复杂的方式对目标函数进行优化[12]。相比之下TPRO算法并未改变目标函数的形式,而是引入约束项,使用拉格朗日对偶法处理之后采用共轭梯度法进行优化,而PPO算法的改进之处同样是解决这一目标函数难以优化的问题:如何控制更新步伐,避免策略更新步伐过大导致效果下降、更新步伐太小导致训练速度缓慢的问题,即使TRPO算法,也仍然遗留了实现困难,求解过程计算量大的缺点。

我们首先来看PPO算法对此问题的第一种优化方式,将上述目标函数修改为如下形式:

其中表示将限制范围,那么上式就将限制在之间,一般取,上式也就是PPO的目标函数,论文中对于其进行了绘图表示。

21914d3d52564003c35025f148dd2261.png

图9 CLIP 效果图

下图也说明了CLIP相比于CPI区间范围更小。

571314022adbb22a96a0e2e45aa77863.png
图10 CLIP、CPI 效果对比

3.4 Adaptive KL Penalty Coefficient

前面讲到采用罚函数法进行参数更新时,主要是罚函数系数的选取比较困难。而现在一种克服方法是自适应调整系数。其优化目标为:

计算:

算法涉及3个超参数:、、 ,但这三者的敏感性很低,调节并不是很麻烦。效果比CLIP要差,但是可作为一个baseline。采用SGD做一阶优化。

3.5 算法

上一章中第三节介绍了基于TRPO的函数;第四节介绍了基于TRPO的函数。这一节开始介绍完整的PPO算法。PPO算法的完整目标函数:

式中为2个超参数,为信息熵增加探索率,为训练Critic网络的损失函数。这里采用作为替代函数。

优势函数的估计基于以下式子:

其中。

论文随后给出PPO算法伪代码如下:

efdc9ee2227c9c0785e27877d495af6a.png
图11 PPO伪代码

该算法使用固定长度的轨迹片段,每次迭代,个平行的actor中每一个均会收集个时间戳的数据,然后计算替代损失,使用小批量随机梯度下降进行优化,或者Adam(效果更好)。

3.6 实验

3.6.1 不同目标函数的对比

作者在7个模拟机器人任务上测试了标准策略梯度、、作为目标函数的训练效果,以随机初始化的策略效果作为0,最好的结果作为1,每个目标函数在每个任务上均运行3次,取平均值作为目标函数的评分。实验结果如下所示:

725e30f43367705bd7bd6d93d3125a22.png
图12 不同目标函数的效果

3.6.2 连续空间下与其他算法的对比

作者将TRPO算法、交叉熵、标准策略梯度算法(使用Adam优化,每一个batch后Adam算法的步长根据类似于的方式自适应调整)、A2C、带有置信域的A2C算法在连续空间问题下进行对比。效果如下图所示:

4d2dcdbace79c275a96226c56f40765d.png

图13 连续空间下算法效果对比

3.6.3 连续空间下示例

为了展示PPO算法在在高维连续控制问题下的效果,作者训练了一个3D模拟机器人,主要任务包括:向前运动、目标追逐、跌倒爬起,该任务使用作为目标函数训练得到机器人的运动策略。其在三个任务上的学习曲线如下图所示:

dafb93b49b7bcfb878b6a5f06b73d2c6.png

图14 3D控制学习曲线

bb1c798d234169fa0d79ac62e3277a81.png

图15 3D控制示意图

上图中为12帧静态图像,在第7帧时目标的位置发生了变化,机器人也随之朝向新的目标。

3.6.4 雅达利(游戏)中与其他算法的对比

作者在雅达利发行的49款游戏上测试了PPO以及其他算法的效果,如下表所示:

0fb5e6dd0ff90ac41ee1b03a3c5fda60.jpeg

图16 雅达利游戏中效果

3.7 论文总结

PPO 算法在 TRPO 的基础上提出了两种优化后的形式、,并经过大量实验证明了其良好的效果。相比于 TRPO 算法,两种形式均重点解决 TRPO 约束项影响迭代步伐、求解繁琐、实现困难的特点,它们均将约束项转为惩罚项,解决了有约束的优化问题求解繁琐的特点,针对迭代步长过大的问题,将之限制在[1−ϵ, 1 + ϵ]范围内,则自适应地调整惩罚性系数,同样达到了限制步长的效果,与TRPO相比,它们对约束项的处理更加简单优雅,实现也更方便,性能也得到了提升。

4 总结与思考

PPO 算法自 2017 年提出后,以其实现相对简单、效果优良的特点,在 OpenAI 强化学习相关工作中出现频率极高,在游戏、机器人控制等实际应用领域成功证明其性能,截至目前仍然是基于策略的强化学习算法中最前沿的算法,即使 OpenAI 已经解散其机器人研究组,PPO 算法却又意外的在 NLP 领域大放异彩,其与 GPT-3 的结合成功产生了让人惊艳无比的 ChatGPT,笔者不禁思考,这种 RLHF(Reinforcement Learning Human Feedback)范式下究竟是什么让 ChatGPT 如此强大,是作为 Human Feedback 的高质量语料,还是 PPO 算法中蕴含的策略,还是 GPT-3 中未充分挖掘的大模型潜力?

目前高质量数据逐渐成为商业公司的专属,国内大模型的研发也落后于美国,模型提出后缺乏后续维护,没有长期坚持下去形成自己的技术路线,不注重研究的 diversity。而国外部分顶尖研究组已经与 OpenAI 等大公司形成紧密的联系,在相关研究上有着很大的优势,ChatGPT 的出现已经对很多 NLP 研究领域造成了巨大的冲击,面对美国在大模型上的封锁,我国缺乏由商业公司主导的大模型,国内研究组只能另辟蹊径,但大模型的出现到产生 ChatGPT 一般的成果需要漫长的技术积累,若不立刻行动起来,我国与美国在大模型上的差距恐怕会越拉越大。

参考文献

[1] Barret Zoph, Vijay Vasudevan, Jonathon Shlens, and Quoc V. Le. Learning transferable architectures for scalable image recognition. CoRR, abs/1707.07012, 2017.

[2] OpenAI. Learning dexterity: a human-like robot hand to manipulate physical objects with unprecedented dexterity. Web Page, 2018. Last Accessed December 23, 2022.

[3] Christopher Berner, Greg Brockman, Brooke Chan, Vicki Cheung, Przemysław Dębiak,Christy Dennison, David Farhi, Quirin Fischer, Shariq Hashme, Chris Hesse, et al. Dota2 with large scale deep reinforcement learning. arXiv preprint arXiv:1912.06680, 2019.

[4] OpenAI. Openai five defeats dota 2 world champions. Web Page, 2018. Last Accessed December 23, 2022.

[5] OpenAI. Openai spinning up. Web Page, 2018. Last Accessed December 23, 2022.

[6] CSDN. 【强化学习笔记】强化学习中的 v 值和 q 值. Web Page, 2022. Last Accessed December 23, 2022.

[7] David Silver. Lectures on reinforcement learning.URL:https://www.davidsilver.uk/teaching/, 2015.

[8] Sergey Levine, Aviral Kumar, George Tucker, and Justin Fu. Offline reinforcement learning: Tutorial, review, and perspectives on open problems. CoRR,abs/2005.01643, 2020.

[9] OpenAI. Openai implement code. Web Page, 2018. Last Accessed December 23, 2022.

[10] John Schulman, Sergey Levine, Pieter Abbeel, Michael Jordan, and Philipp Moritz. Trust region policy optimization. In Francis Bach and David Blei, editors, Proceedings of the 32nd International Conference on Machine Learning, volume 37 of Proceedings of Machine Learning Research, pages 1889–1897, Lille, France, 07–09 Jul 2015. PMLR.

[11] Lucian Buşoniu, Damien Ernst, Bart De Schutter, and Robert Babuška. Approximate reinforcement learning: An overview. In 2011 IEEE symposium on adaptive dynamic programming and reinforcement learning (ADPRL), pages 1–8. IEEE, 2011.

[12] S. Kakade and J. Langford, Approximately Optimal Approximate Reinforcement Learning. Proceedings of the Nineteenth International Conference on Machine Learning: , 2002.

作者简介

陈一帆, 就读于哈尔滨工业大学社会计算与信息检索研究中心,对话技术(DT)组,大四本科生,师从张伟男教授。研究方向为对话式推荐系统。

449dff9270433bfe49b6fe6555ee2e44.jpeg

本期责任编辑:赵森栋

本期编辑:赵   阳

进NLP群—>加入NLP交流群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2281.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【自然语言处理】ChatGPT 相关核心算法

ChatGPT 相关核心算法 ChatGPT 的卓越表现得益于其背后多项核心算法的支持和配合。本文将分别介绍作为其实现基础的 Transformer 模型、激发出其所蕴含知识的 Prompt / Instruction Tuning 算法、其涌现出的 思维链能力、以及确保其与人类意图对齐的 基于人类反馈的强化学习算法…

ChatGPT技术原理解析:从RL之PPO算法、RLHF到GPT4、instructGPT

写在最前面,为了彻底写清楚ChatGPT背后的所有关键细节,每个月不断深挖,从1月初写到6月底仍未完工,除了本文之外,过程中涉及到多篇文章(RL入门、论文解读、微调实战、代码实现、CV多模态),再加上之前写的Tra…

使用ChatGPT生成了十种排序算法

前言 当前ChatGPT非常火爆,对于程序员来说,ChatGPT可以帮助编写很多有用的代码。比如:在算法的实现上,就可以替我们省很多事。所以,小试牛刀一下,看看ChatGPT生成了排序算法怎么样? 简介 排序…

ChatGPT/InstructGPT详解

来源:京东云 海豚数据科学实验室 本文约7000字,建议阅读15分钟 要搞懂ChatGPT,我们必须要先读懂InstructGPT。 前言 GPT系列是OpenAI的一系列预训练文章,GPT的全称是Generative Pre-Trained Transformer,顾名思义&…

我用低代码结合ChatGPT开发,每天多出1小时摸鱼

👉腾小云导读 GPT 出现之后,很多人推测大量的软件都会因为其出现而重写。本文主要是低代码平台与 ChatGPT 结合的一些思考以及实践。期望与各位读者一起搭上 AI 这列快车,为开发提提速~ 👉目录 1 背景 2 Demo 演示 3 思…

ChatGPT是智能硬件的春天

智能音箱,一度被亚马逊带领引爆。 国内京东,阿里,百度,小米,腾讯等厂家参下,蓬勃发展。 然而,在2021到2022年,智能音箱就可开始下滑,叮咚音箱退出历史舞台。 转机出现在2…

万字长文剖析ChatGPT

原文链接:https://mp.weixin.qq.com/s/8IFcQDhsLIWJIx8siF-wdQ 简单来说,ChatGPT 是自然语言处理(NLP)和强化学习(RL)的一次成功结合,考虑到读者可能只熟悉其中一个方向或者两个方向都不太熟悉…

推荐:ChatGPT指令大全(37个!)

使用时,可参考这些语境。会问问题,才是最重要的。 参考:AGI 时代必备:《提问的艺术——让ChatGPT导出高质量答案》 1. 写报告:我现在正在 [报告的情境与目的]。我的简报主题是 [主题],请提供 [数字] 种开头…

亚马逊高调宣布入局ChatGPT大战,CEO :个人免费使用,改变所有体验,弯道超车!...

点击“开发者技术前线”,选择“星标” 让一部分开发者看到未来 转载自:机器之心 新工具叫 Bedrock,用于一揽子替代 ChatGPT 和 DALL-E 2,并支持了 Titan 大模型。 一夜之间,亚马逊来了个「弯道超车」。 在全球各大科技…

EXCEL 也可以使用chatGPT了,教程来了

1、打开EXCEL ,点击插入,选择加载项:如下图 2、搜索Openai ,点击右侧添加BrainiacHelper 插件即可; 3、登录openai 右上角获取openai apikeys ; 完成以上操作就可以在Excel 中使用 chatGPT了, 喜欢的小伙伴可以试试哦…

突发!ChatGPT 开始大面积封号,注册功能关闭!亚洲成重灾区,网友自救喊话:不要登录,不要登录...

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! ​ “不要登录ChatGPT!” “暂时远离人工智能和ChatGPT概念板块高位股!” 就在这两天,一些关于ChatGPT的疾呼突然在各种社交平台和群聊刷屏了。 …

chatgpt入门体验【具体操作】

chatgpt入门体验【具体操作】 前提操作步骤遇到问题 前提 这个得花点小烟钱才行。 操作步骤 1、账号注册 https://chat.openai.com/auth/login 2、虚拟手机号 https://sms-activate.org/ 我是用的是网易邮箱 充值 可使用支付宝 选择openAI 3、打开openAI 注册输入验证码 …

一键部署属于自己的ChatGPT-Next-Web

完整功能刚需: OpenAI 注册登录之后给的 api Key GitHub账号 Netlify账号 Tip: 注册 OepenAI账号 需要用国外手机号 这里建议去一些渠道购买账号 十块钱不到如果访问 OpenAI 的话 一定要挂欧美节点 否则禁止IP访问 概率会被封号为什么用 Netlify 托…

ChatGPT - 横看成岭侧成峰

定义 ChatGPT 是什么? ChatGPT是由OpenAI开发的一个人工智能聊天机器人程序,由 OpenAI 公司于2022年11月推出。该程序使用基于GPT-3.5架构的大型语言模型并通过强化学习进行训练。 ChatGPT以对话方式进行交互,可以用于包括自动文本生成、自…

ChatGPT探索系列之一:理解ChatGPT的背景和应用领域

文章目录 前言一、ChatGPT的背景1. ChatGPT的背景:深入解析2 ChatGPT的最新架构:GPT-4 二、ChatGPT的应用场景1.ChatGPT在教育领域的应用2. ChatGPT在医疗领域的应用3. ChatGPT在金融领域的应用4. 客户服务领域 总结 前言 ChatGPT发展到目前&#xff0c…

ChatGPT 账号咋了:Sorry, you have been blocked

问题描述 早晨登录,提示如下图所示 别慌!!!! 真的可能会慌,因为很多资料还没有导出保存,账号不能用,很多的工作白做了 解决办法 切换代理IP ,每个工具可能操作方法不一样清除openAI相关的cookies 再次登录成功…

chatgpt赋能python:Python查找手机号码

Python查找手机号码 在今天的数字时代,手机号码已成为每个人生活中必不可少的一部分。虽然我们可以轻松地拥有一部手机,但是对于那些需要通过电话来联系客户、朋友或家庭成员的人,获取正确的手机号码就显得尤为重要。 这就是为什么Python查…

从开发一个插件看,安卓gradle插件适配AGP8.0

transform API没学会?不用学了,AsmClassVisitorFactory更简单 前言从零开始,构建一个兼容AGP8.0的插件插件发布为什么适配AGP8.0没用8.0.0版本?同一插件如何注册多个转换任务/顺序执行多个转换任务InstrumentationParameters&…

Android开发:kotlin封装 Intent 跳转Activity,报ActivityNotFoundException 问题

Android开发:kotlin封装 Intent 跳转Activity,报ActivityNotFoundException 问题 前言起因问题解决方法一:方法二: 总结 前言 近期用kotlin进行项目开发,写了挺多次跳转Activity页面代码,发现和Java有一点…

安卓APP源码和设计报告——运动健身教学

实 验 报 告 课程名称 实验名称 指导教师 专业 班级 学号 姓名 目 录 一、设计背景31. 需求分析32. 课题研究的目的和意义3二、系统需求分析与开发环境31. 系统功能需求32.系统界面需求43.开发环境4三、系统设计4四、系统测试51.脑模拟器测试6五、总结与展望6六、重要…