Keras的binary / categorical crossentropy,以及对交叉熵的肤浅理解

关于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事件发生的概率预测值为\hat{Y} 。Y事件只有两种标签0和1,故有如下定义: 

P( Y|X) = \hat{Y}^Y * (1 -\hat{Y})^{1-Y} 

简单说明: Y=0时,P( Y|X) = \hat{Y}

                 Y=1时,  P( Y|X) =1 -\hat{Y}

又log函数是递增函数,故最大化P( Y|X)等价于最大化log(P( Y|X) ) , 写稍专业点就是argmax( P( Y|X) ) = argmax( log(P( Y|X) ) )

而 log( P( Y|X) ) = Y *log( \hat{Y}) + (1-Y) * log(1 -\hat{Y})

我们想要P(Y|X)最大,也就是让 -log( P( Y|X) ) 最小 ,最终形式为

L_y_i =argmin ( - Y *log( \hat{Y}) - (1-Y) * log(1 -\hat{Y}) )

这就是我们单个样本的损失函数。意思为第i个样本的损失。

我们有N个样本, 根据最大似然估计,我们的目标为

argmax ( P(Y_1|X_1) * P(Y_2|X_2) * P(Y_3|X_3) * ...P(Y_N|X_N) )

令 L = P(Y_1|X_1) * P(Y_2|X_2) * P(Y_3|X_3) * ...P(Y_N|X_N)

两边同时取log , 则

logL = \sum_{n=1}^Nlog(P(Y_n|X_n))= \sum_{n=1}^N(Y_n *log( \hat{Y_n}) + (1-Y_n) * log(1 -\hat{Y_n}) )

故我们的目标

argmax (L) = argmax (logL) = argmin(-logL)=-\sum_{n=1}^Nlog(P(Y_n|X_n))= -\sum_{n=1}^N(Y_n *log( \hat{Y_n}) + (1-Y_n) * log(1 -\hat{Y_n}) )

 

再除以数量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

                https://zhuanlan.zhihu.com/p/34404607

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值