parent
9b05cd7cd3
commit
66378b7e71
|
|
@ -52,7 +52,7 @@ LLM 采用了一种称为 Transformer 的架构(在第 1.4 节中将详细讨
|
|||
由于 LLM 能够生成文本,因此它们通常被称为一种生成式人工智能 (AI),常缩写为生成 AI 或 GenAI。如图 1.1 所示,人工智能涵盖了创造能执行类似人类智能任务的更广泛领域,包括理解语言、识别模式和做出决策,并包括机器学习和深度学习等子领域。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/figure1.1.png" width="75%" />
|
||||
<img src="Image/chapter1/figure1.1.png" width="75%" />
|
||||
</div>
|
||||
|
||||
用于实现人工智能的算法是机器学习领域的核心。机器学习往往不需要明确的编程实现,而是涉及可以从数据中学习并基于数据做出预测或决策的算法研究。举例来说,垃圾邮件过滤器就是机器学习的一个实际应用。与其手动编写规则来识别垃圾邮件,不如将标记为垃圾邮件和合法邮件的电子邮件示例输入给机器学习算法。通过最小化训练数据集上的预测误差,模型能够学习识别垃圾邮件的模式和特征,从而将新邮件分类为垃圾邮件或合法邮件。
|
||||
|
|
@ -72,7 +72,7 @@ LLM 采用了一种称为 Transformer 的架构(在第 1.4 节中将详细讨
|
|||
由于具备解析和理解非结构化文本数据的高级能力,LLM 在多个领域有着广泛的应用。目前,LLM 被广泛用于机器翻译、新文本生成(见图 1.2)、情感分析、文本摘要等多种任务。最近,LLM 还被用于内容创作,比如撰写小说、文章,甚至计算机代码。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/figure1.2.png" width="75%" />
|
||||
<img src="Image/chapter1/figure1.2.png" width="75%" />
|
||||
</div>
|
||||
|
||||
LLM 还可以支持复杂的聊天机器人和虚拟助手,例如 OpenAI 的 ChatGPT 或谷歌的 Gemini(以前称为 Bard),这些助手能够回答用户的问题,并提升传统搜索引擎的功能,如 Google Search 和 Microsoft Bing。
|
||||
|
|
@ -103,7 +103,7 @@ LLM 还可以支持复杂的聊天机器人和虚拟助手,例如 OpenAI 的 C
|
|||
> + 冻结部分权重的微调,一般冻结低层(往往是学习到的基础语言特征),对高层的权重进行调整。这种微调方式常在需要加速训练,或者数据量较小,全权重微调可能导致过拟合的情况下使用。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/figure1.3.png" width="75%" />
|
||||
<img src="Image/chapter1/figure1.3.png" width="75%" />
|
||||
</div>
|
||||
|
||||
如图 1.3 所示,创建 LLM 的第一步是用大量文本数据进行训练,这些数据一般被称为原始文本。这里的 "raw" 指的是这些数据只是普通文本,没有任何标注信息[^1] 。(可以进行过滤,比如去除格式字符或未知语言的文档。)
|
||||
|
|
@ -123,7 +123,7 @@ LLM 的第一阶段训练被称为预训练,旨在创建一个初始的预训
|
|||
大多数现代 LLM 基于 transformer 架构,这是一种深度神经网络架构,首次在 2017 年的论文《Attention Is All You Need》中提出。为了理解 LLM,我们需要简要回顾一下最初为机器翻译开发的原始 Transformer,该架构用于将英文文本翻译成德文和法文。图 1.4 显示了 Transformer 架构的简化版本。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/figure1.4.png" width="75%" />
|
||||
<img src="Image/chapter1/figure1.4.png" width="75%" />
|
||||
</div>
|
||||
|
||||
图 1.4 中的 Transformer 架构由两个子模块组成:编码器和解码器。编码器模块处理文本输入,将其编码为一系列数值表示或向量,以捕捉输入的上下文信息。然后,解码器模块利用这些编码向量生成输出文本。例如,在翻译任务中,编码器将源语言文本编码为向量,而解码器则将这些向量解码为目标语言的文本。编码器和解码器都由多个层通过自注意力机制相连。您可能会对输入的预处理和编码过程有许多疑问,这些将在后续章节的逐步实现中详细解答。
|
||||
|
|
@ -143,7 +143,7 @@ BERT 是基于原始 Transformer 架构的编码器子模块,与 GPT 的训练
|
|||
> **个人思考:** 为什么BERT适合用于文档分类或情感预测,这主要是基于BERT的训练模式,BERT也是基于Transformer架构,但它采用的是 **masked language model (MLM)** 训练方式,即在训练过程中,它会随机遮掩输入句子中的一些词(称为“masked”),并让模型预测这些被遮掩的词。这种训练策略被称为**掩蔽词预测**。这一独特的训练方法使得 BERT 能够更好地理解句子的上下文,因为它需要根据整句话的前后部分来预测被遮掩的词。这种双向(bidirectional)的训练使得 BERT 更适合处理需要全局上下文理解的任务,而文档分类或情感预测正是两种对于上下文语义理解要求非常高的场景。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/figure1.5.png" width="75%" />
|
||||
<img src="Image/chapter1/figure1.5.png" width="75%" />
|
||||
</div>
|
||||
|
||||
另一方面,GPT 专注于原始 Transformer 架构中的解码器部分,被设计用于需要生成文本的任务。这些任务包括机器翻译、文本摘要、小说创作和编写代码等。在本章接下来的部分,我们将更详细地讨论 GPT 架构,并在本书中从零开始实现它。
|
||||
|
|
@ -151,7 +151,7 @@ BERT 是基于原始 Transformer 架构的编码器子模块,与 GPT 的训练
|
|||
GPT 模型主要是为文本补全任务设计和训练的,但它们在能力上展现出显著的多样性。这些模型擅长执行zero-shot 和few-shot 学习任务。zero-shot 学习指的是在没有先前具体示例的情况下,能够处理完全未见过的任务。而few-shot 学习则是指模型可以从用户提供的极少量示例中进行学习,如图 1.6 所示。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/figure1.6.png" width="75%" />
|
||||
<img src="Image/chapter1/figure1.6.png" width="75%" />
|
||||
</div>
|
||||
|
||||
> [!NOTE]
|
||||
|
|
@ -167,7 +167,7 @@ GPT 模型主要是为文本补全任务设计和训练的,但它们在能力
|
|||
流行的 GPT 和 BERT 类模型的大型训练数据集代表了丰富而全面的文本语料库,涵盖数十亿个单词,涉及各种主题以及自然语言和计算机语言。为了提供一个具体的例子,表 1.1 总结了用于预训练 GPT-3 的数据集,这个模型是第一版 ChatGPT 的基础。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/table1.1.png" width="75%" />
|
||||
<img src="Image/chapter1/table1.1.png" width="75%" />
|
||||
</div>
|
||||
|
||||
通过表1.1能得出的主要结论是,这个训练数据集的规模和多样性使得这些模型在各种任务中表现优异,包括不同语言的语法、语义和上下文信息,甚至还可以处理一些需要通用知识的任务。
|
||||
|
|
@ -199,7 +199,7 @@ GPT 模型主要是为文本补全任务设计和训练的,但它们在能力
|
|||
GPT-3 是该模型的增强版,具有更多参数,并在更大的数据集上进行训练。而在 ChatGPT 中提供的原始模型是通过在一个大型指令数据集上微调 GPT-3 而创建的,这一过程使用了 OpenAI 的 InstructGPT 论文中的方法,我们将在第 7 章“使用人类反馈进行微调以遵循指令”中详细介绍。如图 1.6 所示,这些模型在文本完成方面表现出色,并且还能够进行拼写纠正、分类和语言翻译等其他任务。考虑到 GPT 模型是在相对简单的下一个单词预测任务上进行预训练的,这一点确实非常惊人,如图 1.7 所示。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/figure1.7.png" width="75%" />
|
||||
<img src="Image/chapter1/figure1.7.png" width="75%" />
|
||||
</div>
|
||||
|
||||
下一个单词预测任务是一种自监督学习的方法,这是一种自我标注的形式。这意味着我们不需要专门收集训练数据的标签,而是可以利用数据本身的结构:我们可以把句子或文档中的下一个单词作为模型需要预测的标签。由于下一个单词预测任务允许我们“动态”生成标签,因此我们可以利用大量未标记的文本数据集来训练 LLM,这在第 1.5 节中也有讨论,即利用大型数据集。
|
||||
|
|
@ -217,7 +217,7 @@ GPT-3 是该模型的增强版,具有更多参数,并在更大的数据集
|
|||
像 GPT-3 这样的模型架构明显大于原始的 Transformer 模型。例如,原始的 Transformer 将编码器和解码器块重复了六次,而 GPT-3 具有 96 层 Transformer,总共有 1750 亿个参数。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/figure1.8.png" width="75%" />
|
||||
<img src="Image/chapter1/figure1.8.png" width="75%" />
|
||||
</div>
|
||||
|
||||
GPT-3 于 2020 年推出,按照深度学习和大语言模型(LLM)开发的标准,如今看来,已经是很久以前了。然而,像 Meta 的 Llama 模型这样的最新架构依然基于相同的基本原理,仅做了些许修改。因此,理解 GPT 的重要性依旧不减。本书将专注于实现 GPT 背后的核心架构,并提供有关其他 LLM 所采用的特定调整的参考。
|
||||
|
|
@ -233,7 +233,7 @@ GPT-3 于 2020 年推出,按照深度学习和大语言模型(LLM)开发
|
|||
在本章中,我们为理解LLM打下了基础。在本书的其余部分,我们将从零开始编码一个 LLM,使用 GPT 的基本理念作为框架,并分为三个阶段进行,如图 1.9 所示。
|
||||
|
||||
<div style="text-align: center;">
|
||||
<img src="https://raw.githubusercontent.com/skindhu/Build-A-Large-Language-Model-CN/refs/heads/main/Image/chapter1/figure1.9.png" width="75%" />
|
||||
<img src="Image/chapter1/figure1.9.png" width="75%" />
|
||||
</div>
|
||||
|
||||
首先,我们将学习基本的数据预处理步骤,并编写 LLM 核心的注意力机制代码。
|
||||
|
|
|
|||
Loading…
Reference in New Issue