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

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

今天是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 中的损失计算方式有点不一样,所以在学习的时候也吃了一些苦头。

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

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

댓글을 불러오는 중...