交叉熵损失函数在LLM中的应用
一句话总结
交叉熵损失衡量模型预测的概率分布与真实分布之间的差距,是LLM预训练中最核心的优化目标——让模型尽可能准确地预测下一个Token。
核心概念
对于下一个Token预测任务,真实标签是one-hot向量(正确Token概率为1,其余为0)。交叉熵损失H(p,q)=-Σp(x)log(q(x))简化为-log(q(y_true)),即模型给正确Token分配的概率取负对数。如果模型对正确Token预测概率为0.9,损失为-log(0.9)≈0.105;概率为0.1,损失为-log(0.1)≈2.303。整个序列的损失是所有位置损失的平均值。最小化交叉熵等价于最大化对数似然,也等价于最小化模型分布与真实数据分布的KL散度。
为什么重要
交叉熵是几乎所有LLM预训练的唯一损失函数。它的优良数学性质包括:凸性保证了优化的可行性,梯度形式简洁(softmax输出减去one-hot标签),且与信息论中的不确定性度量直接对应。训练损失曲线(loss curve)是判断模型是否正常训练的最重要指标。
实践要点
注意padding Token不应参与损失计算,需要用mask过滤;训练中loss突然飙升通常是学习率过大或数据异常的信号;label smoothing将one-hot标签软化为(1-ε, ε/(V-1)),可以防止模型过度自信;对于SFT阶段,通常只计算回答部分的损失,忽略指令部分。
常见误区
误区一:loss越低模型越好——过低的loss可能意味着过拟合训练数据。误区二:loss的绝对值有固定意义——loss的合理范围取决于词表大小,随机初始化时loss应接近ln(V)。误区三:所有Token的损失同等重要——实际上不同位置的Token难度差异很大,有研究探索了加权损失策略。