完整题目
均方误差(MSE)与交叉熵损失函数在数学定义、适用任务和梯度特性上有何本质区别?为什么在大语言模型的预训练和微调中普遍采用交叉熵而非MSE作为损失函数?
数学目标与梯度不同
MSE 定义为 L=(1/n)Σ(ŷ-y)²,适合连续回归,在固定同方差 Gaussian 条件模型下对应最大似然和条件均值。分类若把 sigmoid 概率 p 与标签 y 代入 MSE,则 dL/dp=2(p-y),而 p=σ(z) 时 dL/dz=2(p-y)p(1-p)。不能把对概率和对 logit 的导数混写。
二分类交叉熵为 L=-[y log p+(1-y)log(1-p)],与 sigmoid 合并后 dL/dz=p-y。多分类 softmax 交叉熵对 logit 的梯度同样是 p-y_onehot。交叉熵的优势不是“从不衰减”,正确且高置信样本的梯度本来就会趋近零;关键是自信错误时不会像 MSE 那样再额外乘一个饱和的 p(1-p)。
语言模型的下一个 token 是词表上的离散类别,交叉熵等价于最大化观测 token 的条件对数似然,能够直接训练完整类别分布。把 one-hot token 当连续向量做 MSE 会引入不合适的几何和饱和梯度。蒸馏可使用软目标交叉熵或 KL,回归价值、embedding 或连续属性时仍可使用 MSE。
图解
继续追问 · 3 个问题
- 如果一定要用MSE训练语言模型,可能会出现什么问题?
- 交叉熵与KL散度的关系是什么?
- 在扩散模型中为什么可以用MSE来预测噪声?
换一种问法,检查是否真正理解
场景切入
假设你在做电商的智能客服,需要预测用户下一句会问什么,比如从‘退货流程’里推测‘运费谁出’。你觉得用MSE还是交叉熵来训练这个分类模型?为什么交叉熵更常用?
层层追问
你训练分类模型时一般用什么损失函数?……那为什么不用MSE呢?……对于大语言模型的next token prediction,MSE的梯度有什么问题?……所以交叉熵的优势在哪?