add seventh chapter

This commit is contained in:
skindhu 2024-11-12 20:35:36 +08:00
parent e5ce40f468
commit 9f77e585b5
7 changed files with 42 additions and 2 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 572 KiB

BIN
Image/image7.3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 KiB

View File

@ -276,13 +276,13 @@ tensor([ -9.5042, -10.3796, -11.3677, -11.4798, -9.7764, -12.2561])
>
> 假设我们有三个概率值分别为0.2、0.1和0.05。如果我们计算这些值的乘积,结果是:
>
> $$ 0.2×0.1×0.05=0.001 $$
> $$0.2×0.1×0.05=0.001$$
>
> 这个值非常小尤其在深度学习或概率模型中我们通常会有成千上万个概率需要相乘这样会导致最终的乘积接近0甚至为0造成数值计算的不稳定性。
>
> 如果我们对这些概率值取对数然后相加而不是直接相乘我们可以避免这个问题。例如对这三个值取自然对数logarithm后再相加
>
> $$ ln(0.2)+ln(0.1)+ln(0.05)≈1.6094+(2.3026)+(2.9957)=6.9077 $$
> $$ln(0.2)+ln(0.1)+ln(0.05)≈1.6094+(2.3026)+(2.9957)=6.9077$$
>
> 虽然这个和也是负数但它不会像直接相乘的结果那样接近于0避免了数值下溢的问题。**对数的累加性质**允许我们将原本的累乘操作转换为累加,使得计算更加稳定和高效。
>

View File

@ -0,0 +1,40 @@
本章涵盖以下内容:
+ LLM 指令微调过程概述
+ 为监督式指令微调准备数据集
+ 批量组织指令数据
+ 评估 LLM 通过指令遵循生成的内容质量
+ 评估一个经过指令微调的 LLM
在之前的章节中,我们实现了 LLM 架构,完成了预训练,并将外部的预训练权重导入模型。然后,在上一章中,我们专注于对 LLM 进行特定分类任务的微调,即区分出正常短信和垃圾短信短信。在本章中,我们将介绍如何微调 LLM 以遵循人类指令(见图 7.1),这是开发用于聊天机器人、个人助理和其他对话任务的 LLM 的主要技术之一。
<img src="../Image/chapter7/figure7.1.png" width="75%" />
图 7.1 展示了微调大型语言模型的两种主要方式:用于分类任务的微调(步骤 8和用于指令遵循的微调步骤 9。上一章中我们已实现了步骤 8本章将重点讲解如何使用指令数据集微调 LLM具体过程将在下一节进一步说明。
## 7.1 指令遵循微调简介
在第 5 章中,我们看到,对 LLM 的预训练是一种逐词生成的学习过程。预训练后LLM 具备根据输入片段补全文本的能力,可以完成句子或生成段落。
然而,预训练的 LLM 在处理特定指令时往往表现不佳,例如,“修正该文本的语法”或“将该文本转换为被动语态”。我们将在第 7.5 节中详细讨论一个具体示例,演示如何加载预训练模型并基于其进行指令微调。
本章将专注于提升 LLM 遵循指令并生成理想回答的能力,如图 7.2 所示。
<img src="../Image/chapter7/figure7.2.png" width="75%" />
在本章的剩余部分,我们将逐步实现指令微调过程,首先从数据集准备开始,如图 7.3 所示。
<img src="../Image/chapter7/figure7.3.png" width="75%" />
数据集准备是指令微调中的关键环节,本章的大部分内容都将围绕这一过程展开。下一节将开始实现下载和格式化数据集的代码,如图 7.3 所示,这是数据集准备过程的第一步。