购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

大规模预训练语言模型:BERT与GPT争锋

小冰问道:经常听到语言模型这个词。到底什么是语言模型?

语言模型的诞生和进化

咖哥:刚才说了嘛,语言模型是一种用于计算和预测自然语言序列概率分布的模型,它通过分析大量的语言数据,基于自然语言上下文相关的特性建立数学模型,来推断和预测语言现象。简单地说, 它可以根据给定的上下文,预测接下来出现的单词 。语言模型被广泛应用于机器翻译、语音识别、文本生成、对话系统等多个NLP领域。常见的语言模型有N-Gram模型、循环神经网络(RNN)模型、长短期记忆网络(LSTM)模型,以及现在非常流行的基于Transformer架构的预训练语言模型(Pre-trained Language Model,PLM),如BERT、GPT系列等,还有你正在学习的ChatGPT。

小冰:你这么说我还是不懂,能举个例子吗?

咖哥:你看,我这里有一堆词。

咖哥 一本书 学 零基础 机器学习 写了

那么,假设现在给我们一个自然语言处理任务,就是看看这些词的各种组合中,哪一个组合能够形成一个可以被理解和接受的句子。当然可能有很多组合,下面我们列出其中的两个组合。

句子1:咖哥零基础学一本书写了机器学习

句子2:咖哥写了一本书零基础学机器学习

哪个更像一个完整的句子?相信你能够给出答案。

但是,AI怎么做判断呢?这就需要基于统计的语言模型的帮助了。根据贾里尼克的假设: 一个句子是否合理,取决于其出现在自然语言中的可能性的 大小

也就是说,假设我的语料库足够大,而句子2曾经在这个语料库中出现过,那么AI当然会说:OK,句子2更好,因为 它在自然语言中存在的可能性大,概率高 ,如下图所示。我经常看到别人这样说,所以这样说应该正确( 当然,概率高的事情可不一定百分之百正确,这是强大的大规模语言模型偶尔也会出错的主要原因,这是它的死穴 )。这就是基于统计的语言模型的核心思路。这里画重点,你应该看得出来基于统计的语言模型是由数据驱动的,这就是它相对于基于语法和语义规则的NLP技术的优越性。

句子2正确的概率比较高

小冰:嗯,这样解释,我就有点明白了。

咖哥:别着急,我还没说完。

假设S表示一个有意义的句子,由一连串按特定顺序排列的词W 1 , W 2 ,..., W n 组成。目标是求S在文本中出现的可能性,也就是 P (S)。如果你统计了人类有史以来所有的句子,就可以得到 P (S)

我们可以利用模型来估算 P (S):

P (S) = P (W 1 , W 2 , …, W n )

利用 条件概率公式 计算 P (W 1 , W 2 , …, W n ):

P (W 1 , W 2 , …, W n )= P (W 1 P (W 2 |W 1 P (W 3 |W 1 , W 2 )… P (W n |W 1 , W 2 , …, W n -1 )

根据 马尔可夫假设 (任意一个词出现的概率只同它前面的那一个词有关),就有:

P (W 1 , W 2 ,…, W n )≈ P (W 1 )・ P (W 2 |W 1 P (W 3 |W 2 )… P (W n |W n -1 )

那么,通过条件概率公式和马尔可夫假设,你就可以得到一个句子是不是人类语言的概率!

基于统计的语言模型具有以下优点。

(1)可扩展性:可以处理大规模的数据集,从而可以扩展到更广泛的语言任务和环境中。

(2)自适应性:可以从实际的语言数据中自适应地学习语言规律和模式,并进行实时更新和调整。

(3)对错误容忍度高:可以处理错误或缺失的数据,并从中提取有用的信息。

(4)易于实现和使用:基于统计,并使用简单的数学和统计方法来搭建语言模型。

统计语言模型的发展历程

基于统计的语言模型(统计语言模型)其实出现得很早,但是它的发展历程和AI技术很类似,虽然有了理论,但是由于网络结构和数据量的局限,早期的统计语言模型并没有实现突破性的应用。这些语言模型存在不少缺点,例如过拟合、无法处理文本间长距离依赖性、无法捕捉微妙的语义信息等。

好在经过几十年的探索和积累,NLP领域也开始出现更高级的思路和算法。能够解决上述这些问题的技术和语言模型在深度学习时代开始逐渐涌现。

统计语言模型发展的里程碑如下图所示。

统计语言模型发展的里程碑

图中上半部分是语言模型技术的进展;下半部分则是词向量(词的表示学习)技术的进展。其中,词向量表示的学习为语言模型提供了更高质量的输入信息(词的向量表示)。图中涉及的技术具体介绍如下。

1948年,著名的N-Gram模型诞生,思路是基于前 N -1个项目来预测序列中的第 N 个项目,所谓的“项目”,就是词或者短语。

1954年的Bag-of-Words模型是一种简单且常用的文本表示方法,它将文本表示为一个单词的集合,而不考虑单词在文本中的顺序。在这种表示方法中,每个单词都可以表示为一个单词频率向量,对应一个特定的维度,向量的值表示该单词在文本中出现的次数。

1986年出现的分布式表示(Distributed Representation)是一种将词或短语表示为数值向量的方法。在这种表示法中,单词的语义信息被分散到向量的各个维度上,因此可以捕捉到单词之间的相似性和关联性。分布式表示主要基于单词在文本中的上下文来构建,因此具有较多的语义和句法信息。这种表示方法有助于解决传统Bag-of-Words模型和独热编码(One-Hot Encoding)中的词汇鸿沟问题(词汇歧义、同义词等)。

2003年的神经概率语言模型则提出使用神经网络来学习单词之间的复杂关系,它是后续的神经网络语言模型,比如CNN、RNN、LSTM的思想起点。

2013年出现的另外一个重要的里程碑,即Word2Vec(W2V),是一种通过训练神经网络模型来学习词汇的分布式表示,简单而又高效。Word2Vec有两种主要的架构:连续词袋(Continuous Bag of Words,CBOW)模型和Skip-Gram模型。CBOW模型通过预测单词上下文(周围词)的目标单词来学习词向量,而Skip-Gram模型则通过预测目标单词周围的单词来学习词向量。Word2Vec生成的词向量可以捕捉到单词之间的相似性、语义关联及词汇的句法信息。其思想和训练结果被广泛用于许多NLP模型中。

2018年之后,基于Transformer的预训练语言模型一统江湖,在自然语言处理领域的许多任务中成为主导方法。它通过更大的语料库和更加复杂的神经网络体系结构来进行语法语义信息的学习,这就是语言模型的预训练过程。这些模型在具体NLP任务(如机器翻译、问答系统、文本分类、情感分析、文本生成等任务)上进行微调后,都表现出色,并且不断刷新各种基准测试的最高分数。如今,许多研究者和工程师都在使用这些预训练语言模型作为他们自然语言处理项目的基础。

因此,14页图中的每一个节点,都为后续技术的诞生打下了基础,因此也成为本书的讲解脉络。语言模型的进化,驱动了NLP技术的发展,而其中的 关键点是从基于规则的模型到基于统计的模型的跃迁,以及海量语料库训练出来的大模型的 使用

基于Transformer架构的预训练模型

以BERT(Bidirectional Encoder Representations from Transformers)为代表的基于Transformer架构的预训练语言模型一登场就引起了大量的关注。有了预训练模型,很多一度不能解决的问题都得到了解决。

小冰:我们厂里的人和你都一直在说的这个Transformer究竟是什么?预训练又指什么?

咖哥:Transformer是几乎所有预训练模型的核心底层架构,也是本课程的核心内容,现在暂不讲述它的技术细节。自然语言处理中的预训练,则通常指在大量无标注文本数据上训练语言模型。预训练所得的大规模语言模型也被叫作“基础模型”(Foundation Model 或Base Model)。在预训练过程中,模型学习了词汇、语法、句子结构及上下文信息等丰富的语言知识。这种在大量数据中学到的知识为后续的下游任务(如情感分析、文本分类、命名实体识别、问答系统等)提供了一个通用的、丰富的语言表示基础,为解决许多复杂的NLP问题提供了可能。

在预训练模型发展过程的早期,BERT毫无疑问是最具代表性,也是影响力最大的预训练语言模型。BERT通过同时学习文本的上下文信息,实现对句子结构的深入理解。BERT之后,各种大型预训练模型如雨后春笋般地涌现(见下图),自然语言处理领域进入了一个新的时代。这些模型推动了NLP技术的快速发展,为解决许多以前难以应对的问题提供了强大的工具。

各种预训练语言模型

对图中各种预训练语言模型的简单解释如表0.1所示(按照模型出现的先后顺序排列)。

表0.1 各种预训练语言模型的说明

当然,现今预训练模型的发展趋势是参数越来越多,模型也越来越大(见下页图),训练一次的费用可达几百万美元。巨大的资金和资源投入,只有世界顶级“大厂”才负担得起,普通的学术组织和高等院校很难在这个领域继续引领科技突破,这种现象开始被普通研究人员所诟病。

参数越来越多,模型越来越大

“预训练+微调大模型”的模式

不过,话虽如此,大型预训练模型的确是应用人员的好消息。因为,经过预训练的大模型所习得的语义信息和所蕴含的语言知识,很容易向下游任务迁移。NLP应用人员可以根据自己的需要,对模型的头部或者部分参数进行适应性的调整,这通常涉及在相对较小的有标注数据集上进行有监督学习,让模型适应特定任务的需求。这就是对预训练模型的微调(Fine-tuning,有时也译为精调)。微调过程相对于从头训练一个模型要快得多,且需要的数据量也要少得多,这使得NLP应用人员能够更高效地开发和部署各种NLP解决方案(如下图所示)。

“预训练+微调大模型”的模式

这种“预训练+微调大模型”的模式优势明显。首先,预训练模型能够将大量的通用语言知识迁移到各种下游任务上,作为应用人员,我们不需要自己寻找语料库,从头开始训练大模型,这减少了训练时间和数据需求。其次,微调过程可以快速地根据特定任务进行优化,降低了模型部署的难度。最后,“预训练+微调大模型”的模式具有很强的可扩展性,应用于各种NLP任务都很方便,大大提高了NLP技术在实际应用中的可用性和普及程度,确实给NLP应用人员带来了巨大的便利。

以提示/指令模式直接使用大模型

咖哥:不过,小冰,有一点你必须知道,近年来,随着GPT这种生成式大型预训练模型的突飞猛进,“预训练+微调大模型”的使用模式有被一种称为“提示”(Prompt)或者说“指令”(Instruct)的使用模式所取代的趋势。

Prompt模式和Instruct模式都基于这样一种思想:在训练阶段,这些模型通过学习大量的文本数据,掌握了语言的结构、语法和一定程度的语义知识。那么,在应用阶段,通过在输入中提供恰当的信息和指导,可以引导大型预训练模型(如GPT-3)生成相关性更强且更有用的输出。这种方法可以看作与模型进行一种“对话”,用户提供输入(Prompt或Instruct),然后模型根据输入生成相应的输出。

下面这张图来自卡内基-梅隆大学某研究团队发表的一篇有关Prompt模型的综述文章 ,它形象地描述了在几个预训练模型上使用Prompt模式的方法:通过提供合适的输入,用户可以引导模型生成符合特定目标的输出。

Prompt:想让模型做什么?有话直说

用我自己的话来说就是, 大模型本身就是知识库,里面蕴含了你所需要的信息,不一定非得微调才能解决问题,但是你得知道怎么才能把它里面的知识“调” 出来

咖哥发言

提示工程(Prompt Engineering)已经不再是一个新鲜名词了,它能“有效地与人工智能沟通以获得你想要的东西”。大多数人都不擅长提示工程,然而,它正在成为一项越来越重要的技能……

不好的输入很大程度上意味着不好的输出。因此,提示工程师这个职业应运而生。他们主要负责设计和优化模型的输入(即提示或指令),以引导模型生成满足特定目标的输出。当然,提示工程师需要深入理解特定任务的需求和目标,对任务背景和领域知识具有一定程度的了解,以确保输入符合任务的实际需求,设计出有效的提示或指令。而且,一个提示工程师还需要具有良好的沟通和协作能力。

小冰:那么咖哥,Prompt和Instruct这两种模式应该也有一些不同之处吧。

咖哥:是的。Prompt和Instruct这两种模式在输入的类型和任务的性质上有区别(如下图所示)。

Prompt和Instruct模式

Prompt模式:输入通常是一个词或短语,模型需要根据这个提示生成自然且连贯的文本。这种方式适用于生成式任务,如文本生成、文章摘要等。例如,当输入“从前”这个提示时,语言模型返回“有个山,山里有个庙……”

Instruct模式:输入是一条明确的指令,要求模型完成特定任务。这种方式适用于那些需要明确指示的任务,如回答问题、解释概念等。例如:当输入“请给我讲个故事”时,语言模型返回“从前有个山,山里有个庙,庙里有个咖哥给小冰、小雪上课……”

小冰:那么你能否总结一下Prompt/Instruct模型和“预训练+微调大模型”模型的异同?

咖哥:先说两者的相似之处。首先,两种模型都依赖于大型预训练模型(如GPT、BERT等),这些模型在大规模无标注文本数据上进行训练,以学习丰富的语言知识和通用表示。其次,两种模型都利用了预训练模型的 迁移学习能力 ,在具体的下游任务上使用预训练好的模型,从而减少了训练时间和数据需求。

不同之处咱们列表看看(见表0.2)。

表0.2 “预训练+微调大模型”模式与Prompt/Instruct模式的不同之处

总的来说,这两种模型都利用了预训练模型的强大能力,但它们在实现具体任务时采用了不同的策略。“预训练+微调大模型”模式通过在特定任务上对模型进行微调,使模型更加精确地适应任务需求;而Prompt/Instruct模式则直接利用预训练模型的生成能力,通过设计合适的提示来解决问题。选择哪种模型取决于具体的任务需求、可用数据,以及具体的任务对精确性和灵活性的需求。

小冰:咖哥,谢谢你把预训练模型的诞生、发展和使用方式细细捋了一遍,这样我就对大模型有了宏观的认识。下面,你能不能把GPT的发展脉络梳理出来呢?

咖哥:当然可以。 Fh7KH/V3Kexkjx4wm5TLNdiLo8EC4cBcVrvTrz0rm/mACTzU+XmpqkdTha5HIuqR

点击中间区域
呼出菜单
上一章
目录
下一章
×