关于binary / categorical crossentropy用法,参考:https://www.zhihu.com/question/36307214
1.定义
什么是binary crossentropy:
其中a是神经网络给出的预测值 , y是真实标签(0或1)
-----------------------------------------------------------------------------------------------------------------------------
什么是categorical crossentropy:
其中i是第i个样本, j 是第 j 个类 , t是真实标签,p是神经网络给出的第j个类的预测值
不理解的话看英文吧:
p are the predictions, t are the targets, i denotes the data point and j denotes the class.
2.用法
binary crossentropy:
常用于二分类问题,通常需要在网络的最后一层添加sigmoid进行配合使用
categorical crossentropy:
适用于多分类问题,并使用softmax作为输出层的激活函数的情况
3.为什么要用crossentropy
从三个角度去理解:
1.收敛性:
以binary crossentropy和用sigmoid的情况下为例.
使用MSE(均方误差) Loss时:
一通求导,最后的梯度为:
梯度里含有sigmoid的导数,由sigmoid的形状可知在稍微大点或稍微小点时,该项都很小,最终导致整个梯度都很小,收敛缓慢
而用binary crossentropy求出的梯度为:
里面不含sigmoid的导数项,收敛较快
2.最大似然
以binary crossentropy为例 , 在X事件发生的条件下,我们对Y=1事件发生的概率预测值为 。Y事件只有两种标签0和1,故有如下定义:
简单说明: Y=0时,
Y=1时,
又log函数是递增函数,故最大化等价于最大化 , 写稍专业点就是
而
我们想要P(Y|X)最大,也就是让 最小 ,最终形式为
这就是我们单个样本的损失函数。意思为第i个样本的损失。
我们有N个样本, 根据最大似然估计,我们的目标为
令
两边同时取log , 则
故我们的目标
再除以数量N,就是我们常见的binary crossentropy loss
3.熵
这里解释很好了,不再赘述:https://www.zhihu.com/question/65288314
PS: 附上一点关于对sigmoid和softmax的理解:
除了从导数角度上, sigmoid和softmax比较简洁,还有一些其他的理解:
比如softmax可以看成是sigmoid的扩充形式:https://www.zhihu.com/question/295247085/answer/711229736
softmax : https://zhuanlan.zhihu.com/p/45014864