开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2023.04.11日本
作者简介
作者:Surika
原文:
*封面由newbing创作,prompt为depictingpicturesaboutreinforcementlearningbasedonhumanfeedback,impressionismstyle.
**本文在整理时参考了互联网上众多资料,仅用于学术交流,如有侵权请联系。
ChatGPT不是突然产生的,从最早的GPT一步步进化到今天,是OpenAI背后无数人多年积累的结果。中间经历的几个主要版本:
GPT-1用的是无监督预训练+有监督微调,只有简单的单向语言模型任务;
GPT-2用的是纯无监督预训练,使用更多的数据,更大的模型,又新增了几个辅助的训练任务;
GPT-3沿用了GPT-2的纯无监督预训练,但是数据大了好几个量级。它使用45TB的超大规模数据,175B的超大参数量模型。另外加入了Meta-learning的训练任务,提高了Fewshot和Zero-shot任务上的表现;
InstructGPT加入了近两年流行的prompt-learning。另外更重要的是,加入了强化学习,即RLHF(ReinforcementLearningfromHumanFeedback),基于人工反馈机制的强化学习,也是后面着重介绍的模块。
ChatGPT:目前没有开源代码或论文参考,从网上的推测来看,应该是在InstructGPT的基础上,进一步优化了多轮对话效果。与其前身InstructGPT相比,ChatGPT试图减少有害和误导性的回复。
下图是ChatGPT的训练过程,本文要介绍的RLHF技术主要是第二步和第三步的内容:
(1)利用gpt自回归式的语言模型在大规模的语料上进行无监督的预训练,得到生成模型
(2)然后人工对用户提示文本后,GPT生成句子的结果进行打分。产生形式为(提示文本,GPT生成句子,得分)的数据集,训练打分模型
(3)最后利用强化学习的方式让打分模型去优化生成模型的效果。
chatgpt效果如此好,主要可以归结于两个原因:
一是训练语料的质量、多样性。openai搭建了40多人的团队去收集和标注数据。而且训练一个gpt3.5大约要花1000多w美刀,所以数据和算力不容忽视。
二是基于强化学习的训练方式。其中(2)(3)步被学术界叫做ReinforcementLearningFromHumanFeedback。其实就利用人类的反馈去优化你的目标模型,让模型输出更符合人类直觉的结果。chatgpt采用PPO算法利用打分模型去进一步优化生成模型。
由于数据和算力我们无从下手,本着对chatgpt深入学习的心态,我们先研究一下chatgpt强化学习的部分的基础知识。
以下两页PPT中讲解了强化学习的一些基础概念。需要注意的是,强化学习需要一个交互的过程,而且要解决的是序列决策问题。这里如果要展开还会涉及到马尔科夫决策过程,本文中先不做过多叙述。
强化学习有许多在游戏上的应用。用熟悉的supermario来举个例子,我们可以操纵的游戏角色mario是可以交互的智能体agent,游戏中每一帧的画面中要交互的场景即enviroment,游戏角色依据当前环境做出新的动作,而环境会对角色的每个动作作出反馈,例如吃到了金币会有加成,而被击中则不是一个好消息,这样的反馈可以量化为奖励reward,这种奖励值可以帮助学习如何选择最合适的动作,也就是在交互中学习。
这张图说明了强化学习与我们熟悉的监督学习、无监督学习的关系。强化学习是和监督学习,非监督学习并列的第三种机器学习方法。
我们可以通过与熟悉的监督学习比较,来说明强化学习的一些特点。
(2)在强化学习过程中,没有非常强的监督者(supervisor),只有奖励信号(rewardsignal)。并且奖励信号是延迟的.
(3)强化学习智能体会从环境中获得延迟的奖励,即环境会在很久以后才告诉我们之前所采取的动作到底是不是有效的。因为我们没有得到即时反馈,所以智能体使用强化学习来学习就非常困难。当我们采取一个动作后,如果使用监督学习,就可以立刻获得一个指导,比如,我们现在采取了一个错误的动作,正确的动作应该是什么。而在强化学习中,环境可能会告诉我们这个动作是错误的,但是它并不会告诉我们正确的动作是什么。而且更困难的是,它可能是在一两分钟过后才告诉我们这个动作是错误的。所以这也是强化学习和监督学习不同的地方。
(4)强化学习会试错探索,它通过探索环境来获取对环境的理解。学习器并没有告诉我们每一步正确的动作应该是什么,学习器需要自己去发现哪些动作可以带来最多的奖励,只能通过不停地尝试来发现最有利的动作。智能体获得自己能力的过程,其实是不断地试错探索(trial-and-errorexploration)的过程。探索(exploration)和利用(exploitation)是强化学习中非常核心的问题。其中,探索指尝试一些新的动作,这些新的动作有可能会使我们得到更多的奖励,也有可能使我们“一无所有”;利用指采取已知的可以获得最多奖励的动作,重复执行这个动作,因为我们知道这样做可以获得一定的奖励。因此,我们需要在探索和利用之间进行权衡,这也是在监督学习中没有的情况。
最后一点,智能体的动作会影响它随后得到的数据,这一点是非常重要的。在训练智能体的过程中,很多时候我们也是通过正在学习的智能体与环境交互来得到数据的。所以如果在训练过程中,智能体不能保持稳定,就会使我们采集到的数据非常糟糕。我们通过数据来训练智能体,如果数据有问题,整个训练过程就会失败。所以在强化学习中一个非常重要的问题就是,怎么让智能体的动作一直稳定地提升。用下棋来举个形象的例子,在监督学习中,棋手的上限往往取决于老师的上限,也就是俗话说的”和臭棋篓子下棋,越下越臭“;而在强化学习的设置下,即使有着资质平平甚至有些笨的起点,也有自己和自己下,有朝一日悟道飞升的可能性。
再来看看强化学习和非监督学习的区别。也还是在奖励值这个地方。非监督学习是没有输出值也没有奖励值的,它只有数据特征。同时和监督学习一样,数据之间也都是独立的,没有强化学习这样的前后依赖关系。
可以总结说,监督学习是从外部监督者提供的带标注训练集中进行学习,也就是由任务驱动型;
非监督学习是一个典型的寻找未标注数据中隐含结构的过程,也就是数据驱动型;
强化学习则更偏重于智能体与环境的交互,这带来了一个独有的挑战——“试错(exploration)”与“开发(exploitation)”之间的折中权衡,智能体必须开发已有的经验来获取收益,同时也要进行试探,使得未来可以获得更好的动作选择空间,也就是说可以从错误中学习。
但在NLP的实际实验中,强化学习和监督学习也一些概念之间也存在着对应的关系,上图中做了说明。该图出处为HeptaAI:强化学习一:基础部分。
让我们落到文本生成的实际场景中。如图所示,文本生成的问题,可以建模为一个token空间上的序列决策问题(选择一个token后继续选择另一个token)
最后,我们来看强化学习下算法的分类法。
根据一种比较通行的分类法,强化学习可以分为基于值的方法、基于策略的方法和actor-critic方法这三类。
基于值函数的学习方法要学习一个价值函数,去计算每个动作在当前环境下的价值,目标就是获取最大的动作价值,即我每一步采取回报最大的动作和环境进行互动。Value-Based的方法输出的是动作的价值,选择价值最高的动作。适用于非连续的动作。常见的方法有Q-learning、DeepQNetwork和Sarsa。其基础网络结构如下图所示,在编码网络之后,直接用一个全连接层来为每个状态输出一个分数。
基于策略梯度的学习方法去学习策略函数,去计算当前前环境下每个动作的概率,目标是获取最大的状态价值,即该动作发生后期望回报越大越好。
Policy-Based的方法直接输出下一步动作的概率,根据概率来选取动作。但不一定概率最高就会选择该动作,还是会从整体进行考虑。适用于非连续和连续的动作。常见的方法有Policygradients。从图中可以看出来,在全连接层之后还有一个softmax层,从而将打分转化成概率。
Actor-Critic融合了上述两种方法,价值函数和策略函数一起进行优化。价值函数负责在环境学习并提升自己的价值判断能力,而策略函数则接受价值函数的评价,尽量采取在价值函数那可以得到高分的策略。
有了前面的基础,就可以引入ChatGPT中实际使用的强化学习方法,PPO算法,这也是OpenAI的RL工作中常用的算法。本章内容主要来自李宏毅老师的强化学习课程,视频和课程网站链接附在下面。
课程视频的B站链接:李宏毅深度强化学习(国语)课程(2018)_哔哩哔哩_bilibili
课程网站:Hung-yiLee
PG算法之前,主流的基于价值的强化学习算法,在给定一个状态下,计算采取每个动作的价值,我们选择在所有状态下具有最大的期望奖励的行动。如果我们省略中间的步骤,即直接根据当前的状态来选择动作,也就引出了强化学习中的另一种很重要的算法,即策略梯度(PolicyGradient,PG)。也就是说,其目的是是直接建模与优化Policy
举例如图所示:输入当前的状态,输出action的概率分布,依据概率分布选择下一个action。
策略梯度它通过观测信息选出一个行为直接进行反向传播,利用reward奖励直接对选择行为的可能性进行增强和减弱,好的行为会被增加下一次被选中的概率,不好的行为会被减弱下次被选中的概率。
因此,有了PPO算法的改进原因。我们希望可以用一个旧策略收集到的数据来训练新策略,这意味着我们可以重复利用这些数据来更新策略多次,效率上可以提升很多。具体来说,PPO算法利用重要性采样的思想,在不知道策略路径的概率p的情况下,通过模拟一个近似的q分布,只要p同q分布不差的太远,通过多轮迭代可以快速参数收敛
重要性采样的过程如下。开始时x服从于p(x)分布,可以展开为对px计算积分,然后分子分母同乘q(x),通过变形,调整为从q采样x,并且需要承上一个权重p(x)比q(x),来修正pq两个分布之间的差异。
总结来说,近线策略优化算法PPO即属于AC框架下的算法,在采样策略梯度算法训练方法的同时,重复利用历史采样的数据进行网络参数更新,提升了策略梯度方法的学习效率。PPO重要的突破就是在于对新旧新旧策略器参数进行了约束,希望新的策略网络和旧策略网络的越接近越好。近线策略优化的意思就是:新策略网络要利用到旧策略网络采样的数据进行学习,不希望这两个策略相差特别大,否则就会学偏。
但重要性采样依然存在一个问题。我们用q代替了p来采样x,但是两个随机变量的分布,即使均值mean一样,也不代表方差variance一样。推导过程可以看左边的公式。第一行是我们上一页ppt推出来的结论。根据黄色框中的方差计算的方法,我们可以写出第三行到第四行的公式。根据这个推导过程可以看见,两个方差之间存在这差异p(x)比q(x),因此,如果p(x)比q(x)的数值很大,就会造成方差很大。理论上来说,如果采样次数很多,p和q得到的期望会是一样的。但如果采样次数不够多,就可能会有很大的差别。
直观的用右边的图来说明一下。蓝线是p(x)的分布,绿线是q(x)的分布,红线是f(x)。以分布来说,p(x)采样的点多数在左边,f(x)是负的;但q(x)采样的点多数在右边,是正的。因此,采样样本数不多的情况,两者之间差异会很大。
根据一系列的推导和演化,我们可以得到最后这个公式,一个新的目标函数。这个推导是根据蓝色框里的公式来的。
KL散度简单来说就是衡量二者有多相似,我们希望这两个分布越像越好。
算法的步骤如下:
目标函数即中间这个式子。
使用KL散度的是初版的PPO算法,因为要计算KL散度还是有点复杂,因此延伸出了PPO2算法。
这是PPO的论文给出的实验结果,紫色的线是PPO2的效果,基本都是在第一第二的位置上,效果是非常不错的。
在了解了最基本的强化学习之后,我们再来对比一下RL和RLHF的区别和联系。
上面的图是前面出现过的基本强化学习的概念,下面是RLHF的示意图。可见其中的元素和概念基本是共享的,而不同的也就是红框中的部分,在agent和environment之前,出现了第三个可以参与交互的对象:人类,并由其衍生了一系列步骤。
实际上,RLHF并不是突然出现的事物,最早在2017年的NIPS就出现了这一思想。而在2020年的NIPS上,OpenAI已经尝试将其用于文本摘要任务,并取得了很好的效果。图中可见,RLHF的步骤框架从2020年这篇工作开始,就基本确定了。
本文提出的就是一种利用上述“人类偏好”进行DRL的方法,非正式地说,agent的目标是通过向人类发出尽量少的偏好比较请求,生成人类喜欢的轨迹。
在之前的RL工作中,r是有定量的评估公式的。但像在上一页里介绍的,我们现在没有定量评估所需的奖励函数r,就只能定性评估agent满足人咧偏好的程度。此外还有一个问题,因为系统很难每次重置成同样的状态,因此用于比较的轨迹片段通常从不同的状态开始,这增加了人类比较评估的难度,也使得人类的比较结果更难解释,但是本方法克服了此困难。
最后是拟合奖励函数,我们将奖励函数的估计值解释为偏好预测器,最小化预测偏好分布和实际人类偏好分布之间的交叉熵损失。
论文理解【IL-IRL】--DeepReinforcementLearningfromHumanPreferences
读论文:Learningtosummarizefromhumanfeedback
本研究使用来自Reddit的TL;DR摘要数据集,该数据集包含3M的帖子文本以及相应的摘要信息。通过一系列数据预处理,我们仅保留了包含24到48个token的人工编写摘要的帖子,并将摘要长度最大化以减少长度对质量的潜在影响。最终,我们获得了一个包含123,169个帖子的数据集。选择CNN/DM数据集的原因是该数据集的基线非常强,可以通过简单的提取方法实现。
本研究的目标是生成质量尽可能好、长度不超过48个token的摘要。摘要的质量标准是能够准确地传达原文的内容,以满足只读摘要不读原文的读者的需求。
前一项研究报告了“我们希望我们的模型学习的质量概念和人工标注人员实际评估的质量概念之间的不匹配”,导致模型生成的摘要在标注员看来是高质量的,但在研究人员看来却是相当低质量的。
与前一项研究相比,本研究采取了两个措施来提高人工标注数据的质量。首先,我们完全过渡到离线设置,向人工标注人员发送大批次的比较数据,并在累积的数据上重新训练模型。其次,我们与标注员保持密切联系,为他们提供详细的指导,回答他们在共享聊天室中的问题,并定期向他们提供反馈。我们对所有标注员进行了培训,以确保他们的标注结果与我们的标准高度一致,并在项目过程中不断监测标注员和研究人员之间的一致性。
最后,我们的一致性数据非常良好,标注员与专家之间的一致性达到了77%,而专家之间的一致性达到了73%。我们的主干模型采用了GPT-3结构,并在1.3B和6.7B两个参数量的模型上进行了HumanFeedback实验。
首先,对LM进行自回归预训练是第一步。这包括对两个模型进行LM的token预测自回归预训练,并在构建的摘要数据集上对模型进行有监督的fine-tune,以获得监督模型。使用这些监督模型对初始摘要进行抽样,以进行比较,并将其用作baseline来收集多个候选的原文-摘要对数据。这些数据基于当前策略、初始策略、原文摘要和其他不同的baseline生成,并成对发送给标注人员来选择最佳的那一个。
公式里x是post,y0和y1是两个summary,rewardmodel要预测哪个是人类认为更好地。如果人类认为yi更好,RMloss写成这个公式。
作者在奖励中加入了一个KL散度惩罚项,具有以下两个好处。首先,它可以作为熵奖励,鼓励策略进行探索,从而防止其坍塌为单一模式。其次,它确保策略不会学习产生与奖励模型在训练期间看到的结果有太大不同的输出,从而防止模型训飞了。
左上角是人工评估最喜欢的输出,纵坐标是被选为最喜欢的比例。可见HF的结果大大超越了监督学习的结果。
左下角是泛化性评估。评估模型在其他数据集上的迁移能力(OOD)。虽然HF在训练时有生成长度的限制,但是从结果可以看到,模型的效果基本和相同结构模型在目标领域数据上训练的结果一样好,比另外两个模型好出一大截。
HF的迁移性能也非常优秀,接近了监督学习的效果。反观监督学习的迁移效果很差,甚至还不如pretrainonly。
右下角表示利用ROUGE作为reward来优化模型,人类评估效果上会很快就达到峰值,并稳步下降,收敛。效果相比其他RM的差了很多
有了前面两篇的铺垫,我们就可以正式来看chatgpt是怎么做的了。
第一步是花钱招人给问题(prompt)写回答(demonstration),使用经典的预训练目标训练一个语言模型GPT3。这一步大家都懂,就不用说了。这一步可以多训几个版本,第二步会用到。
这一步里比较值得说的就是预训练模型的选择。首先,我们。对这一步的模型,OpenAI在其第一个流行的RLHF模型InstructGPT中使用了较小版本的GPT-3;Anthropic使用了1000万~520亿参数的Transformer模型进行训练;DeepMind使用了自家的2800亿参数模型。
这里可以用额外的文本或者条件对这个LM进行微调,例如OpenAI对“更可取”(preferable)的人工生成文本进行了微调,而Anthropic按“有用、诚实和无害”的标准在上下文线索上蒸馏了原始的LM。这里或许使用了昂贵的增强数据,但并不是RLHF必须的一步。由于RLHF还是一个尚待探索的领域,对于”哪种模型”适合作为RLHF的起点并没有明确的答案。
接下来,我们会基于LM来生成训练奖励模型的数据,并在这一步引入人类的偏好信息。
在第二部中,针对问题的多个回答,我们可以使用多个模型来产生,包括初始模型、finetune模型和人工模型等,然后使用奖励模型/偏好模型来对这些回答进行打分。这个奖励模型接收prompt和response两个文本作为输入,输出一个标量奖励。奖励模型的训练是RLHF流程中非常重要的一个环节,实际上是一个监督学习过程。
在RM的训练过程中,我们可以从Prompt数据集中选取一些数据作为训练集,在输入初始模型后,可以产生多个response,这些response可以是多个语言模型生成的,也可以是generate之后采样得到的,只要保证这些response是针对同一个prompt生成的即可。接下来,我们需要对这些response进行排名,人工对这些回答进行排序,按照一些标准(比如可读性、正确性等)进行排序。这里需要注意,我们不直接对文本标注分数来训练RM,因为标注者的价值观不同会导致标注分数不准确且存在噪音。相反,我们使用排名来比较多个模型的输出,并构建更好的规范数据集。
对于排名方式,一种成功的方式是对不同模型在相同提示下的输出进行比较,并使用Elo系统建立一个完整的排名。使用pair-wiseloss将rank计算为具体的分数,然后归一化为标量奖励值。InstructGPT论文使用的是pair-wiseloss,也可以使用经典的ELO算法来实现。通过这些排名结果,我们可以得到针对同一个prompt的response的分数,这些分数将被用于训练RM模型。需要注意的是,这些训练数据集可以从预定义数据集中采样生成,也可以通过AmazonMechanicalTurk等渠道获得。
最后,这一奖励模型的训练对于RLHF算法的无缝接入非常重要。我们可以用端到端的方式使用LM来建模,也可以使用模块化的系统建模。这一奖励数值对于后续的RL算法来说至关重要。
接下来是最后一步:利用RM输出的奖励,用强化学习方式微调优化LM。
最后一阶段是强化学习微调阶段。在这一步中,数据集规模更大,且不再需要人工参与。这一步的方法可以概括为以下四个部分:
首先,使用第一阶段监督模型的参数来初始化PPO模型的参数。接着,使用PPO模型生成回答,并使用第二阶段的RM模型对回答进行评估和打分。最后,通过打分,更新训练PPO模型的参数。
让我们将微调任务表述为强化学习问题。我们认为输入的prompt是状态(state),输出的response是动作(action),想要得到的策略(policy)就是怎么从prompt生成action能够得到最大的reward,也就是拟合人类的偏好。
这个策略的行为空间(actionspace)是语言模型(LM)的词表对应的所有词元,通常在50k数量级左右。所有的状态是可能的输入词元序列,也比较大(词汇量^输入标记的数量)。奖励函数是偏好模型和策略转变约束(Policyshiftconstraint)的组合。
PPO算法确定的奖励函数具体计算如下:将prompt输入初始LM和当前微调的LM,分别得到了输出文本。将来自当前策略的文本传递给RM,得到一个标量的奖励。将两个模型生成的文本进行比较,计算差异的惩罚项。在来自OpenAI、Anthropic和DeepMind的多篇论文中,该惩罚项被设计为输出词分布序列之间的KL散度的缩放。这一项被用于惩罚RL策略在每个训练批次中生成大幅偏离初始模型的文本,以确保模型输出合理连贯的文本。如果去掉这一惩罚项,可能会导致模型在优化中生成乱码文本来愚弄奖励模型提供高奖励值。此外,OpenAI在InstructGPT上实验了在PPO添加新的预训练梯度,以保证RL模型能够保留好的语言模型能力。可以预见到,随着RLHF研究的进展,奖励函数的公式会继续进化。
作为一个可选项,RLHF可以通过迭代RM和策略共同优化。随着策略模型的更新,用户可以继续将输出和早期的输出进行合并排名。Anthropic在他们的论文中讨论了迭代在线RLHF,其中策略的迭代包含在跨模型的Elo排名系统中。这样引入策略和RM演变的复杂动态,代表了一个复杂和开放的研究问题。
对这一部分,已经有许多非常优秀且深入的解析,例如以下两篇:
Akiko:从零实现ChatGPT——RLHF技术笔记
ChatGPT的主要成功要归结于采用RLHF来精调语言大模型。既然RLHF效果这么好,自然也有工作尝试将这个思路迁移到其他任务上。近日谷歌AI团队将类似的思路用于文生图大模型:基于人类反馈来精调StableDiffusion模型来提升生成效果。
目前的文生图模型虽然已经能够取得比较好的图像生成效果,但是很多时候往往难以生成与输入文本精确匹配的图像,特别是在组合图像生成方面。为此,谷歌最新的论文AligningText-to-ImageModelsusingHumanFeedback提出了基于人类反馈的三步精调方法来改善这个问题。
该工作更详细的介绍可见当ChatGPT和StableDiffusion碰撞:谷歌用人类反馈提升文生图效果
下面是一些图像生成样例,也可以看出精调后的模型在文本语义对齐上的提升。
这个论文只是基于人类反馈在文生图模型上一个尝试,看起来还是有一定的效果,但是主要的问题是图像生成质量出现下降,比如出现过饱和以及失真的图像。虽然加入未标注的数据集和预训练数据集,能在一定程度上改善这个问题。
论文在120个文本上基于人类打分来对原始模型和精调后的模型来进行对比,结果如下所示,可以看到在图像和文本对齐方面,模型效果有明显的提升(50%vs3%),但是在图像生成质量上(fidelity)有稍微的下降(MS-COCO数据集上的FID也有下降),论文认为主要的原因是设计的数据集主要目标是为了对齐文本和图像,数据集的多样性较少,而且采用的预训练数据集只是一个很小的子集,如果采用更大的数据集,应该可以进一步改善这个问题。从消融实验来看,采用未标注数据集和预训练数据集来进行正则化,对于保证图像生成质量还是非常关键的。
对于ChatGPT成功的关键,我个人认为可以总结为以下三点:
作为讨论班里技术系列的最后一期,这页PPT总结了ChatGPT背后技术的发展历程:
2017年之前早已有之的一些数学/AI/RL等基础技术,比如微积分、概率统计、最优化、策略梯度、TRPO算法(2015年提出)
2017年6月OpenAI联合DeepMind首次正式提出的RLHF,试图解决的问题是,在奖励函数不够明确的情况下,通过基于人类对事物比较的偏好而非绝对奖励值训练奖励函数,最后通过TRPO算法迭代策略
2017年7月的OpenAI团队提出的对TRPO算法的改进:PPO算法
2017年6月的Transformer/Self-Attention
2018年6月的GPT(GenerativePre-trainedTransformer),其关键构成是基于Transformer-Decoder的MaskedSelf-Attention
2019年2月的融合promptlearning的GPT2,promptlearning的意义在于小样本也能出大效果
2020年5月的GPT3,参数规模到了1750亿,而且这一年的9月份OpenAI已经开始研究GPT3与RLHF的结合了(即上边介绍的文本摘要的工作),且此时用的策略优化方法为PPO
2021年7月的Codex,通过对GPT3进行大量的代码训练迭代而出Codex,从而具备代码/推理能力
2021年9月Google提出的FLAN大模型:基于指令微调技术InstructionFine-Tuning(IFT)
2022年1月的Google研究者提出的思维链技术(ChainofThought,简称CoT)
2022年3月的OpenAI正式发布instructGPT:GPT3+指令学习+RLHF+PPO,其中,遵循人类指令的学习instructionlearning,和promptlearning的核心区别在于instructionlearning会提供更多的指令引导模型输出更符合预期的结果
2021年第4季度逐步发展而来的GPT3.5
2022年11月的ChatGPT:语言模型层面的核心架构是GPT3.5(基于Transformer-Decoder的MaskedSelf-Attention且融合了Codex的代码/推理能力、instructionlearning等技术)+RLHF+PPO