交叉熵损失函数分类_理解交叉熵损失函数

前言

看了一些博客,什么BCE/CE/单标签多分类/多标签多分类。。。搞迷糊了。于是自己简单总结一下。

首先

首先我们可以先理解两种不同的任务目标:

1、“是不是”的问题。比如LR的输出概率,即是不是的问题。

2、“是哪个”的问题。比如多分类输出层标签的one-hot形式。

结论:

一些博客说CE只考虑了正向样本的损失而未考虑负类样本的损失(因为负类的标签是0),而BCE既考虑了正类样本的损失又考虑了负类样本的损失,这种说法是错误的。首先我们需要明确一点:一个合理的损失函数应该同时兼顾正类和负类样本,这样才能使模型很好地收敛。BCE和CE无疑都是合理的损失函数,只不过在应用的形式上有些差别,其本质是一致的。这种应用上的差异主要体现在类别标签的形式不同和应用场景的不同。

具体地:1、以逻辑回归和单输出的二分类神经网络为例,两种模型的最终输出结果都是sigmoid(z),训练数据的标签为0或1的形式。当一个正类训练样本输入时,根据BCE公式,当前样本的损失为-(1×log(y) + 0×log(1-y)),当一个负类样本输入训练时,根据公式,当前样本的损失为-(0×log(y) + 1×log(1-y)),这时因为模型的输出的意义始终是“输入的新样本的预测标签是1的概率”,属于“是不是”的问题。 对于同样的数据,以二分类神经网络为例,当数据标签的形式为{正:[1,0],负:[0,1]}时,模型的任务变成了“是哪个”的问题。直观地,当输出正类的训练样本时,根据CE的公式,模型的当前损失为两个输出单元的损失和,即-(1×log(y1) + 0×log(y2)),当输入的是负类样本时,数据标签为[0,1],则当前样本的计算损失为-(0×log(y1) + 1×log(y2))。因此CE和BCE没有本质上的区别。

2、应用场景的不同:

一句话概括,BCE应用在“是不是”问题上,CE应用在“是哪个”问题上。

举个特殊的例子:对于多标签多分类任务,比如一张含有猫和狗的图片p,标签集为【猫、猪、狗、牛】,则p的标签为[1,0,1,0],这时对于每一个维度都相当于一个“是不是”问题,因此可采用BCE。

此处又可以进一步联想到Word2vec中的层次Softmax的路径预测,也是具有相同道理。

一、理解熵、相对熵、交叉熵、CE和BCE

545b9df4f9f131eaa9368714384e6322.png

7409c0c22b8540e292b155653b5ccc60.png

4dac65b329634f22fc0ad188fa92f4b4.png

911707dcc32a7b9059e7ef38862065bc.png

81bcc4a88a1e3608a0efc3a977d3af8c.png

这里的交叉熵公式属于CE,也就是多类别的交叉熵损失函数公式。

二、BCE(顾名思义,二分类交叉熵损失函数)

8457188f3b489c921782cccc37603528.png

三、CE

c7e99064b45b20dc872da95ee06cb611.png

C表示输出层的类别数或单元数(one-hot形式的标签的维数)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值