先这样答
交叉熵可以理解为模型预测的概率分布和真实分布之间的差距。训练大模型时,目标只有一句话:让模型给下一个真实 token 更高的概率。模型先输出一组 logits,经过 softmax 变成词表上的概率分布,再根据训练数据中真正出现的下一个 token 计算交叉熵损失。
对语言模型来说,真实分布通常可以看成真实 token 位置为 1、其他位置为 0 的分布,所以交叉熵主要惩罚模型没有给真实 token 足够高的概率。损失越小,说明模型给真实下一个 token 的概率越高,这和最大化正确 token 的对数似然是等价的。多个 token 的损失取平均后,还可以通过 perplexity 衡量预测难度,困惑度等于平均交叉熵的指数。之所以不用准确率直接训练,是因为概率是连续且可导的,可以做梯度下降,而准确率依赖离散的最大概率选择,不可导,无法直接提供有效梯度。
所以,训练大模型本质上是在不断调整参数,让真实文本中每个下一个 token 的条件概率更高。
面试官会怎么追问
-
「softmax 和交叉熵分别做什么?」 logits 是模型输出的未归一化分数,softmax 把它们转换成总和为 1 的概率分布。交叉熵再用真实 token 的位置评估这个分布,真实 token 概率越低,损失越大。
-
「为什么说交叉熵等价于最大化对数似然?」 对单个真实 token,交叉熵就是负的真实 token 概率的对数。最小化负对数概率,就等价于最大化真实 token 的对数概率;对整段文本求和或求平均,就是最大化整段数据的对数似然。
-
「perplexity 越低说明什么?」 困惑度是平均交叉熵取指数后的结果,因此交叉熵降低时,困惑度也会降低。它可以直观反映模型对真实 token 的平均不确定性,但不同词表、分词方式或数据集之间不能简单横向比较。
回答的坑
-
常见错误是说模型在直接最大化准确率,正确方向是说明它通过最小化交叉熵来提高真实下一个 token 的概率。
-
常见错误是把交叉熵说成两个向量做距离,正确方向是强调它衡量概率分布差异,并且对语言模型对应真实 token 的负对数概率。
同系列的题