自学内容网 自学内容网

【AI知识点】负对数似然损失函数(Negative Log-Likelihood Loss,NLL)

负对数似然损失函数(Negative Log-Likelihood Loss,NLL) 是机器学习,尤其是分类问题中常用的一种损失函数。它用于衡量模型预测的概率分布与真实标签之间的差异。负对数似然损失函数的目标是最大化正确类别的预测概率,同时最小化错误类别的预测概率。

基本概念

我们从对数似然(log-likelihood) 开始理解。假设模型的输出是一个概率分布,用于预测某个样本属于不同类别的概率。对于每个样本,真实标签表示其所属的正确类别。对数似然计算的是模型给正确类别分配的概率。如果模型给正确类别分配的概率越高,则模型的预测越好。

然而,我们不希望最大化似然,而是最小化损失。为此,我们使用负对数似然,通过将对数似然加上负号,使得模型最大化正确类别的概率时,负对数似然损失最小。

数学表达

假设我们有一个分类问题,输入的样本 x x x 属于类别 y y y,且模型的输出是对不同类别的概率预测。对于样本 x x x,模型的输出概率分布记为 P ( y ∣ x ) P(y|x) P(yx),即给定样本 x x x,预测其属于类别 y y y 的概率。

模型的目标是尽量给真实标签(即类别 y y y)赋予高的概率。负对数似然损失的数学表达如下:

L = − log ⁡ P ( y ∣ x ) L = - \log P(y|x) L=logP(yx)

其中:

  • P ( y ∣ x ) P(y|x) P(yx) 是模型预测的样本 x x x 属于类别 y y y 的概率。
  • − log ⁡ P ( y ∣ x ) -\log P(y|x) logP(yx) 是该概率的负对数。

当模型给出正确的高概率时, P ( y ∣ x ) P(y|x) P(yx) 接近1,此时 − log ⁡ P ( y ∣ x ) -\log P(y|x) logP(yx) 接近0,意味着损失较小;而如果模型给出的概率较低, P ( y ∣ x ) P(y|x) P(yx) 接近0, − log ⁡ P ( y ∣ x ) -\log P(y|x) logP(yx) 会趋向于无穷大,意味着损失非常大。

多分类场景下的负对数似然

在多分类问题中,模型的输出是一组概率分布,这组概率分布表示每个类别的预测概率。假设有 C C C 个类别,模型的输出为每个类别的预测概率 P ( y i ∣ x ) P(y_i|x) P(yix),其中 i = 1 , 2 , … , C i=1,2,\dots,C i=1,2,,C。对于多分类问题,负对数似然损失函数可以写为:

L = − ∑ i = 1 C y i log ⁡ P ( y i ∣ x ) L = - \sum_{i=1}^{C} y_i \log P(y_i|x) L=i=1CyilogP(yix)

其中:

  • y i y_i yi 是真实类别的指示变量(one-hot encoding),如果样本 x x x 属于类别 i i i,则 y i = 1 y_i = 1 yi=1,否则 y i = 0 y_i = 0 yi=0
  • P ( y i ∣ x ) P(y_i|x) P(yix) 是模型预测样本 x x x 属于类别 i i i 的概率。

因为在真实标签下,只有对应的 y i y_i yi 为1,其它类别的 y i y_i yi 都为0,所以最终损失只依赖于正确类别的预测概率,即:

L = − log ⁡ P ( y true ∣ x ) L = - \log P(y_{\text{true}}|x) L=logP(ytruex)

这意味着,我们只关心模型对真实类别的预测概率,并通过最小化这个损失来训练模型。

用通俗的语言解释

假设你在玩一个猜谜游戏,问题是“苹果是什么颜色?”,而你有三个选项:“红色”、“蓝色”、“绿色”。你的任务是尽可能准确地猜出答案(显然答案是“红色”)。

在训练模型时,系统会给每个选项分配一个概率值,表示模型认为这个选项为正确答案的概率。假设模型的输出是这样的概率分布:

  • 红色:0.7
  • 蓝色:0.2
  • 绿色:0.1

这个时候,系统希望最大化“红色”这一选项的概率,因为“红色”是正确答案。如果模型给正确答案“红色”分配的概率很高,系统就很开心,认为模型表现很好。这时损失函数的值会很低。

而负对数似然损失函数的工作方式是:当模型给“红色”(正确答案)分配高概率时,它会惩罚得少(损失小);但如果模型把高概率分配给错误答案,比如给“蓝色”分配了0.7,而给“红色”分配了0.2,那损失就会很大,表示模型犯了大错误。

应用举例:在DPR中的应用

在DPR(Dense Passage Retriever 稠密段落检索)中,负对数似然损失函数被用来优化模型的检索性能。对于每一个问题,DPR希望模型能找到与问题最相关的正样本段落,同时排除那些不相关的负样本。损失函数的目标就是让模型尽量提高正样本的相似度分数,并降低负样本的相似度分数。

具体地,DPR会计算问题与所有段落的相似性分数,其中:

  • 正样本的相似度分数应尽量高;
  • 负样本的相似度分数应尽量低。

具体损失函数为:

L ( q i , p i + , p i , 1 − , … , p i , n − ) = − log ⁡ e s i m ( q i , p i + ) e s i m ( q i , p i + ) + ∑ j = 1 n e s i m ( q i , p i , j − ) L(q_i, p_i^+, p_{i,1}^-, \dots, p_{i,n}^-) = - \log \frac{e^{sim(q_i, p_i^+)}}{e^{sim(q_i, p_i^+)} + \sum_{j=1}^{n} e^{sim(q_i, p_{i,j}^-)}} L(qi,pi+,pi,1,,pi,n)=logesim(qi,pi+)+j=1nesim(qi,pi,j)esim(qi,pi+)

这里:

  • s i m ( q i , p i + ) sim(q_i, p_i^+) sim(qi,pi+) 表示问题 q i q_i qi 与正样本段落 p i + p_i^+ pi+ 的相似度。
  • s i m ( q i , p i , j − ) sim(q_i, p_{i,j}^-) sim(qi,pi,j) 表示问题 q i q_i qi 与负样本段落 p i , j − p_{i,j}^- pi,j 的相似度。

负对数似然损失函数通过对正样本的相似性进行负对数运算,迫使模型在训练过程中学会区分正负样本。这样,模型在面对新问题时,能够更有效地找到与问题最相关的段落。

总结

负对数似然损失函数是分类任务中的常用损失函数,目标是最大化模型对正确类别的预测概率。


原文地址:https://blog.csdn.net/weixin_43221845/article/details/142671302

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!