神经网络-分类任务损失函数

1.交叉熵损失Cross Entropy Loss

交叉熵主要是用来判定实际的输出与期望的输出的接近程度,也就是交叉熵的值越小,两个概率分布就越接近。

1.1.交叉熵损失表达式

交叉熵损失函数在多分类的问题中的表达式:在这里插入图片描述
其中:

  • M:类别的数量
  • yc 指示变量(0或1),如果该类别和样本的类别相同就是1,否则是0;
  • pc :对于观测样本属于类别C的预测概率。
    通常来说,交叉熵损失函数还有另外一种表达形式,对于N个样本:

1.2.交叉熵损失函数的直观理解

首先来看单个样本的交叉熵损失函数:

当真实模型y = 1 时:

损失函数的图像:
横坐标是预测输出,纵坐标是交叉熵损失函数 L。显然,预测输出越接近真实样本标签 1,损失函数 L 越小;预测输出越接近 0,L 越大。因此,函数的变化趋势完全符合实际需要的情况。
当 y = 0 时

损失函数的图像:

同样,预测输出越接近真实样本标签 0,损失函数 L 越小;预测函数越接近 1,L 越大。函数的变化趋势也完全符合实际需要的情况。
无论真实样本标签 y 是 0 还是 1,L 都表征了预测输出与 y 的差距。

1.3.优缺点

从图形中我们可以发现:预测输出与 y 差得越多,L 的值越大,也就是说对当前模型的 “ 惩罚 ” 越大,而且是非线性增大,是一种类似指数增长的级别。这是由 log 函数本身的特性所决定的。这样的好处是模型会倾向于让预测输出更接近真实样本标签 y。
使用逻辑函数得到概率,并结合交叉熵当损失函数时,当模型效果差的时,学习速度较快,模型效果好时,学习速度会变慢。
采用了类间竞争机制,比较擅长于学习类间的信息,但是只关心对于正确标签预测概率的准确性,而忽略了其他非正确标签的差异,从而导致学习到的特征比较散。
交叉熵对于所有的样本损失的权值是一样的,在一些样本不均衡的情况下,训练的结果可能不理想。例如在一些正样本非常少的情况下,模型会被“带偏”,把所有的输入都预测为0(因为这样损失会比较小,例如正样本只有10%时,即使所有输出都为0,正确率仍有90%),这样模型就失去了意义。

2.Focal Loss

为了解决训练数据中正负样本不平衡问题,Focal loss的思路就是给损失加上权值,使当模型对样本的判断错误时,损失的权重更大,从而增加”困难样本“对模型的影响

2.1.Focal Loss基本表达式

Focal loss对交叉熵加上权重,得到如下形式:

2.2.Focal Loss深层理解

当样本为正样本时(y=1),预测值y’越小(错的越离谱),所得到的损失权重 (1-y’)^γ 越大(γ一般取2)。同样的,当样本为负时(y=0),预测值越大(错的越离谱),损失权重y’γ 越大。为了平衡正负样本,还可以在权重前面加上平衡因子α(经验值为0.25):
只添加α虽然可以平衡正负样本的重要性,但是无法解决简单与困难样本的问题。
γ调节简单样本权重降低的速率,当γ为0时即为交叉熵损失函数,当γ增加时,调整因子的影响也在增加。
实验中γ=2,a=0.25的效果最好

3.Dice Loss

dice loss 来自文章VNet(V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation),旨在应对语义分割中正负样本强烈不平衡的场景。

3.1.Dice Loss定义

dice loss 来自 dice coefficient,是一种用于评估两个样本的相似性的度量函数,取值范围在0到1之间,取值越大表示越相似。dice coefficient定义如下:

其中 |X∩Y| 是X和Y之间的交集,|X|和|Y|分表表示X和Y的元素的个数,其中,分子的系数为2,是因为分母存在重复计算X和Y之间的共同元素的原因。
Dice Loss的定义为:

3.2.Dice Loss计算

考虑通用的实现方式来表达,
dice loss 有以下几种形式:
形式一形式二:原论文形式
U为加平方和:
、
I的计算如下

其中yi为网络预测值,是经过sigmoid或softmax的值,取值在之间。ti为target值,取值非0即1。
ε为一个极小的数,一般称为平滑系数,有两个作用:

  • 防止分母预测为0。值得说明的是,一般分割网络输出经过sigmoid 或 softmax,是不存在输出为绝对0的情况。这里加平滑系数主要防止一些极端情况,输出位数太小而导致编译器丢失数位的情况。
  • 平滑系数可以起到平滑loss和梯度的操作。

3.2.Dice Loss深度解读

3.2.1.Dice Loss与F1 score

对于二分类问题,一般预测值分为以下几种:

  • TP: true positive,真阳性,预测是阳性,预测对了,实际也是正例。
  • TN: true negative,真阴性,预测是阴性,预测对了,实际也是负例。
  • FP: false positive,假阳性,预测是阳性,预测错了,实际是负例。
  • FN: false negative,假阴性,预测是阴性,预测错了,实际是正例。

    这里dice coefficient可以写成如下形式:

    而我们知道:
    可见dice coefficient是等同「F1 score」,直观上dice coefficient是计算X与Y的相似性,本质上则同时隐含precision和recall两个指标。可见dice loss是直接优化「F1 score」。

3.2.2.dice loss为何能够解决正负样本不平衡问题?

因为dice loss是一个区域相关的loss。区域相关的意思就是,当前像素的loss不光和当前像素的预测值相关,和其他点的值也相关。dice loss的求交的形式可以理解为mask掩码操作,因此不管图片有多大,固定大小的正样本的区域计算的loss是一样的,对网络起到的监督贡献不会随着图片的大小而变化。从上图可视化也发现,训练更倾向于挖掘前景区域,正负样本不平衡的情况就是前景占比较小。而ce loss 会公平处理正负样本,当出现正样本占比较小时,就会被更多的负样本淹没。

3.2.3.dice loss 为何训练会很不稳定?

在使用dice loss时,一般正样本为小目标时会产生严重的震荡。因为在只有前景和背景的情况下,小目标一旦有部分像素预测错误,那么就会导致loss值大幅度的变动,从而导致梯度变化剧烈。可以假设极端情况,只有一个像素为正样本,如果该像素预测正确了,不管其他像素预测如何,loss 就接近0,预测错误了,loss 接近1。而对于ce loss,loss的值是总体求平均的,更多会依赖负样本的地方。
因此也有一些改进操作,主要是结合ce loss等改进,比如: dice+ce loss,dice + focal loss等,本文不再论述。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值