现代自然语言处理(NLP):详细概述第4部分:最新发展

现代自然语言处理(NLP):第4部分概述最新发展

在当今世界中,任何有网络连接的人都听说过一个叫做ChatGPT的工具,它在各个方面都引发了混乱,一些人甚至尝试将其用于日常生活中的不同任务。许多人将其视为能够回答任何问题或疑问的革命。但是,你是否想过我们是如何到达这里的?人工智能如何能够回答你所提出的大部分问题和疑问?

让我们来试着揭示一些事实。在我们开始之前,我们将讨论本文中涉及的概念需要之前的作品(如Transformers和GPT 2)的概念。如果你对这些作品不了解,我已经谈论过这些主题了,请简要了解一下。

那么,让我们深入研究一下。

在本文中,我们将谈论GPT 3、3.5和chatGPT。在我们开始讨论GPT 3之前,让我向你介绍另一个OpenAI的作品,这对于GPT 3的发展至关重要。

使用稀疏Transformer生成长序列

2019年,Transformers开始变得非常流行,并开始被用于许多工作。随着输入上下文长度的增加,一个问题变得突出起来。由于Transformers在整个输入上都使用注意力机制,随着输入长度的增加,所需的时间和内存要求呈二次增长。时间复杂度变为O(N²),因为对于每个令牌或单词,模型都会关注所有其他单词,所以对于每个单词,对于所有单词,变为O(N)×N=O(N²)。这使得学习很快变得困难。OpenAI在2019年发布了这篇论文,以应对这个爆炸性的时间问题。

他们的想法是引入一种模型改变,将时间复杂度降低为N^(1+1/p),其中p是一个大于1的分解因子,通常p=2,同时不影响性能,因此最终变为O(N*sqrt(N))。

观察结果:研究人员发现,尽管注意力机制在特定令牌的情况下关注所有像素或单词,但并不总是需要如下图所示。

这些观察结果是由作者得出的

研究人员发现,由于已经学习了基于行和列的稀疏注意力和数据相关模式,因此没有固定模式的核心也能建立起来。因此,作者得出结论,可以引入稀疏加权核来构建注意力矩阵,而不会对模型的性能产生太大影响。

思路:作者将完全自注意力分为两个步骤,使用两个不同的核心,基于对注意力分布的观察。作者发现,对于图像的注意力通常会给予某种模式,但对于音频和文本等非图像数据,没有这种固定模式。下图显示了所决定的核心。

第一张图片(a)显示了实际的Transformer自注意力,为了生成一个输出令牌,模型会关注输出位置之前发生的所有步骤或令牌。作者将实际自注意力分解为两个不同的基于注意力的核心,如(b)和(c)所示。

(B) 跨步核心:在这种情况下,模型会关注输出位置的行和列。这对于基于图像的情况很有用。

(C) 固定核心:在这种情况下,模型会关注固定的列和最新列元素后的元素。这对于文本和音频很有用。

这些分解的注意力层提供了几乎相等的结果,但成功减少了操作时间和内存消耗。

稀疏Transformer的架构:

残差架构

作者们引入了残差架构来结合分解注意力,以对抗Transformer模型的原始架构。他们提出了3种方法:

(1) 每个残差块都将有1种分解注意力核,我们将它们交错排列

(2) 将有1个注意力头,它将共同关注核给定的位置,并充当合并头。

(3) 将有多个注意力头,与原始架构一样,多个注意力机制将并行执行,并将结果连接起来得到最终结果。

这种架构思想也被用于GPT 3。

论文链接:https://arxiv.org/pdf/1904.10509.pdf

重要结论:通过使用分解注意力和交错残差结构,我们可以大大减少计算和时间,同时保持效率。

语言模型是少样本学习器

这个提到的工作是由OpenAI于2020年发表的。所提出的模型是自然语言处理领域中最大的模型之一。这项工作为自然语言处理领域未来的创新打开了很多门。作者们发现了模型现有方法的3个问题。

(1) 对于训练模型需要大量任务特定的数据,但是有时很难找到这样大量的数据。

(2) 模型是在大量数据的广义模型上预训练的,但在特定任务微调后,它们是面向非常狭窄数据分布的,这使得模型偏斜,如果数据较少,存在过拟合和性能不佳的风险。

(3) 作为人类,我们不需要太多数据来学习,通常我们只需要一些示范或者有时候需要提示来学习,这对于机器来说是非常不同的。如果我们希望模型的行为与人类类似,就必须解决数据问题。

为了解决这些问题,作者们意识到需要训练一个非常广义的模型。唯一的方法就是一个叫做元学习的概念。

元学习

元学习是机器学习领域的一个新兴领域,它教给模型如何学习,因此也被称为学会学习。众所周知,人类从日常经验中对大多数事物都有先验知识,这有助于我们对学习过程有一个大致的了解,但是当模型开始学习时,它对数据或目标一无所知,这就造成了差异。这通常被称为条件化,这是任何生物从过去的经验和刺激中学习的一种属性。据说有3种主要类型的先验知识:

  1. 相似性的先验知识
  2. 数据的先验知识
  3. 学习的先验知识

元学习的目标是以一种使模型能够完成人类可以做到的方式来教授模型。它通常也用于完善算法。元学习有一些可能性:

(A) 少样本学习:也称为N-Way-K-Shot学习,其中有N个类别和每个类别K个样本。模型在这些样本上进行训练,这被称为支持集,但学习是在一个称为查询集的独立集上进行验证的。需要注意的是,在这种情况下,反向传播发生在一个非常短的支持集上。

(B) 一次样本学习:支持集中每个N类别只有一个样本,模型必须在查询集上执行。有反向传播。

(C ) 零样本学习:没有样本存在,模型直接在查询集上执行。

所以,基本上,预训练的数据模型可以在少量或无数据的情况下直接执行特定任务。预训练阶段称为元学习阶段,具体学习阶段称为元学习宇宙中的适应阶段。为了训练一个元学习器,通常会采用大量不同的数据集和模型,以建立一个广义的设置,而不是一个任务特定的设置。

有一个完整的元学习和算法流,我不打算详细介绍,否则会太长。我只是简单介绍了理解GPT3所必需的部分。

为了在语言模型中实现元学习,作者们使用了一种称为上下文学习的方法,我们马上就会看到。这个想法来自于GPT-2的工作,它证明了如果在大量不同数据的预训练中,模型可以学习捕捉多个依赖关系和模式识别的技能,从而使其能够在很少的示范下非常快速地适应新的特定任务。

论文链接:https://arxiv.org/pdf/2004.05439.pdf

https://aclanthology.org/2022.acl-long.53.pdf

那么,什么是上下文学习?

上下文学习

上下文学习意味着从类比中学习。这与人类学习的方式非常相似。通常,人类学习有以下3种情况:

  1. 我们被给予一个提示,比如“写一个关于树的段落。”
  2. 我们被给予一个带有示范的提示:“找到和:1+2=34+5= <prediction>”
  3. 我们被给予一个带有多个示范的提示:“找到和:1+2=34+5= 96+7= <prediction>”

上下文学习的工作方式与此类似。我们将提示或带有示范的提示输入到模型的上下文向量中,模型会输出一个预测结果。在这种情况下,没有反向传播或学习。整个输入,包括提示和示范,作为一个字符串输入到模型的输入向量中。可以说这是一种基于条件的预测。

现在,作者们定义了4种用于评估模型性能的情况:

  1. 微调,与之前的情况一样,在预训练之后,模型会在任务特定数据上进行训练。
  2. 少样本学习:在这种情况下,在预训练模型上,输入了一个带有多个示范的提示。示范的数量范围从10到100,具体取决于可以适应输入向量上下文长度的示范数量。模型基于示范进行预测。没有反向传播。
  3. 一次样本学习:在这种情况下,只有一个带有示范的提示被输入到模型中。没有反向传播。
  4. 零样本学习:在这种情况下,只提供一个提示,没有示范。

对GPT模型的训练的灵感来自一个非常常见的算法,称为模型无关元学习。

在MAML中,通常有任务特定模型和通用元学习器,我们试图减小任务特定预测与通用元学习器预测之间的损失。任务特定模型的学习被称为内循环,从多个任务特定模型中学习的元学习器权重更新被称为外循环。

在这种情况下,作者将内循环称为上下文学习。这样做是因为在预训练中,模型使用了许多不同的数据集进行训练,来自不同领域(称为子任务)。对于这些领域,学习发生在内循环中,而模型在外循环中学习泛化。

架构:作者们使用了与GPT-2中相同的模型,但修改了使用交替的密集和稀疏注意力,如稀疏变压器所讨论的那样。提出了8个模型,参数范围从1.25亿到1750亿,以评估大小对性能的影响。拥有1750亿参数的模型被称为GPT3。

训练数据:

上面的图片描述了用于训练模型的数据集。作者们对数据集进行了过滤,以删除质量较低的数据、重复数据和冗余数据。

为什么上下文学习有效? 我相信每个人心中都有这个问题。一个模型如何仅凭示范就能产生输出?

已经有太多的研究,但是这个原因仍然被许多研究人员所探究。我将谈谈斯坦福大学和Meta AI的两个最具影响力的研究成果。

论文链接:

  1. 重新思考示范的作用:上下文学习的原因是什么?:https://aclanthology.org/2022.emnlp-main.759.pdf
  2. 将上下文学习解释为隐式贝叶斯推理:https://arxiv.org/pdf/2111.02080.pdf

第二篇论文提出了它的工作原理,第一篇论文对模型性能依赖的因素进行了全面的研究。它们都使用了大量参数的多个模型。证明随着模型的规模增加,模型的学习能力和性能也会增加。

“将上下文学习解释为隐式贝叶斯推理”提出了一个假设,即当大型语言模型在像Common Crawler这样的不同数据源上预训练时,模型会遇到许多主题和提及,这些主题和提及被作为长数据序列提供以预测下一个单词,模型学会使用注意力并理解序列的内部推理,从而导致模型在其参数嵌入空间中记住这些主题。在任务特定推理期间,模型获得数据,通过注意力进行研究,并在其嵌入空间中“定位”概念,以找到答案。示范和提示有助于注意力机制更好地发挥作用,提供更好的结果。

在《重新思考示范的作用:上下文学习的原因是什么?》一文中,作者们研究了6个模型,包括GPT3,在12个不同的数据集上进行了观察。他们观察到以下情况:

  1. 更改示范中的标签,如提供随机标签,对模型的性能影响很小。
  2. 研究人员尝试了不同数量(k)的输入-标签示范。他们发现,有示范的模型性能比没有示范的模型性能提高很多,即使k很小(k=4),但性能提升随着k≥8变得非常缓慢。
  3. 输入格式的模板改进了性能。

从实验中总结出了4个结论,告诉我们上下文学习如何以及为什么有效:

  1. 输入-标签映射
  2. 输入分布
  3. 标签集分布
  4. 输入格式

使用基于上下文的元学习训练的GPT3成功在少样本学习下表现得更接近于人类行为,并在翻译、问答和补全等任务上达到了SOTA的表现,但在常识推理方面未能提供一致的增益。

论文链接:https://arxiv.org/pdf/2005.14165.pdf

接下来,我们将讨论GPT 3的升级,这最终催生了ChatGPT。

使用人类反馈训练语言模型遵循指示:InstructGPT

在发布GPT3之后,OpenAI的研究人员意识到,尽管大型语言模型表现出色,但并不意味着它们按照用户意图运作,相反,GPT3生成的结果可能是不真实、有害且与帮助人们的目标不足相符。为了解决这个问题,作者们将参数减少了100倍,将GPT3的1750亿个参数缩减为13亿个参数,命名为GPT3.5或InstructGPT。作者们利用人类反馈对模型进行了微调,以更好地与人类意图保持一致。作者们希望该模型能提供真实、有帮助且无害的答案。

为了使模型更加友好于人类交互,作者们采用了一种先前工作中的方法,使用强化学习和人类反馈。使用了Proximal policy optimization(PPO)强化学习技术。

为了训练InstructGPT模型,作者们采取了4个步骤,第一步是传统的语言建模进行预训练,然后是3个步骤。这些步骤之后,作者们从预训练的GPT3模型开始。

训练GPT3.5的步骤
  1. 第一步包括一个简短的有监督微调阶段。作者发布了一个预先训练的GPT3.5门户网站,用户在该网站上发布了他们的提示和演示。此外,OpenAI在筛选后雇佣了40名承包商,并让他们撰写了一些提示和演示。他们确保任务具有足够的多样性,包括生成、问答、对话、摘要、提取和其他自然语言任务,以避免微调步骤中的偏倚。他们还消除了任务提示的不明确性。预训练的GPT3模型在此数据上进行了微调,使用了16个时期的0.2的dropout。
  2. 第二步是为强化学习训练建立奖励模型,该模型将与最终的PPO训练阶段中的主模型进行交互。对于生成模型而言,它可能通过提供相同的输入来生成多个输出。在此步骤中,从第一步微调的模型接受输入,生成多个输出,并由承包商或标记者标记首选的输出。因此,创建了一个数据集。从微调的GPT3模型中删除了最后一层,并构建了一个接受提示和答案并产生标量奖励值的模型。标记者创建的数据集用于训练奖励模型。为了训练奖励模型,将GPT3模型的大小从175B参数减少到6B参数,因为发现训练如此庞大的模型非常耗时,而且有时不稳定。标量奖励的公式是根据模型产生的答案与标记者优选答案的概率之差来计算的。因此,引入了人类反馈机制。
  3. 在最后一步中,作者将第一步微调的模型的维度降低到1.3B参数,然后再次使用PPO强化学习算法在赌博环境中进行微调。这基本上意味着模型会接收用户的任意提示,并由模型生成一个答案。奖励模型接受答案并提供标量奖励。训练模型试图找到一种最优策略来最大化对抗奖励模型的奖励。

研究结果:根据人类需求对齐行为和性能的目标对InstructGPT进行评估时,发现了以下情况:

  1. 标记者明显更喜欢InstructGPT的输出而不是GPT-3的输出。
  2. InstructGPT模型在真实性方面显示了改进。
  3. InstructGPT在有毒性方面表现出了小幅改进,但没有偏见。
  4. InstructGPT在预测公共数据集时没有反映出训练它的语言模型的特征。
  5. 该模型在在微调领域之外的数据上进行测试时,对原则的泛化表现良好。
  6. InstructGPT仍然会犯一些简单的错误。例如,InstructGPT可能仍然无法遵循指令,捏造事实,对简单问题给出冗长的含糊答案,或者无法检测带有错误前提的指令。

论文链接:https://arxiv.org/pdf/2203.02155.pdf

ChatGPT

在InstructGPT模型取得即时成功之后,OpenAI决定在更通用的对话文本上对InstructGPT模型进行微调,以在模型中引入聊天机器人的特性。这就诞生了chatGPT,它更接近人类,具有更好的对话技能。因此,chatGPT是针对特定任务构建的,是原始GPT3模型的一个较小版本。

结论

ChatGPT作为一种可以改变事物的工具,在技术世界产生了重大影响。在成功之后,OpenAI在微软的支持下还发布了GPT-4,将GPT的能力扩展到了图像领域。由于安全原因,该模型的规格尚未公布。另一方面,谷歌也推出了基于LAMDA(或用于对话应用的语言模型)模型的BARD聊天机器人项目。LAMDA的目标与chatGPT非常相似,都是构建一个可以与人类需求对齐并能产生真实、非有害响应的聊天机器人。

论文链接:

GPT4: https://arxiv.org/pdf/2303.08774.pdf

LAMDA: https://arxiv.org/pdf/2201.08239.pdf

除此之外,还有一些改进如XLNet和Ernie。科技巨头们希望在这个领域不断取得进步,期望拥有一个技术更强大的明天。

希望这对您有所帮助。祝愉快阅读!