【知识建设】交叉熵损失

参考知乎文章对交叉熵损失的理解

先默写下交叉熵损失的公式:

l o g P ( y ∣ x ) = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) logP(y|x)=-ylog{\hat{y}}-(1-y)log(1-\hat{y}) logP(yx)=ylogy^(1y)log(1y^)

其中 y y y是真实值, y ^ \hat{y} y^是预测值

如何推导

首先从sigmoid函数说起:

g ( s ) = 1 1 + e − s g(s)=\frac{1}{1+e^{-s}} g(s)=1+es1
在这里插入图片描述
这个函数通常被用于神经网络的最后一层,作为输出前的最后一层,其中 s s s为倒数第二层的输出。因此 g ( s ) = P ( y ∣ x ) g(s)=P(y|x) g(s)=P(yx),其中 x x x为输入, y y y为输出

sigmoid函数的性质是: s = 0 s=0 s=0, g ( s ) = 0.5 g(s)=0.5 g(s)=0.5. s > > 0 s>>0 s>>0, g ( s ) ≈ 1 g(s)\approx1 g(s)1. s < < 0 s<<0 s<<0, g ( s ) ≈ 0 g(s)\approx0 g(s)0.

y ^ = P ( y = 1 ∣ x ) \hat{y}=P(y=1|x) y^=P(y=1x). 1 − y ^ = P ( y = 0 ∣ x ) 1-\hat{y}=P(y=0|x) 1y^=P(y=0x).

利用最大似然估计将上述两个式子合并(并不太懂是怎么合并的,在我的认知中,最大似然估计,是在已知分布表达式的情况下,通过样本和真实值反推模型参数的方法):

P ( y ∣ x ) = y ^ y ( 1 − y ^ ) 1 − y P(y|x)=\hat{y}^y(1-\hat{y})^{1-y} P(yx)=y^y(1y^)1y

同取对数得到:

l o g P ( y ∣ x ) = y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) logP(y|x)=ylog\hat{y}+(1-y)log(1-\hat{y}) logP(yx)=ylogy^+(1y)log(1y^)

对其取负得到:

L o s s = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) Loss=-ylog\hat{y}-(1-y)log(1-\hat{y}) Loss=ylogy^(1y)log(1y^)

第一种情况

分析上述式子, y = 1 y=1 y=1 L o s s = − l o g y ^ Loss=-log\hat{y} Loss=logy^,函数图像如下:
在这里插入图片描述
y ^ → 1 ( = = y ) \hat{y}\to1(==y) y^1(==y), L o s s → 0 Loss\to0 Loss0
y ^ → 0 ( ! = y ) \hat{y}\to0(!=y) y^0(!=y), L o s s → ∞ Loss\to\infty Loss
y ^ → 0 \hat{y}\to0 y^0的过程更加陡峭,代表惩罚更重

第二种情况

同样的,当 y = 0 y=0 y=0 L o s s = − l o g ( 1 − y ^ ) Loss=-log(1-\hat{y}) Loss=log(1y^),函数图像如下:
在这里插入图片描述
y ^ → 0 ( = = y ) \hat{y}\to0(==y) y^0(==y), L o s s → 0 Loss\to0 Loss0
y ^ → 1 ( ! = y ) \hat{y}\to1(!=y) y^1(!=y), L o s s → ∞ Loss\to\infty Loss
y ^ → 1 \hat{y}\to1 y^1的过程更加陡峭,代表惩罚更重

第三种情况

这里还有一种情形, y ! = 0 y!=0 y!=0 && y ! = 1 y!=1 y!=1. 在某些任务中,真值ground truth可能并不是绝对的正/负,比如在一些匹配任务中,可以对被匹配的对象进行proposal的划分,最后得到的是每个proposal与查询的匹配分数,而这些proposal与ground truth之间大概率不会完全的重合,因此就会proposal的真值 y y y可以用0~1之间的概率来衡量。

这种情况下,损失函数的两部分都不会消失,原函数变为 L o s s = − a l o g y ^ − b l o g ( 1 − y ^ ) Loss=-alog\hat{y}-blog(1-\hat{y}) Loss=alogy^blog(1y^), a = y a=y a=y, a + b = 1 a+b=1 a+b=1.
a = y = 0.3 a=y=0.3 a=y=0.3时,图像如下:
在这里插入图片描述
a = y = 0.5 a=y=0.5 a=y=0.5时,图像如下:
在这里插入图片描述
可以看到,当 y ^ \hat{y} y^越逼近于 y y y的值,损失值越小,且越远离 y y y的值,损失的增长速度越快。因此,符合损失的要求。

从交叉熵损失这里获得一点感悟,其实深度学习当前的学习率有很大的水分,比如我在做一个是否是猫的预测任务,假如 y = 1 y=1 y=1,只要我的预测值 y ^ > 0.5 \hat{y}>0.5 y^>0.5就都能够被视为预测正确,然而当 y ^ \hat{y} y^值较低的时候,不能说明深度模型的判别能力强。而交叉熵损失提供了解决这个问题的弊端,也就是交叉熵损失能够区分相同错误率的模型的优劣(具体之后再更新)。参考知乎文章

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值