Build-A-Large-Language-Mode.../Book/2.处理文本数据.md

48 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

本章涵盖以下内容:
+ **为大语言模型的训练准备文本数据集**
+ **将文本分割成词和子词token**
+ **字节对编码Byte Pair EncodingBPE一种更为高级的文本分词技术**
+ **使用滑动窗口方法采样训练示例**
+ **将tokens转换为向量输入到大语言模型中**
在上一章中我们介绍了大语言模型LLMs的基本结构并了解到它们基于海量的文本数据集进行预训练。我们特别关注的是仅使用通用 Transformer 架构中解码器部分的 LLMs这也是 ChatGPT 和其他流行的类似 GPT 的 LLM 所依赖的模型。
在预训练阶段LLMs 逐字处理文本。通过使用下一个单词预测任务训练拥有数百万到数十亿参数的 LLMs最终能够生成具有出色能力的模型。这些模型随后可以进一步微调以遵循指令或执行特定目标任务。然而在我们接下来几章中实现和训练 LLMs 之前,我们需要准备训练数据集,这也是本章的重点,如图 2.1 所示。
<img src="../Image/chapter2/figure2.1.png" width="75%" />
在本章中,您将学习如何为训练 LLM 准备输入文本。这包括将文本拆分为单个单词和子词token并将这些token编码为 LLM 的向量表示。您还将了解一些先进的token分割方案比如字节对编码这种方法在像 GPT 这样的流行 LLM 中得到应用。最后,我们将实现一个采样和数据加载策略,以生成后续章节中训练 LLM 所需的输入输出对。
## 2.1 理解词嵌入
深度神经网络模型,包括 LLM往往无法直接处理原始文本。这是因为文本是分类数据它与实现和训练神经网络所需的数学运算不兼容。因此我们需要一种方法将单词表示为连续值向量。对计算中向量和张量不熟悉的读者可以在附录 A 的 A2.2 节中了解更多关于张量的内容。)
将数据转换为向量格式的过程通常被称为嵌入embedding。我们可以通过特定的神经网络层或其他预训练的神经网络模型来对不同类型的数据进行嵌入比如视频、音频和文本如图 2.2 所示。
<img src="../Image/chapter2/figure2.2.png" width="75%" />
如图 2.2 所示,我们可以使用嵌入模型来处理多种不同的数据格式。然而,值得注意的是,不同的数据格式需要使用不同的嵌入模型。例如,专为文本设计的嵌入模型并不适用于音频或视频数据的嵌入。
> [!TIP]
>
> 不同格式的数据源(如文本、图像、音频、视频)在处理和嵌入时,需要不同的模型和技术,原因在于它们的数据结构、特征和处理方式各不相同,因此需要针对性的方法将这些不同的数据类型转换为适合神经网络处理的向量表示。以下总结下不同数据源在嵌入时的一些区别:
>
> | 数据类型 | 数据特征 | 嵌入模型 | 主要特征 |
> | :------: | :------: | :------: | :------: |
> | | | | |
> | | | | |
> | | | | |
> | | | | |
>
>