从零开始构建一个大语言模型-第二章第一节

# 第二章目录

**2.1 理解词嵌入** 

2.2 文本分词

2.3 将词元转换为词元ID

2.4 添加特殊上下文词元

2.5 字节对编码 

2.6 使用滑动窗口进行数据采样

2.7 创建词元嵌入

2.8 编码词位置

# 本章涵盖

为大型语言模型训练准备文本  。

将文本拆分为单词和子词词元  。

字节对编码:一种更先进的文本分词方法  。

用滑动窗口法采样训练样本  。

将词元转换为输入大型语言模型的向量。

到目前为止,我们已经介绍了大型语言模型(LLMs)的总体结构,并且了解到它们是在海量文本上进行预训练的。具体来说,我们重点关注了基于 Transformer 架构的仅解码器类大语言模型,ChatGPT 及其他流行的类 GPT 大语言模型所采用的正是这种架构。

在预训练阶段,大语言模型每次处理一个单词。使用下一个单词预测任务,利用数百万乃至数十亿参数来训练大语言模型,能产出性能卓越的模型。之后,这些模型还可以进一步微调,以遵循通用指令或执行特定目标任务。但在我们能够实现并训练大语言模型之前,我们需要准备训练数据集,如图 2.1 所示。

从零开始构建一个大语言模型-第二章第一节_第1张图片

图 2.1 展示了编写大语言模型的三个主要阶段。本章重点关注阶段 1 的第 1 步:实现数据样本管道。

你将学习如何为训练大语言模型准备输入文本。这涉及将文本拆分为单个的单词和子词词元,随后这些词元可被编码为大语言模型的向量表示形式。你还会了解到像字节对编码这样的高级分词方案,GPT 等流行的大语言模型就采用了这种方案。最后,我们将实施一种采样和数据加载策略,以生成训练大语言模型所需的输入 - 输出对。

# 2.1 理解词嵌入

包括大语言模型(LLMs)在内的深度神经网络模型无法直接处理原始文本。由于文本属于分类数据,它与用于实现和训练神经网络的数学运算不兼容。因此,我们需要一种方法,将单词表示为连续值向量。

> [!NOTE] **注意**:

> 不熟悉计算环境中向量和张量的读者,可以在附录 A 的 A.2.2 节了解更多相关内容。

将数据转换为向量格式的概念通常被称为嵌入。利用特定的神经网络层或其他经过预训练的神经网络模型,我们可以嵌入不同的数据类型,例如视频、音频和文本,如图 2.2 所示。不过,需要注意的是,不同的数据格式需要不同的嵌入模型。例如,为文本设计的嵌入模型并不适合嵌入音频或视频数据。

从零开始构建一个大语言模型-第二章第一节_第2张图片

图 2.2 深度学习模型无法直接处理视频、音频和文本这类原始数据格式。因此,我们使用嵌入模型将这些原始数据转换为深度学习架构能够轻松理解与处理的密集向量表示形式。具体而言,该图展示了将原始数据转换为三维数值向量的过程。

从本质上讲,嵌入是一种从离散对象(如单词、图像,甚至整个文档)到连续向量空间中的点的映射 —— 嵌入的主要目的是将非数字数据转换为神经网络能够处理的格式。

虽然词嵌入是文本嵌入最常见的形式,但也有针对句子、段落或整个文档的嵌入。句子或段落嵌入是检索增强生成的热门选择。检索增强生成将生成(如生成文本)与检索(如搜索外部知识库)相结合,以便在生成文本时提取相关信息,这一技术不在本书的讨论范围内。由于我们的目标是训练类似 GPT 的大语言模型,这类模型学习逐词生成文本,所以我们将重点关注词嵌入。

人们已经开发出了若干算法和框架来生成词嵌入。早期且最受欢迎的例子之一是 Word2Vec 方法。Word2Vec 训练神经网络架构,通过给定目标词预测其上下文,或者反过来,以此生成词嵌入。Word2Vec 背后的主要理念是,出现在相似上下文中的单词往往具有相似的含义。因此,当出于可视化目的将其投影到二维词嵌入中时,相似的术语会聚集在一起,如图 2.3 所示。

词嵌入的维度可以各不相同,从一维到数千维都有。更高的维度可能会捕捉到更细微的关系,但这是以计算效率为代价的。

从零开始构建一个大语言模型-第二章第一节_第3张图片

图 2.3 如果词嵌入是二维的,我们就可以像这里展示的那样,将它们绘制在二维散点图中以实现可视化。在使用诸如 Word2Vec 这类词嵌入技术时,对应相似概念的单词在嵌入空间中往往彼此靠得很近。例如,不同种类的鸟类在嵌入空间中,相互之间的距离比它们与国家、城市之间的距离更近。

虽然我们可以使用像 Word2Vec 这样的预训练模型为机器学习模型生成嵌入,但大语言模型通常会自行生成嵌入,这些嵌入是输入层的一部分,并会在训练期间更新。将嵌入优化作为大语言模型训练的一部分,而非使用 Word2Vec,这样做的优势在于,嵌入会针对手头的特定任务和数据进行优化。我们将在本章后面实现这类嵌入层。(正如我们在第 3 章所讨论的,大语言模型也能创建情境化的输出嵌入。)

遗憾的是,高维嵌入给可视化带来了挑战,因为我们的感官知觉和常见的图形表示本质上局限于三维或更低维度,这就是为什么图 2.3 在二维散点图中展示二维嵌入。然而,在使用大语言模型时,我们通常会使用维度高得多的嵌入。以 GPT-2 和 GPT-3 为例,嵌入大小(通常指模型隐藏状态的维度)因具体的模型变体和大小而异,这是在性能与效率之间的权衡。最小的 GPT-2 模型(117M 和 125M 参数)使用 768 维的嵌入大小,举这个例子是为了给出具体说明。最大的 GPT-3 模型(175B 参数)则使用 12288 维的嵌入大小。

接下来,我们将逐步介绍为大语言模型准备嵌入所需的步骤,包括将文本拆分为单词、把单词转换为词元,以及将词元转换为嵌入向量。

你可能感兴趣的:(从零开始构建一个大语言模型,语言模型,人工智能,自然语言处理)