两种交叉熵损失函数的异同

在学习机器学习的时候,我们会看到两个长的不一样的交叉熵损失函数。
假设我们现在有一个样本 { x , t } \{ x,t\} {x,t},这两种损失函数分别是。

  • − t j log ( y j ) -t_j\text{log}(y_j) tjlog(yj)t_j说明样本的ground-truth是第j类。

  • − ∑ i t i log ( y i ) + ( 1 − t i ) log ( 1 − y i ) -\sum_it_i\text{log}(y_i)+(1-t_i)\text{log}(1-y_i) itilog(yi)+(1ti)log(1yi)

这两个都是交叉熵损失函数,但是看起来长的却有天壤之别。为什么同是交叉熵损失函数,长的却不一样呢?

因为这两个交叉熵损失函数对应不同的最后一层的输出。第一个对应的最后一层是softmax,第二个对应的最后一层是sigmoid。

如果看到这个答案就明白了的话,就没必要往下看了,如果感觉云里雾里的话,请听细细分解。

首先来看信息论中交叉熵的定义:
− ∫ p ( x ) log g ( x ) d x -\int p(x)\text{log}g(x)dx p(x)logg(x)dx
交叉熵是用来描述两个分布的距离的,神经网络训练的目的就是使 g ( x ) g(x) g(x) 逼近 p ( x ) p(x) p(x)

现在来看softmax作为最后一层的情况。 g ( x ) g(x) g(x)是什么呢?就是最后一层的输出 y y y p ( x ) p(x) p(x)是什么呢?就是我们的one-hot标签。我们带入交叉熵的定义中算一下,就会得到第一个式子:
− t j log ( y j ) -t_j\text{log}(y_j) tjlog(yj)

  • j j j : 样本 x x x属于第 j j j类。

再来看sigmoid作为最后一层的情况。sigmoid作为最后一层输出的话,那就不能把最后一层的输出看作成一个分布了,因为加起来不为1。现在应该将最后一层的每个神经元看作一个分布,对应的 t a r g e t target target 属于二项分布(target的值代表是这个类的概率),那么第 i i i 个神经元交叉熵为: t i log ( y i ) + ( 1 − t i ) log ( 1 − y i ) t_i\text{log}(y_i)+(1-t_i)\text{log}(1-y_i) tilog(yi)+(1ti)log(1yi),所以最后一层总的交叉熵损失函数是 − ∑ i t i log ( y i ) + ( 1 − t i ) log ( 1 − y i ) -\sum_it_i\text{log}(y_i)+(1-t_i)\text{log}(1-y_i) itilog(yi)+(1ti)log(1yi)

解释完了,最后总结一下:这两个长的不一样的交叉熵损失函数实际上是对应的不同的输出层。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值