为NLP选择正确的语言模型

译文 精选
人工智能 深度学习
本文解释了LLMs背后的主要概念和原则。其目的是为非技术性的利益相关者提供一个直观的理解,以及一种与开发者和人工智能专家高效互动的语言。

译者 | 崔皓

审校 | 孙淑娟

一、开篇

图片

大型语言模型(LLMs)是为产生文本而训练的深度学习模型。凭借令人印象深刻的能力,LLMs已经成为现代自然语言处理(NLP)的佼佼者。传统意义上,它们是由学术机构和大型科技公司(如OpenAI、微软和英伟达)预先训练而成的。它们中的大多数随后被提供给公众使用。这种即插即用的方法是向大规模的人工智能应用迈出的重要一步--企业现在可以专注于为特定的使用案例微调现有的LLM模型,而不是花费大量资源来训练具有一般语言知识的模型。

然而,为应用挑选合适的模型仍旧是很棘手的。用户和其他利益相关者必须在一个充满活力的语言模型和相关的创新场景中做出选择。这些改进涉及语言模型的不同组成部分,包括其训练数据、预训练目标、架构和微调方法--每一个方面都可以写一本书。在所有这些研究的基础上,围绕着语言模型的营销和人工智能的光环使事情变得更加模糊不清。

本文解释了LLMs背后的主要概念和原则。其目的是为非技术性的利益相关者提供一个直观的理解,以及一种与开发者和人工智能专家高效互动的语言。为了扩大覆盖面,文章包括了植根于大量NLP相关出版物的分析。虽然我们不会深入研究语言模型的数学细节,但这些可以很容易从参考文献中检索到。

文章的结构如下:首先,将语言模型置于不断发展的NLP环境中。第二部分解释了LLMs是如何建立和预训练的。最后,会描述微调过程并提供了一些关于模型选择的指导。

二、语言模型的世界

1.弥合人机差距

语言是人类思维的迷人技能--它是知识交流的通用协议,并表达主观想法,如意图、意见和情感。在人工智能的历史上,已经有多波研究用数学手段来接近("建模")人类语言。在深度学习时代之前,表征是基于简单的代数和概率概念,如单词的单热表征、序列概率模型和递归结构。随着过去几年深度学习的发展,语言表征的精度、复杂性和表现力都有所提高。

2018年,BERT作为第一个基于新Transformer架构的LLM被推出。从那时起,基于Transformer的LLM获得了强劲的发展势头。语言建模由于其通用性特别具有吸引力。虽然许多现实世界的NLP任务,如情感分析、信息检索和信息提取不需要产生语言,但假设一个产生语言的模型也有技能来解决各种更专业的语言挑战。

2.尺寸问题

学习发生在参数的基础上--在训练过程中优化的变量,以达到最佳预测质量。随着参数数量的增加,模型能够获得更细化的知识并改善其预测。自2017-2018年引入第一批LLM以来,我们看到了参数大小的指数级爆炸--虽然突破性的BERT是用340M的参数训练的,但2022年发布的模型Megatron-Turing NLG是用530B的参数训练的--增加了超过一千倍。

图片

图1:语言模型的参数大小随时间呈指数增长

因此,主流通过使用不断增大的参数数量来哗众取宠。然而,有批评的声音指出,模型性能的增长速度与模型规模的增长速度不一致。另一方面,模型预训练会留下相当大的碳足迹。缩减规模显得刻不容缓,它使语言建模的进展更具有可持续性。

3.语言模型的生命周期

LLM的远景是富有竞争性的,创新是短暂的。下图显示了2018-2022年时间段内最受欢迎的前15名LLM 模型,以及他们在一段时间内的占有率。

图片

图2:前15个最受欢迎语言模型的提及率和占有率

我们可以看到,大多数模型在相对较短的时间内就不那么流行了。为了保持领先,用户应该监测当前的创新,并评估升级是否值得。

大多数LLM都遵循一个类似的生命周期:首先,在 "上游",模型被预先训练。由于对数据量和计算量的要求很高,它大多是大型科技公司和大学的特权。最近,也有一些合作出现(例如BigScience研讨会),以共同推进LLM领域的发展。少数资金充足的初创公司,如Cohere和AI21实验室,也提供预先训练好的LLM。

在发布之后,模型被专注于应用的开发者和企业在 "下游 "采用和部署。在这个阶段,大多数模型需要一个额外的微调步骤以适应特定的领域和任务。其他的,如GPT-3,则更方便,因为它们可以在预测期间直接学习各种语言任务(零次或几次预测)。

最后,时间敲响了大门,一个更好的模型出现在拐角处--要么有更多的参数,更有效地使用硬件,要么对人类语言的建模有更根本的改进。带来实质性创新的模型可以催生出整个模型家族。例如,BERT在BERT-QA、DistilBERT和RoBERTa中继续存在,这些都是基于原始架构的。

在接下来的章节中,我们将探讨这个生命周期的前两个阶段--预训练和为部署而进行的微调。

三、预训练:LLM是如何诞生的

大多数团队和NLP从业者不会参与LLM的预训练,而是参与其微调和部署。然而,要成功地挑选和使用一个模型,重要的是要了解 "引擎盖 "下发生了什么。在这一节中,我们将看一下LLM的基本成分。

  • 训练数据
  • 输入表示
  • 训练前的目标
  • 模型结构(编码器-解码器)

每一项都不仅会影响到选择,也会影响到LLM的微调和部署。

1.训练数据

用于LLM训练的数据大多是涵盖不同风格的文本数据,如文学、用户生成的内容和新闻数据。在看到各种不同的文本类型后,产生的模型会意识到语言的细节。除文本数据外,代码也经常被用作输入,教导模型生成有效的程序和代码片段。

不出所料,训练数据的质量对模型的性能有直接影响--也对模型所需的大小有影响。如果用更加聪明的方式准备训练数据,就可以提高模型的质量,同时减少其数据的容量。一个例子是T0模型,它比GPT-3小16倍,但在一系列基准任务上胜过它。诀窍就在这里:它不只是使用任何文本作为训练数据,而是直接使用任务公式,从而使其学习信号更加集中。图3说明了一些训练实例。

图片

图3:T0在广泛明确的语言任务上进行训练

关于训练数据的最后说明:我们经常听说语言模型是以无监督的方式训练的。虽然这种方式极具吸引力,但在技术上是错误的。相反,格式良好的文本已经提供了必要的学习信号,使我们省去了繁琐的手工数据注释过程。要预测的标签对应于一个句子中的过去和/或未来的词。因此,注释是自动发生的,而且是大规模的,使得该领域的相对快速进展成为可能。

2.输入表示

一旦训练数据被集合起来,我们需要将其打包成模型可以应用的形式。神经网络是用代数结构(向量和矩阵)来输入的,而语言的最佳代数表示是一个持续的探索--从简单的词组到包含高度差异化的语境信息。每一个新的步骤都会增加自然语言的复杂度,暴露出当前表示法的局限性。

语言的基本单位是单词。在NLP的初期,这就产生了词包表示法,即把文本中的所有词都扔在一起,而不考虑它们的排序。请看这两个例子。

在词包世界里,这些句子会得到完全相同的表述,因为它们由相同的词组成。显然,这只包含了它们意义的一小部分。

序列表征容纳了关于词序的信息。在深度学习中,序列的处理最初是在顺序感知的循环神经网络(RNN)中实现的。然而,再往前走一步,语言的基本结构不是纯粹的顺序,而是分层的。换句话说,我们谈论的不是列表,而是树。相距较远的词实际上可以比相邻的词有更强的句法和语义联系。请看下面的例子。

这里,她指的是那个女孩。当一个RNN到达句子的结尾并最终看到她时,它对句子开头的记忆可能已经在消退,因此不允许它恢复这种关系。

为了解决这些长距离的依赖性,人们提出了更复杂的神经结构,以建立一个更有区别的语境记忆。其想法是将与未来预测有关的词保留在记忆中,而忘记其他的词。这是长短时记忆(LSTM)单元和门控循环单元(GRU)的贡献。然而,这些模型并不针对要预测的具体位置进行优化,而是针对通用的未来背景。此外,由于其复杂的结构,它们的训练速度甚至比传统的RNN更慢。

最后,人们摒弃了递归,提出了注意力机制,并将其纳入Transformer架构中。注意力允许模型在预测过程中在不同的词之间来回关注。每个词都根据其与要预测的特定位置的相关性进行加权。对于上述句子,一旦模型到达 "她 "的位置,girl的权重就会高于at,尽管它在线性顺序中要远得多。

到目前为止,注意力机制最接近人类大脑在信息处理过程中的生物运作。研究表明,注意力可以学习层次化的句法结构,包括一系列复杂的句法现象。它还允许并行计算这一更快、更有效的训练。

3.培训前的目标

有了适当的训练数据表示,我们的模型就可以开始学习。有三个用于预训练语言模型的通用目标:序列到序列的转换、自动回归和自动编码。所有这些都要求模型掌握广泛的语言学知识。

编码器-解码器架构以及Transformer模型所解决的原始任务是序列到序列的转换:一个序列被转换为不同表示框架中的序列。经典的序列到序列的任务是机器翻译,但其他任务,如总结,也经常以这种方式来表述。请注意,目标序列不一定是文本--它也可以是其他非结构化数据,如图像,以及结构化数据,如编程语言。序列到序列的LLMs的一个例子是BART系列。

第二个任务是自动回归,这也是最初的语言建模目标。在自动回归中,模型学习根据以前的标记来预测下一个输出(token)。学习信号受到企业单向性的限制--模型只能使用来自预测令牌的右边或左边的信息。这是一个主要的限制,因为单词既可以取决于过去,也可以取决于未来的位置。作为一个例子,考虑一下写的动词如何在两个方向上影响下面的句子。

图片

在这里,纸的位置被限制为可写的东西,而学生的位置被限制为人类,或者,无论如何,另一个能够写作的智能实体。

今天的头条新闻中的许多LLM都是自回归的,包括GPT系列、PaLM和BLOOM。

第三项任务--自动编码--解决了单向性的问题。自动编码与经典词嵌入的学习非常相似。首先,我们通过在输入中隐藏一定比例的标记(通常是10-20%)来破坏训练数据。然后,该模型学习根据周围的环境重建正确的输入,同时考虑到前面和后面的标记。自动编码器的典型例子是BERT系列,其中BERT代表来自变形器的双向编码器表示法。

4.模型结构(编码器-解码器)

语言模型的基本构成部分是编码器和解码器。编码器将原始输入转化为高维代数表示,也称为 "隐藏 "向量。等一下--隐藏的?嗯,实际上在这一点上没有什么大的秘密。当然,你可以看一下这个表示,但一个冗长的数字向量不会向人传达任何有意义的东西。这需要我们的模型的数学智能来处理它。解码器以一种可理解的形式再现隐藏的表示,如另一种语言、编程代码、图像等。

图片

图4:编码器-解码器结构的基本模式

编码器-解码器架构最初是为递归神经网络引入的。自从引入基于注意力的Transformer模型以来,传统的递归已经失去了它的流行,而编码器-解码器的想法却一直存在。大多数自然语言理解(NLU)任务依赖于编码器,而自然语言生成(NLG)任务需要解码器,序列到序列的转换需要这两个组件。

我们不会在这里讨论Transformer架构和关注机制的细节。对于那些想掌握这些细节的人来说,要准备好花大量的时间去琢磨它。

四、在现实世界中使用语言模型

1.微调

语言建模是一项强大的上游任务--如果你有一个成功的语言模型,恭喜你--这是一个智能模型。相反,NLP大多被用于更有针对性的下游任务,如情感分析、问题回答和信息提取。这就是应用迁移学习和重用现有语言知识以应对更具体挑战的时候。在微调过程中,模型的一部分被 "冻结",其余部分则用特定领域或任务的数据进一步训练。

明确的微调增加了LLM部署道路上的复杂性。它还会导致模型爆炸,即每个业务任务都需要自己的微调模型,从而升级到无法维护的各种模型。因此,人们已经努力使用少量或零次学习来摆脱微调步骤(例如在GPT-3中)。这种学习是在预测过程中发生的:向模型提供 "提示"--任务描述和可能的几个训练实例--以指导其对未来实例的预测。

虽然实施起来要快得多,但零次或少量学习的便利因素被其较低的预测质量所抵消。此外,许多这样的模型需要通过云端API访问。在开发初期,这可能是一个受欢迎的机会--然而,在更高级的阶段,它可能变成另一个不需要的外部依赖。

2.为下游任务挑选合适的模型

看着人工智能市场上不断供应的新语言模型,为特定的下游任务选择合适的模型并与最先进的技术保持同步是很棘手的。

研究论文通常以特定的下游任务和数据集作为每个模型的基准。标准化的任务套件,如SuperGLUE和BIG-bench,可以针对众多的NLP任务进行统一的基准测试,并提供一个比较的基础。不过,我们应该记住,这些测试是在一个高度受控的环境中准备的。到今天为止,语言模型的泛化能力相当有限--因此,转移到现实生活中的数据集可能会大大影响模型的性能。评估和选择一个合适的模型应该包括在尽可能接近生产数据的数据上进行实验。

作为一条经验法则,预训练目标提供了一个重要的提示:自回归模型在文本生成任务中表现良好,如对话式人工智能、问题回答和文本总结,而自动编码器擅长 "理解 "和结构化语言,例如用于情感分析和各种信息提取任务。理论上,只要收到适当的提示,用于零点学习的模型可以执行各种任务--然而,它们的准确率通常低于经过微调的模型。

为了使事情更加具体,下图显示了流行的NLP任务是如何与NLP文献中突出的语言模型相关联的。这些关联是根据多种相似性和聚合度量计算的,包括嵌入相似性和距离加权共同发生。得分较高的模型-任务对,如BART/文本总结和LaMDA/对话式人工智能,表明基于历史数据的良好匹配。

图片

图5:语言模型和下游任务之间的关联强度

五、主要收获

在这篇文章中,我们已经涵盖了LLM的基本概念和正在发生创新的主要层面。下表提供了最受欢迎的LLM的主要特征摘要。

图片

表1:最受欢迎的大型语言模型的特征摘要

让我们总结一下选择和LLM的一般准则。

1.在评估潜在模式时,要清楚在人工智能旅程中的位置。

  • 在开始的时候,用通过云API部署的LLM做实验可能是一个好主意。
  • 一旦找到了产品与市场的契合点,考虑在你这边托管和维护你的模型,以便有更多的控制权,并进一步提高模型的性能,以满足你的应用。

2.为了与你的下游任务保持一致,人工智能团队应该根据以下标准创建一个模型的短名单。

以下游任务为重点,对学术文献中的成果进行基准测试

预培训目标和下游任务之间的一致性:考虑为NLGU进行自动编码,为NLG进行自动回归。

以前报告的这种模型-任务组合的经验。

3.对入围的模型进行测试,以了解真实世界的任务和数据集,从而对性能有一个初步的感觉。

4.在大多数情况下,有可能通过专门的微调达到更好的质量。然而,如果你没有内部技术能力或预算进行微调,或者你需要覆盖大量的任务,可以考虑少数/零次学习。

5.LLM的创新和趋势是短暂的。在使用语言模型时,要注意它们的生命周期和LLM领域的整体活动,并注意加强你的游戏机会。

最后,要意识到LLMs的局限性。虽然它们有惊人的、类似于人类的产生语言的能力,但它们的整体认知能力与我们人类相比是有差距的。这些模型的世界知识和推理能力严格限制在它们在语言表面发现的信息。它们也不能把事实放在时间上,可能会不眨眼地给你提供过时的信息。如果你正在构建一个依赖于生成最新甚至是原始知识的应用程序,请考虑将你的LLM与额外的多模态、结构化或动态知识源相结合。

原文链接:https://www.topbots.com/choosing-the-right-language-model/

译者介绍

崔皓,51CTO社区编辑,资深架构师,拥有18年的软件开发和架构经验,10年分布式架构经验。

责任编辑:武晓燕 来源: 51CTO技术栈
相关推荐

2014-08-18 10:58:20

编程语言编程书籍

2016-01-06 10:06:17

编程语言工作选择

2021-08-31 08:00:00

开发软件框架

2023-09-11 09:58:46

2011-11-17 08:39:56

数据中心网络

2023-05-10 15:49:10

NLP语言模型

2019-06-04 08:19:40

物联网项目模型物联网

2024-03-13 13:19:11

物联网通信模式

2023-04-04 08:00:00

LazyPredic机器学习ML模型

2019-05-07 11:18:51

机器学习人工智能计算机

2011-12-22 10:41:45

布线数据中心布线

2011-02-16 09:46:51

诺基亚微软

2012-09-17 09:58:02

云集成平台云集成集成平台

2022-11-24 09:55:12

Kubernetes监控

2018-04-20 10:54:52

数据集成数据科学工具

2013-01-07 11:38:54

VMware认证

2023-08-23 19:11:01

Kubernetes系统云原生

2024-03-04 00:00:00

GolangGo开发

2014-03-27 09:46:26

福禄克
点赞
收藏

51CTO技术栈公众号