从零开始构建中学习 LLM 第5章读书后记

힘센캥거루
2025년 12월 19일(수정됨)
2
15

今天是12月14日。

其实挑战期已经过去整整两周了,但也不能因此就放弃写后记。

像这样留下的 TIL(Today I Learned),以后都会变成自己的血和肉。

这次打算比起代码本身,更专注在“意义”上来写一写。

从零开始构建中学习 LLM 第5章读书后记-1

1. 模型的损失计算

这一部分讲的是,在构建好 GPT 模型之后,用什么方式来计算损失。

GPT 会基于输入的 token,计算下一个要输出的 token 的概率。

然后在这些概率中,保留概率最高的几个 token,经过对数、取负等处理之后,得到交叉熵损失。

从零开始构建中学习 LLM 第5章读书后记-2

交叉熵损失因为是对“有多确信正确答案”这一点的直接负向度量,所以平均对数概率越接近 0,损失就越小。

我当时好奇的是:经过 logits、概率、目标 token 概率、对数概率、平均对数概率、负的平均对数概率这一连串操作之后,为什么模型的准确率就会提高呢?

这怎么就能提高“正确答案”本身的概率呢?

从零开始构建中学习 LLM 第5章读书后记-3

结果发现,我其实并不太了解logit 函数到底是什么。

简单来说,模型输出的是一个实数向量 logits,然后通过 softmax 来放大这些分数之间的相对差异,把它们转换成一个概率分布。

在这个过程中,分数大的会变成更高的概率,而分数小的则会变成接近 0 的概率。

而概率是在 0~1 之间的值,且 log1 = 0,所以对数概率越接近 0,就越倾向于选择更接近正确答案的 token。

因此,损失(loss)就是一种信号,它会促使我们更新模型参数,使得正确 token 的对数概率尽可能接近 0

2. LLM 训练与解码策略

从零开始构建中学习 LLM 第5章读书后记-4

现在,把前面做过的所有步骤结合起来,反复地评估损失、更新权重,就可以训练一个 LLM 了。

其中,为了推断出更接近正确答案的 token,有两种策略让我印象很深。

如果在选择 token 时使用贪心解码,只选概率最高的那个 token,那么回复的多样性就会降低。

因此,会把每个 logit 除以一个数值(温度),以增加回复的多样性。

这就叫做温度缩放(temperature scaling)。

另一种是 top-k 采样:先选出概率最高的 k 个 token,再在这 k 个里面进行采样输出回复。

3. 后记

看代码的时候,因为要和 PyTorch 一起理解数学概念,眼睛总是忍不住飘走,但真正理解之后,其实并没有那么难。

以前学过的损失公式,和 LLM 中的损失计算方式有点不一样,所以在学习的时候也吃了一些苦头。

不过现在算是理解得比较深入了,感觉也可以教给孩子们试试看。

对孩子们来说,与其死记公式,不如多去理解背后的含义,应该会更好。

관련 글

从零构建中学习 LLM 第7章读书心得与挑战回顾
从零构建中学习 LLM 第7章读书心得与挑战回顾
第7章的内容是让模型遵循指令进行微调的过程。也就是让它针对某个问题给出我们期望的回答。果然,最需要的还是数据。1. 指令微调步骤这里的核心是准备好问答数据集,用作输入-输出对来进行训练。这就叫做提示(prompt)风格。其他部分就像之前的流程一样,对内容进行分词(tokenize)、训练和评估,过程...
从零开始构建中学习 LLM 第 6 章读后感
从零开始构建中学习 LLM 第 6 章读后感
第 6 章是为分类进行微调。作为例子给出的任务是构建垃圾邮件分类器。垃圾邮件分类器需要判断一封邮件是不是垃圾邮件,因此输出结果要是类似 0、1 这样的值。1. 微调的顺序微调的过程和训练模型的过程很相似。准备数据集,加载权重值,然后进行训练和评估。稍微不同的一点是,会有一个把输出层映射到 0(非垃圾...
从零开始动手实现 LLM 第4章读书心得
从零开始动手实现 LLM 第4章读书心得
今天是11月26日,如果每天读一章并看完的话,这次挑战就算成功。在老大和老二的各种干扰下,不知道能不能做到。1. Dummy Transformer在实现 GPT 模型的过程中,看到是从 PyTorch 里拿来一个 Transformer 的 dummy 模块用的。一查才发现,在 PyTorch 的...
通过从头构建学习的LLM第3章读后感
通过从头构建学习的LLM第3章读后感
我在MacBook上泼了一大杯水后,崩溃了,浪费了大约3-4天。现在回想起来,反正MacBook已经坏了,应该想着送修,干点别的事情。无论如何,虽然有点晚了,但我觉得必须坚持到底,所以留下了第3章的读后感。1. 注意力机制第3章...
通过从头开始制作学习 LLM 第二章读书笔记
通过从头开始制作学习 LLM 第二章读书笔记
已经是参加挑战的第二周。昨天还没有完成第二章,趁着来参加 1 泊 2 日的研修,熬到 12 点才勉强赶上进度。1. 内容第二章的内容以单词的分词、编码、解码、嵌入向量为中心。尽管之前试过制作 One-hot 编码器,对于其他部分比较熟悉,但是嵌入向量本身的内容是新的。
适合 MacBook 用户的 Python OCR 推荐
适合 MacBook 用户的 Python OCR 推荐
为了识别学生的医疗诊断证明,我几乎尝试了所有的 OCR。我使用过 Tesseract、EasyOCR、PaddleOCR 等各种 OCR,但没有一个对韩语的性能让我满意。不过最近我发现了一个包装了 MacBook 上实时文本功能的 Python 库...

댓글을 불러오는 중...