美文网首页
类别不平衡分类问题和FocalLoss详解

类别不平衡分类问题和FocalLoss详解

作者: blacksmith_wu | 来源:发表于2020-01-10 16:55 被阅读0次

    1.类别不平衡问题

    一份给定的数据集中,可能出现类别不平衡,即某种类型的数量特别少,以我现在做的二分类项目为例, 训练集类别为NG数量为12000, OK1600张,相差较多.

    存在的问题:

    模型对NG的学习较多,所以对NG的识别能力很强,Ok的识别能力很弱

    2.FocalLoss损失函数:

    2.1 二分类交叉损失函数:

    这里的y表示标签,y' 表示预测此样本为1的概率p,或者说为正例的概率p.

    其实对于二分类问题的类型不同,会导致最后使用的激活函数不同,交叉熵的计算方法也不一样.

    这里的激活函数的选择导致了两种计算方式:

    假设一个二分类问题,神经网络的最后一层输出有两个结果,最后需要再加一层激活函数-- sigmoid函数或者softmax函数:

    2.1.1 sigmoid层作为输出的交叉熵:

    sigmoid一般用来处理多标签分类问题,比如在多标签二分类问题里,一张图片既可能是A,也可能是B,也可能都是, 怎么判别?sigmoid的每个输出值与某个阈值比较,概率大于那个阈值,就可以判别为那一类.

    作为最后一层的输出,两个输出值加起来不等于1,那么这时候的二分类其实指的是对单个类别的二分类,即是是否为A.另一个输出用来判断是否为B,这两个值的处理是相互独立的,不相斥的.

    所有这个时候的分类交叉损失熵如何计算呢?其实应该计算每个神经元的二分类交叉损失熵,然后相加.

    ti为单个神经元为正例的概率

    比如最后一层sigmoid层的输出是[0.7, 0.8], 表示预测是A的概率是0.7, 是B的概率为0.8,  label为[1, 0],表示此样本是A且不是B

    第一个神经元的交叉熵:  -1*log(0.7)

    第二个神经元的交叉熵: -(1-0)*log(1-0.8)

    总的交叉熵就是-log(0.7)-log(1-0.8)

    2.1.2 softmax层作为输出的交叉熵:

    softmax一般用来处理单标签分类问题,同样拿二分类问题举例子,如果是单标签分类问题,那么最后一层就应该使用softmax,这时候两个结果是互斥的,输出值加起来为1.

    这时候的计算公式是:

    同样加入最后一层的输出为[0.35, 0.65], label为[1], 表示预测是A的概率是0.35, 预测是B的概率是0.65, 但实际上是A

    交叉熵:  -1*log(0.35)

    2.2 类别不平衡在二分类交叉损失函数中的问题

    二分类交叉损失函数会带来什么问题呢,我们先改写一下形式,y'改写程概率p,以单标签二分类问题为例

    其中

    所以二分类交叉损失函数最简单的形式就是:

    可见普通的交叉熵而言,输出概率pt越大损失越小。符合预测越准,损失越小的原则

    什么是简单样本:?什么是困难样本?就是预测值pt较大的的那些样本

    两个问题:

    1.如果某类型的样本占比较大,数量少的样本产生的loss较少,

    2.而且简单样本比较多,就会导致困难样本产生的loss值占比较少,

    负样本数量太大,占总的loss函数输入参数的大部分,而且多是容易分类的,因此使得模型的优化方向(即loss函数的梯度下降方向)并不是我们所希望的那样。

    2.3 FocalLoss:

    由此提出Focal loss函数:

    首先在原有的基础上加了一个因子,其中Gamma>0使得减少易分类样本的损失,使得模型更关注于困难的、错分的样本。

    例如:Gamma为2时,对于正类样本而言,预测结果为0.95肯定是简单样本,所以(1-0.95)的gamma次方就会很小,这时损失函数值就变得更小。而预测概率为0.3的样本其损失相对很大。对于负类样本而言同样,预测0.1的结果应当远比预测0.7的样本损失值要小得多。对于预测概率为0.5时,损失只减少了0.25倍。所以更加关注于这种难以区分的样本。这样减少了简单样本的影响,大量预测概率很小的样本叠加起来后的效应才可能比较有效。

    换个形式看更清晰:

    显然,样本越易分,pt越大,则贡献的loss就越小,相对来说,难分样本所占的比重就会变大.

    在此基础上,再引入一个平衡因子 Alpha,用来平衡正负样本本身的数量比例不均(即类别不均衡):

    我们为交叉熵分配一个权重,其中权重因子的大小一般为相反类的比重。即负样本不是多吗,它越多,我们给它的权重越小。这样就可以降低负样本的影响。

    只添加Alpha虽然可以平衡正负样本的重要性,但是无法解决简单与困难样本的问题,因此针对难分样本的Gamma也必不可少。

    相关文章

      网友评论

          本文标题:类别不平衡分类问题和FocalLoss详解

          本文链接:https://www.haomeiwen.com/subject/ijhmactx.html