交叉熵损失函数的理解

转载自:https://blog.csdn.net/red_stone1/article/details/80735068

交叉熵损失函数的公式:

1、交叉熵损失函数的原理

我们知道,在二分类问题模型:例如逻辑回归、神经网络等,真实样本的标签为[0, 1],分别表示负类和正类。模型的最后通常会经过一个sigmoid函数,输出一个概率值,这个概率值反映了预测为正类的可能性:概率越大,可能性越大。sigmoid函数表达式和图形如下所示:

交叉熵损失函数的理解_第1张图片

其中s是模型上一层的输出,sigmoid函数有这样的特点:s = 0 时,g(s) = 0.5; s >> 0 时,g ≈ 1,s << 0 时,g ≈ 0。显然,g(s) 将前一级的线性输出映射到[0, 1]之间的数值概率上,这里g(s)就是交叉熵公式中的模型预测输出。

预测输出即sigmoid函数的输出表征了当前样本标签为1的概率:

当前样本标签为 0 的概率就可以表达成:

如果我们从极大似然的角度出发,把上面两种情况整合到一起:

当真实样本标签 y = 0 时,上面式子第一项就为1,概率等式转化为:

当真实样本标签 y = 1 时,上面式子第二项就为1,概率等式转化为:

两种情况下概率表达式跟之前的完全一致,只不过把两种情况整合在一起了。

重点看一下整合之后的概率表达式,我们希望的是概率P(y|x)越大越好(y等于0或者1都会使P = 1, 概率为1最大,不想让P称为成为中间的值)。首先,我们对P(y|x)引入log函数,因为log运算并不会影响函数本身的单调性。则有:

我们希望logP(y|x)越大越好,反过来,只要logP(y|x)的负值-logP(y|x)越小就行了。那我们就可以引入损失函数,且令Loss = -logP(y|x)即可。则得到损失函数为:

我们已经推导出了单个样本的损失函数,如果计算N个样本的损失函数,只要将N个Loss叠加起来就可以了:

这样,我们已经完整地实现了交叉熵损失函数的推导过程。

 

你可能感兴趣的:(深度学习)