大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流
个人主页-Sonhhxg_柒的博客_CSDN博客
欢迎各位→点赞 + 收藏⭐️ + 留言
系列专栏 - 机器学习【ML】 自然语言处理【NLP】 深度学习【DL】
foreword
✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。
如果你对这个系列感兴趣的话,可以关注订阅哟
文章目录
什么是大型语言模型 (LLM)?
LLMs 的定义
LLMs 的主要特征
请提供更多上下文
LLMs 如何工作
预训练
迁移学习
微调
注意力
Embeddings
Tokenization
流行的现代LLMs
BERT
GPT-3 和 ChatGPT
T5
特定领域的LLMs
LLMs的应用
经典 NLP 任务
文本分类
翻译任务
人类语言<>人类语言
SQL生成
自由文本生成
信息检索/神经语义搜索
聊天机器人
概括
自从 2017 年 Google Brain 的一个团队推出名为 Transformer 的高级人工智能 (AI) 深度学习模型以来,它已成为学术界和工业界处理各种自然语言处理 (NLP) 任务的标准。您今天可能已经在不知不觉中与 Transformer 模型进行了交互,因为 Google 使用 BERT 通过更好地理解用户的搜索查询来增强其搜索引擎。来自 OpenAI 的 GPT 系列模型也因其生成类人文本和图像的能力而受到关注。
图 1.1 现代 NLP 的简史强调了使用深度学习来解决语言建模、大规模语义标记嵌入 (Word2vec) 的进步、带有注意力的序列到序列模型(我们将在本章后面更深入地看到),以及最后2017年的Transformer。
这些 Transformer 现在为 GitHub 的 Copilot(由 OpenAI 与 Microsoft 合作开发)等应用程序提供支持,它可以将评论和代码片段转换为功能齐全的源代码,甚至可以调用其他 LLM(如代码 1.1 中)来执行 NLP任务。
代码 1.1 使用 Copilot LLM 从 Facebook 的 BART LLM 获取输出
from transformers import pipeline
def classify_text(email):
"""
使用Facebook的BART模型将电子邮件分类为“垃圾邮件”或“非垃圾邮件”
args:
email(str):要分类的电子邮件
Returns:
str:电子邮件的分类
"""
# COPILOT启动。在这个评论被输入到BART之前的所有内容
classifier = pipeline(
'zero-shot-classification', model='facebook/bart-large-mnli')
labels = ['spam', 'not spam']
hypothesis_template = 'This email is {}.'
results = classifier(
email, labels, hypothesis_template=hypothesis_template)
return results['labels'][0]
# COPILOT END
在此代码中,我使用 Copilot 仅接收一个 Python 函数定义和我编写的一些注释,并编写了所有代码以使该函数执行我编写的操作。这里没有挑选,只是一个我可以这样调用的完全工作的 python 函数:
classify_text('hi I am spam') # spam
看起来我们周围都是法学硕士,但他们到底在做什么?让我们找出答案!
大型语言模型(LLM) 是通常(但不一定)源自 Transformer 架构的 AI 模型,旨在理解和生成人类语言、代码等。这些模型在大量文本数据上进行训练,使它们能够捕捉人类语言的复杂性和细微差别。LLM 可以执行范围广泛的语言任务,从简单的文本分类到文本生成,具有很高的准确性、流畅性和风格。
在医疗保健行业,LLM 被用于电子病历 (EMR) 处理、临床试验匹配和药物发现。在金融领域,LLM 被用于欺诈检测、金融新闻的情绪分析,甚至交易策略。法学硕士还通过聊天机器人和虚拟助手用于客户服务自动化。凭借其多功能性和高性能的特性,基于 Transformer 的 LLM 正在成为各种行业和应用程序中越来越有价值的资产。
NOTE
我将在本文中使用术语“理解相当多”。我通常指的是“自然语言理解”(NLU),它是 NLP 的一个研究分支,专注于开发能够准确解释人类语言的算法和模型。正如我们将看到的,NLU 模型在分类、情感分析和命名实体识别等任务中表现出色。然而,值得注意的是,虽然这些模型可以执行复杂的语言任务,但它们并不像人类那样拥有真正的理解力。
LLM 和 Transformers 的成功归功于多种思想的结合。这些想法中的大多数已经存在多年,但也在大约同一时间进行了积极研究。为 Transformer 提供脚手架的注意力、迁移学习和扩展神经网络等机制几乎在同一时间取得了突破。图1.1 概述了过去几十年 NLP 的一些最大进步,所有这些都导致了 Transformer 的发明。
Transformer 架构本身就令人印象深刻。它可以以以前最先进的 NLP 模型无法做到的方式进行高度并行化和扩展,从而使其能够扩展到比以前的 NLP 模型大得多的数据集和训练时间。Transformer 使用一种称为自注意力的特殊注意力计算,允许序列中的每个单词“注意”(寻找上下文)序列中的所有其他单词,使其能够捕获长期依赖关系和上下文关系字。当然,没有任何架构是完美的。Transformer 仍然受限于一个输入上下文窗口,该窗口表示它在任何给定时刻可以处理的最大文本长度。
自 2017 年 Transformer 出现以来,围绕使用和部署 Transformer 的生态系统呈爆炸式增长。恰当命名的“变形金刚”库及其支持包使从业者可以轻松使用、训练和共享模型,极大地加速了它的采用,并被成千上万的组织使用,而且还在不断增加。像 Hugging Face 这样流行的 LLM 存储库已经出现,为大众提供了访问强大的开源模型的途径。简而言之,使用和生产 Transformer 从未如此简单。
我的目标是指导您如何针对实际应用使用、训练和优化各种 LLM,同时让您足够深入地了解模型的内部工作原理,以了解如何就模型选择、数据格式、精细-调整参数等等。
我的目标是让软件开发人员、数据科学家、分析师和业余爱好者都能轻松使用 Transformer。要做到这一点,我们应该从公平的竞争环境开始,更多地了解 LLM。
为了稍微备份一下,我们应该首先谈谈 LLM 和 Transformer 正在用来解决的特定 NLP 任务,并为它们解决大量任务的能力提供了基础层。语言建模是 NLP 的一个子领域,涉及创建统计/深度学习模型,以预测特定词汇表(有限且已知的标记集)中一系列标记的可能性。通常有两种语言建模任务:自动编码任务和自回归任务(图1.2 )
NOTE
术语标记是指通过将一个句子或一段文本分解成更小的单元而创建的最小语义单元,是 LLM 的基本输入。标记可以是词,也可以是“子词”,我们将在本书中更深入地了解这一点。有些读者可能熟悉术语“n-gram”,它指的是 n 个连续标记的序列。
自回归语言模型被训练为预测句子中的下一个标记,仅基于短语中的先前标记。这些模型对应于 transformer 模型的解码器部分,并对整个句子应用掩码,以便注意力头只能看到之前出现的标记。自回归模型非常适合文本生成,GPT 就是此类模型的一个很好的例子。
自动编码语言模型经过训练,可以从损坏的输入版本中重建原始句子。这些模型对应于变压器模型的编码器部分,并且可以在没有任何掩码的情况下访问完整的输入。自动编码模型创建整个句子的双向表示。它们可以针对文本生成等各种任务进行微调,但它们的主要应用是句子分类或标记分类。这类模型的典型例子是 BERT。
图 1.2 自动编码和自回归语言建模任务都涉及填充缺失的标记,但只有自动编码任务允许在缺失标记的两侧看到上下文。
总而言之,大型语言模型 (LLM) 是自回归、自动编码或两者结合的语言模型。现代 LLM 通常基于我们将使用的 Transformer 架构,但它们也可以基于另一种架构。LLM 的定义特征是它们的大尺寸和大型训练数据集,这使它们能够以高精度执行复杂的语言任务,例如文本生成和分类,并且几乎不需要微调。
表1.1 显示了几种流行的大型语言模型 (LLM) 的磁盘大小、内存使用情况、参数数量和预训练数据的大致大小。请注意,这些大小是近似值,可能会因具体实施和使用的硬件而异。
表 1.1 流行的大型语言模型 (LLM) 的比较
但规模就是一切。让我们看看 LLM 的一些关键特征,然后深入探讨 LLM 如何学习读写。
2017 年设计的原始 Transformer 架构是一个序列到序列模型,这意味着它有两个主要组件:
如图 1.3 所示,Transformer 有许多我们不会涉及的其他子组件,它们可以促进更快的训练、泛化能力和更好的性能。今天的 LLM 大部分是原始 Transformer 的变体。像 BERT 和 GPT 这样的模型将 Transformer 分解为仅编码器和解码器(分别),以便构建在理解和生成(也分别)方面表现出色的模型。
图 1.3 原始的 Transformer 有两个主要组件:擅长理解文本的编码器和擅长生成文本的解码器。将它们放在一起使整个模型成为“sequence to sequence”模型。
一般来说,LLM 可以分为三个主要类别:
自回归模型,例如 GPT,它根据前面的标记预测句子中的下一个标记。它们可以有效地根据给定的上下文生成连贯的自由文本
自编码模型,例如 BERT,它通过屏蔽一些输入标记并尝试从剩余的标记中预测它们来构建句子的双向表示。它们擅长快速、大规模地捕获标记之间的上下文关系,这使它们成为文本分类任务的理想选择。
自回归 和 自编码 的组合,比如 T5,可以使用 encoder 和 decoder 来更加通用和灵活地生成文本。已经表明,与纯基于解码器的自回归模型相比,这些组合模型可以在不同的上下文中生成更加多样化和创造性的文本,因为它们能够使用编码器捕获额外的上下文。
图 1.4 基于 LLM 的关键特征的分解,基于它们是如何从原始 Transformer 架构派生的。
图1.4 显示了基于这三个类别的 LLM 关键特征的细分。
无论 LLM 是如何构建的,以及它使用了 Transformer 的哪些部分,它们都关心上下文(图1.5)。目标是理解每个标记与输入文本中其他标记的关系。从 2013 年左右 Word2vec 的流行开始,NLP 从业者和研究人员一直对结合语义(基本上是单词定义)和上下文(与周围的标记)以创建最有意义的标记嵌入的最佳方法感到好奇。Transformer 依靠注意力计算使这种组合成为现实。
图 1.5 LLM 非常擅长理解上下文。根据上下文,“Python”这个词可以有不同的含义。我们可以谈论一条蛇,或者一种非常酷的编码语言。
选择你想要什么样的 Transformer 推导是不够的。仅仅选择编码器并不意味着您的 Transformer 非常擅长理解文本。让我们来看看这些LLMs实际上是如何学习读写的。
LLM 的预训练和微调方式决定了性能良好的模型与最先进且高度准确的模型之间的所有区别。我们需要快速了解 LLM 是如何进行预训练的,以了解他们擅长什么,不擅长什么,以及我们是否需要用我们自己的自定义数据更新他们。
市场上的每个 LLM 都经过大量文本数据和特定语言建模相关任务的预训练。在预训练期间,LLM 尝试学习和理解一般语言和单词之间的关系。每个法学硕士都接受过不同语料库和不同任务的训练。
例如,BERT 最初是在两个公开可用的文本语料库上进行预训练的(图1.6):
英文维基百科- 英文版维基百科的文章合集,这是一个免费的在线百科全书。它包含一系列主题和写作风格,使其成为具有多样性和代表性的英语文本样本
• 25 亿字。
BookCorpus - 大量小说和非小说书籍。它是通过从网络上抓取书籍文本创建的,包括一系列类型,从浪漫和神秘到科幻和历史。语料库中的书籍被选为至少 2000 字,并由经过身份验证的作者以英文撰写
• 800M 字。
以及关于两个特定语言建模的特定任务(图1.7):
Masked Language Modeling (MLM) 任务(又称自动编码任务)——这有助于 BERT 识别单个句子中的标记交互。
下一句预测任务——这有助于 BERT 理解标记如何在句子之间相互作用。
图 1.6 BERT 最初是在英文维基百科和 BookCorpus 上预训练的。更现代的 LLM 在大几千倍的数据集上进行训练。
对这些语料库的预训练让 BERT(主要通过自注意力机制)学习了一组丰富的语言特征和上下文关系。使用像这样的大型、多样化的语料库已成为 NLP 研究中的常见做法,因为它已被证明可以提高模型在下游任务上的性能。
NOTE
LLM 的预训练过程会随着时间的推移而发展,因为研究人员会找到更好的训练 LLM 的方法,并逐步淘汰那些帮助不大的方法。例如,在使用下一句预测 (NSP) 预训练任务的原始 Google BERT 发布的一年内,Facebook AI 的一个名为 RoBERTa(是的,这些 LLM 名称中的大多数都很有趣)的 BERT 变体被证明不需要NSP 任务在多个领域匹配甚至击败原始 BERT 模型的性能。
根据您决定使用哪个 LLM,它可能会与其他 LLM 进行不同的预训练。这就是 LLM 彼此之间的区别。一些法学硕士接受专有数据源的培训,包括 OpenAI 的 GPT 系列模型,以便让他们的母公司比竞争对手更具优势。
我们不会在本书中经常重新讨论预训练的概念,因为它不完全是“快速入门指南”中的“快速”部分,但了解这些模型是如何预训练的可能是值得的,因为这是因为预训练训练我们可以应用一种叫做迁移学习的东西来让我们达到我们想要的最先进的结果,这很重要!
图 1.7 BERT 在两个任务上进行了预训练:自动编码语言建模任务(称为“掩码语言建模”任务)教它单个词嵌入和“下一句话预测”任务帮助它学习嵌入整个序列文本。
迁移学习是机器学习中使用的一种技术,可以利用从一项任务中获得的知识来提高另一项相关任务的性能。LLM 的迁移学习涉及采用已经在一个文本数据语料库上预训练的 LLM,然后通过使用任务更新模型的参数来针对特定的“下游”任务(例如文本分类或文本生成)对其进行微调。具体数据。
迁移学习背后的想法是预训练模型已经学习了很多关于语言和单词之间关系的信息,这些信息可以作为提高新任务性能的起点。迁移学习允许 LLM 针对特定任务进行微调,与从头开始训练模型所需的任务特定数据相比,它需要的数据量要少得多。这大大减少了培训 LLM 所需的时间和资源。图1.8 提供了这种关系的可视化表示。
一旦 LLM 被预训练,它就可以针对特定任务进行微调。微调涉及在较小的、特定于任务的数据集上训练 LLM,以针对手头的特定任务调整其参数。这使 LLM 可以利用其预先训练的语言知识来提高其针对特定任务的准确性。微调已被证明可以显着提高特定领域和特定任务的性能,并让 LLM 快速适应各种 NLP 应用程序。
图 1.8 通用迁移学习循环涉及在通用数据集上针对某些通用自监督任务预训练模型,然后在特定任务数据集上微调模型。
图1.9 显示了我们将在后面的章节中用于模型的基本微调循环。无论它们是开源的还是闭源的,循环都或多或少是相同的:
1. 我们定义我们想要微调的模型以及任何微调参数(例如,学习率)
2.我们将聚合一些训练数据(格式和其他特征取决于我们正在更新的模型)
3. 我们计算损失(误差的度量)和梯度(关于如何改变模型以最小化误差的信息)
4. 我们通过反向传播更新模型——一种更新模型参数以最小化错误的机制如果其中一些超出了您的理解范围,请不要担心:我们将依靠 Hugging Face 的 Transformers 包(图1.9 )和 OpenAI 的 Fine-tuning API中的预构建工具来抽象掉其中的大部分内容,这样我们就可以真正专注于我们的数据和我们的模型。
NOTE
除了非常具体的高级练习外,您不需要 Hugging Face 帐户或密钥来跟随和使用任何代码。
介绍 Transformer 的原论文的名字叫做“Attention is all you need”。注意力是深度学习模型(不仅仅是 Transformers)中使用的一种机制,它为输入的不同部分分配不同的权重,允许模型在执行翻译或摘要等任务时优先考虑和强调最重要的信息。本质上,注意力允许模型动态地“关注”输入的不同部分,从而提高性能和更准确的结果。在注意力普及之前,大多数神经网络平等地处理所有输入,并且模型依赖于输入的固定表示来进行预测。依赖注意力的现代 LLM 可以动态地关注输入序列的不同部分,使它们能够权衡每个部分在进行预测时的重要性。
图 1.9 来自 Hugging Face 的 Transformers 包为训练和微调 LLM 提供了一个简洁明了的界面。
回顾一下,LLM 在大型语料库上进行预训练,有时会针对特定任务在较小的数据集上进行微调。回想一下,Transformer 作为语言模型的有效性背后的一个因素是它是高度可并行化的,允许更快的训练和高效的文本处理。Transformer 与其他深度学习架构的真正区别在于它能够使用注意力捕获令牌之间的远程依赖关系和关系。换句话说,注意力是基于 Transformer 的 LLM 的重要组成部分,它使它们能够有效地保留训练循环和任务(即迁移学习)之间的信息,同时能够轻松处理冗长的文本样本。
注意力被认为是帮助 LLM 学习(或至少识别)内部世界模型和人类可识别规则的最大责任。斯坦福大学 2019 年的一项研究表明,BERT 中的某些注意力计算与语法和语法规则的语言概念相对应。例如,他们注意到 BERT 仅通过预训练就能以非常高的准确度注意到动词的直接宾语、名词的限定词和介词的宾语。这些关系在图1.10中直观地呈现出来。
有研究探索了哪些其他类型的“规则”LLM 能够简单地通过预训练和微调来学习。一个例子是由哈佛大学的研究人员领导的一系列实验,这些实验探索了 LLM 学习一组规则以完成像奥赛罗游戏这样的综合任务的能力(图 1.11 )。他们发现有证据表明,LLM 能够仅通过对历史移动数据进行培训来理解游戏规则。
图 1.10 对 LLM 的研究调查发现,即使他们从未被明确告知这些规则,他们似乎也能识别语法规则。
图 1.11 LLM 可以学习关于世界的各种事物,无论是游戏规则和策略,还是人类语言的规则。
然而,对于任何 LLM 学习任何类型的规则,它必须将我们认为的文本转换为机器可读的东西。这是通过称为嵌入的过程完成的。
嵌入是大维空间中单词、短语或标记的数学表示。在 NLP 中,嵌入用于以捕获语义含义和与其他词的关系的方式表示单词、短语或标记。有几种类型的嵌入,包括位置嵌入,它编码一个标记在句子中的位置,以及标记嵌入,它编码一个标记的语义(图 1.12 )。
图 1.12 BERT 如何对给定文本片段使用三层嵌入的示例。一旦文本被标记化,每个标记都会被赋予一个嵌入,然后将值相加,因此在计算任何注意力之前,每个标记都会以初始嵌入结束。在本文中,我们不会过分关注 LLM 嵌入的各个层,除非它们服务于更实际的目的,但了解其中的一些部分以及它们在幕后的样子是很好的!
LLMs 根据他们的预训练学习不同的令牌嵌入,并可以在微调期间进一步更新这些嵌入。
如前所述,标记化涉及将文本分解为最小的理解单元 - 标记。这些标记是嵌入到语义中的信息片段,并作为注意力计算的输入,从而导致......嗯,LLM 实际学习和工作。标记构成 LLM 的静态词汇表,并不总是代表整个单词。标记可以表示标点符号、单个字符,甚至是 LLM 不知道的单词的子词。几乎所有的 LLM 都有对模型具有特定含义的特殊标记。例如,BERT 模型有一些特殊标记,包括[CLS]BERT 作为每个输入的第一个标记自动注入的标记,旨在表示整个输入序列的编码语义。
读者可能熟悉传统 NLP 中使用的停用词删除、词干提取和截断等技术。LLM 不使用这些技术,也不是必需的。法学硕士旨在处理人类语言固有的复杂性和可变性,包括“the”和“an”等停用词的使用以及时态和拼写错误等词形式的变化。使用这些技术将输入文本更改为 LLM 可能会减少上下文信息并改变文本的原始含义,从而潜在地损害模型的性能。
标记化还可以涉及几个预处理步骤,例如casing,它指的是标记的大写。套管有两种类型:无套管和套管。在 uncased 标记化中,所有标记都是小写的,并且通常去除字母的重音符号,而在大小写标记化中,保留标记的大写。大小写的选择会影响模型的性能,因为大写可以提供有关令牌含义的重要信息。在图 1.13中可以找到这方面的示例。
NOTE
值得一提的是,根据模型的不同,即使是外壳的概念也有一些偏差。取消文本的大小写 - 小写和去除重音 - 是一个非常西式的预处理步骤。我自己会说土耳其语,并且知道变音符号(例如我姓氏中的 Ö)很重要,实际上可以帮助法学硕士理解所讲的单词。任何没有在不同语料库上接受过充分训练的语言模型都可能难以解析和利用这些上下文。
图 1.13 uncased 与 cased 标记化的选择取决于任务。像文本分类这样的简单任务通常更喜欢 uncased tokenization,而像命名实体识别这样从 case 中获取意义的任务更喜欢 cased tokenization。
图1.14 显示了标记化的示例,特别是 LLM 如何处理词汇外 (OOV) 短语的示例。OOV 短语只是 LLM 无法识别为标记的短语/单词,必须拆分成更小的子词。例如,我的名字(Sinan)在大多数 LLM(我的生活故事)中不是一个标记,因此在 BERT 中,标记化方案会将我的名字分成两个标记(假设未封装标记化):
罪——我名字的第一部分
##an - 一个特殊的子词标记,不同于单词“an”,仅用作分割未知单词的手段
图 1.14 任何 LLM 都必须处理他们以前从未见过的单词。如果我们关心 LLM 的标记限制,LLM 如何标记文本可能很重要。
一些 LLM 限制了我们可以在任何时候输入的标记数量,因此如果我们试图注意这个限制,LLM 如何标记文本可能很重要。
到目前为止,我们已经讨论了很多关于语言建模的问题——预测短语中丢失/下一个标记,但现代 LLM 也可以借鉴 AI 的其他领域,使他们的模型性能更高,更重要的是更一致——这意味着AI是按照人类的期望执行。换句话说,对齐的 LLM 具有与人类目标相匹配的目标。
超越语言建模——对齐 + RLHF
语言模型中的对齐是指模型对符合用户期望的输入提示的响应能力。标准语言模型根据前面的上下文预测下一个单词,但这可能会限制它们对特定说明或提示的有用性。研究人员正在想出可扩展且高效的方法来使语言模型与用户的意图保持一致。对齐语言模型的一种广泛方法是通过将强化学习 (RL) 纳入训练循环。
RL with Human Feedback (RLHF) 是一种流行的对齐预训练 LLM 的方法,它使用人类反馈来提高它们的性能。它允许 LLM 从相对较小的高质量人类反馈批次中对自身输出的反馈进行学习,从而克服传统监督学习的一些局限性。RLHF 在 ChatGPT 等现代 LLM 中显示出显着的改进。RLHF 是接近与 RL 对齐的一个示例,但还有其他新兴方法,如带有 AI 反馈的 RL(例如,宪法 AI)。
让我们来看看我们将在本书中使用的一些流行的 LLM。
BERT、T5、GPT分别是谷歌、谷歌、OpenAI开发的三种流行的LLM。这些模型在架构上有很大差异,尽管它们都将 Transformer 作为一个共同的祖先。Transformer 系列中其他广泛使用的 LLM 变体包括 RoBERTa、BART(我们之前看到它执行一些文本分类)和 ELECTRA。
BERT(图1.15)是一种自动编码模型,它使用注意力来构建句子的双向表示,使其成为句子分类和标记分类任务的理想选择。
BERT 使用 Transformer 的编码器并忽略解码器,相对于专注于一次生成文本一个标记的其他速度较慢的 LLM,它非常擅长快速处理/理解大量文本。因此,当我们不需要编写自由文本时,BERT 派生架构最适合快速处理和分析大型语料库。
图 1.15 BERT 是最早的 LLM 之一,并且在涉及快速处理大量文本的许多 NLP 任务中继续流行。
BERT 本身不对文本进行分类或总结文档,但它通常用作下游 NLP 任务的预训练模型。BERT 已成为 NLP 社区中广泛使用和备受推崇的 LLM,为开发更高级的语言模型铺平了道路。
另一方面,GPT(图 1.16 )是一种自回归模型,它使用注意力来根据先前的标记预测序列中的下一个标记。GPT 算法系列(包括 ChatGPT 和 GPT-3)主要用于文本生成,并以其生成听起来自然的类人文本的能力而闻名。
图 1.16 GPT 系列模型擅长生成符合用户意图的自由文本。
GPT 依赖于 Transformer 的解码器部分并忽略编码器,因此非常擅长一次生成文本一个标记。基于 GPT 的模型最适合在给定相当大的上下文窗口的情况下生成文本。它们也可以用于处理/理解文本,我们将在下一章中看到。GPT 派生架构非常适合需要能够自由编写文本的应用程序。
T5 是一种纯编码器/解码器转换器模型,旨在执行多项 NLP 任务,从文本分类到文本摘要和生成,现成可用。事实上,它是首批能够拥有这一壮举的流行机型之一。在 T5 之前,像 BERT 和 GPT-2 这样的 LLM 通常必须使用标记数据进行微调,然后才能依赖它们执行此类特定任务。
图 1.17 T5 是最早显示出无需任何微调即可一次解决多个任务的 LLM 之一。
T5 同时使用 Transformer 的编码器和解码器,在处理和生成文本方面变得高度通用。基于 T5 的模型可以执行范围广泛的 NLP 任务,从文本分类到文本生成,因为它们能够使用编码器构建输入文本的表示并使用解码器生成文本(图 1.17 )。T5 派生架构非常适合需要处理和理解文本以及自由生成文本的能力的应用程序。
T5 无需微调即可执行多项任务的能力刺激了其他多功能 LLM 的开发,这些 LLM 可以在几乎不需要微调的情况下高效、准确地执行多项任务。在 T5 大约同时发布的 GPT-3 也拥有这种能力。
这三个 LLM 用途广泛,可用于各种 NLP 任务,例如文本分类、文本生成、机器翻译和情感分析等。这三个 LLM 以及它们的变种(变体)将是本书和我们的应用程序的主要焦点。
特定领域的 LLM 是专门在特定学科领域(例如生物学或金融)接受过培训的 LLM。与通用 LLM 不同,这些模型旨在理解他们接受培训的领域内使用的特定语言和概念。
特定领域 LLM 的一个例子是 BioGPT(图1.18);在大规模生物医学文献中预先训练的特定领域 LLM。该模型由 AI 医疗保健公司 Owkin 与 Hugging Face 合作开发。该模型在超过 200 万篇生物医学研究文章的数据集上进行训练,使其对命名实体识别、关系提取和问答等广泛的生物医学 NLP 任务非常有效。
BioGPT 的预训练将生物医学知识和特定领域的术语编码到 LLM 中,可以在较小的数据集上进行微调,使其适用于特定的生物医学任务并减少对大量标记数据的需求。
图 1.18 BioGPT 是在大规模生物医学文献上预训练的特定领域的 Transformer 模型。BioGPT 在生物医学领域的成功启发了其他特定领域的 LLM,例如 SciBERT 和 BlueBERT。
使用特定领域 LLM 的优势在于他们对一组特定文本进行培训。这使他们能够更好地理解在其特定领域内使用的语言和概念,从而提高该领域内包含的 NLP 任务的准确性和流畅性。相比之下,通用 LLM 可能难以有效地处理特定领域中使用的语言和概念。
正如我们已经看到的,LLM 的应用千差万别,直到今天,研究人员仍在继续寻找 LLM 的新应用。我们将在本书中以三种方式使用 LLM:
1.使用预训练的 LLM 的潜在能力来处理和生成文本,而无需进一步微调作为更大架构的一部分。
例如,使用预训练的 BERT/GPT 创建信息检索系统。
2.使用迁移学习微调预训练的 LLM 以执行非常具体的任务。
例如,微调 T5 以创建特定领域/行业的文档摘要。
3.要求经过预训练的 LLM 解决它经过预训练可以解决或可以合理直觉的任务。
例如,提示 GPT3 撰写博文。
4.比如提示T5进行语言翻译..
这些方法以不同的方式使用 LLM,虽然所有选项都利用了 LLM 的预训练,但只有选项 2 需要任何微调。让我们来看看LLM的一些具体应用。
LLM 的绝大多数应用都在非常常见的 NLP 任务(如分类和翻译)中提供了最先进的结果。这并不是说我们在 Transformer 和 LLM 之前没有解决这些任务,只是现在开发人员和从业者可以用相对较少的标记数据(由于 Transformer 在庞大的语料库上进行有效的预训练)和更高的程度来解决它们的准确性。
文本分类任务为给定的文本片段分配标签。此任务通常用于情感分析,目标是将一段文本分类为正面、负面或中性,或用于主题分类,目标是将一段文本分类为一个或多个预定义类别。可以对 BERT 等模型进行微调,以使用相对较少的标记数据执行分类,如图1.19所示。
图 1.19 使用 BERT 实现快速准确的文本分类结果的架构一瞥。分类层通常作用于 BERT 用来对整个输入序列的语义进行编码的特殊 [CLS] 标记。
文本分类仍然是最受全球认可和解决的 NLP 任务之一,因为归根结底,有时我们只需要知道这封电子邮件是否是“垃圾邮件”,然后继续我们的生活!
一个更难但仍然经典的 NLP 任务是机器翻译,其目标是自动将文本从一种语言翻译成另一种语言,同时保留意义和上下文。传统上,这项任务非常困难,因为它涉及到有足够的示例和两种语言的领域知识来准确衡量模型的表现,但现代 LLM 似乎更容易完成这项任务,因为他们有预训练和高效的注意力计算。
甚至在变形金刚出现之前,注意力的第一个应用就是用于机器翻译任务,其中人工智能模型被期望从一种人类语言翻译成另一种人类语言。T5 是最早吹捧执行多项现成任务能力的 LLM 之一(图1.20)。其中一项任务是能够将英语翻译成几种语言并返回。
图 1.20 T5 可以执行许多现成的 NLP 任务,包括语法校正、摘要和翻译。
自 T5 以来,LLM 中的语言翻译变得更好、更多样化。GPT-3 和最新的 T5 模型等模型可以相对轻松地在数十种语言之间进行翻译。当然,这与 LLM 的一个主要已知限制相冲突,即他们主要是从说英语/通常是美国人的角度接受培训的,因此大多数 LLM 可以很好地处理英语和非英语语言,好吧,不是。
如果我们将 SQL 视为一种语言,那么将英语转换为 SQL 与将英语转换为法语并没有太大区别(图1.21)。现代 LLM 已经可以在现成的基础级别上做到这一点,但更高级的 SQL 查询通常需要一些微调。
图 1.21 使用 GPT-3 从(虽然简单的)Postgres 模式生成功能正常的 SQL 代码
如果我们扩大对什么可以被视为“翻译”的思考,那么我们面前就会出现许多新的机会。例如,如果我们想在英语和一系列波长之间进行“翻译”,大脑可能会将这些波长解释为运动功能并执行。我不是神经科学家或其他任何人,但这似乎是一个引人入胜的研究领域!
对于像 ChatGPT 这样的现代 LLM,首先引起世界注意的是他们能够自由地撰写博客、电子邮件,甚至学术论文。这种文本生成的概念就是为什么许多 LLM 被亲切地称为“生成 AI”,尽管这个术语有点简化和不精确。我不会经常使用术语“生成式 AI”,因为“生成式”这个特定词在机器学习中有其自身的含义,类似于“判别式”模型的学习方式。有关更多信息,请查看我的第一本书:数据科学原理)
例如,我们可以提示(询问)ChatGPT 来帮助计划博客文章,如图1.22 所示。即使您不同意结果,这也可以帮助人们解决“白板”问题,并至少为我们提供一些可以编辑和开始的东西,而不是盯着空白页看太久。
图 1.22 ChatGPT 可以帮助构思、构建甚至撰写整篇博文
NOTE
如果我不提像这样的法学硕士可能在学术层面引起的争议,那我就失职了。仅仅因为 LLM 可以写整个博客甚至论文并不意味着我们应该让他们。就像互联网让一些人相信我们再也不需要书一样,一些人认为 ChatGPT 意味着我们再也不需要写任何东西了。只要机构知道如何使用这项技术并制定适当的法规/规则,学生和教师就可以安全、合乎道德地使用 ChatGPT 和其他以文本生成为中心的人工智能。
我们将使用 ChatGPT 来解决本书中的一些任务。我们将依赖 ChatGPT 的能力,在其上下文窗口中对信息进行上下文化,并自由回写(通常)准确的响应。我们将主要通过 Playground 和 OpenAI 提供的 API 与 ChatGPT 进行交互,因为该模型不是开源的。
LLM 通过预训练和微调将信息直接编码到它们的参数中,但让它们与新信息保持同步是很棘手的。我们要么必须根据新数据进一步微调模型,要么从头开始再次运行预训练步骤。为了动态地保持信息新鲜,我们将使用矢量数据库构建我们自己的信息检索系统(不用担心,我们将在下一章中详细介绍所有这些)。图1.23 显示了我们将构建的架构的轮廓。
图 1.23 我们的神经语义搜索系统将能够动态获取新信息,并能够使用 LLM 快速准确地检索用户查询的相关文档。
然后,我们将通过构建一个基于 ChatGPT 的聊天机器人来添加到这个系统中,以对话方式回答用户的问题。
每个人都喜欢一个好的聊天机器人,对吧?好吧,无论你喜欢还是讨厌他们,LLM 进行对话的能力都可以通过 ChatGPT 甚至 GPT-3 等系统显而易见(如图1.24所示)。我们使用 LLM 构建聊天机器人的方式将与通过意图、实体和基于树的对话流设计聊天机器人的传统方式大不相同。这些概念将被系统提示、上下文和角色所取代——所有这些我们都将在接下来的章节中深入探讨。
我们有我们的工作要做。我很高兴能和你一起踏上这段旅程,我很高兴能开始!
图 1.24 ChatGPT 并不是唯一可以进行对话的 LLM。我们可以使用 GPT-3 构建一个简单的对话式聊天机器人。以绿色突出显示的文本代表 GPT-3 的输出。请注意,在聊天甚至开始之前,我将不会向最终用户显示的上下文注入 GPT-3,但 GPT-3 需要提供准确的响应。
LLM 是高级 AI 模型,彻底改变了 NLP 领域。LLM 用途广泛,可用于各种 NLP 任务,包括文本分类、文本生成和机器翻译。它们在大量文本数据上进行了预训练,然后可以针对特定任务进行微调。
以这种方式使用 LLM 已成为 NLP 模型开发的标准步骤。在我们的第一个案例研究中,我们将探讨使用 GPT-3 和 ChatGPT 等专有模型启动应用程序的过程。我们将亲身体验将 LLM 用于实际 NLP 任务的实际方面,从模型选择和微调到部署和维护。