长尾分布是如何影响目标检测最终分类的--读EQL Loss有感

以下仅代表个人的一些看法和感悟,如有错误,欢迎提出,一定感激不尽!

EQL Loss

最近才刚开始认真阅读《Equalization Loss for Long-Tailed Object Recognition》这篇文献,但是发现自己基础知识太薄弱,所以尽力去弥补,也算是亡羊补牢吧。

反向传播

个人的理解神经网络在进行参数更新的过程,是梯度下降法在神经网络的具体实现。比如一个分类网络,最终LOSS再进行反向传播的时候,是对输入的每一个维度都进行计算梯度,也就是说对全连接层中的矩阵W的所有的参数都要更新一遍。

交叉熵求导公式

在这里插入图片描述
可以看出在对输入的特征进行求导的时候,是对输入特征的每一个维度zj都进行求导,然后根据所对应的GT值,判断导数值为pj-1,还是pj。即在长尾分布情况下,如果输入的一个类别是a类,那么在求导的时候,会对不属于a类的其它类(例如b类)施加一个抑制梯度,抑制b类别,使分类器对b类输出较低的预测值。
假设现在带入到长尾分布的问题中,假设b类是一个尾部类,那么可想而知,分类器输入的情况大多数都是头部类,所以每当一个头部类样本送进来之后,然后根据LOSS进行反向传播,这时会对尾部类b类产生一个抑制梯度,那么可能这个抑制梯度很小,但是头部类的样本数多,所以累计起来之后就会对稀有类的预测产生影响。另外对于尾部类别b,头部类的样本对b来说都是负样本。

对EQL的理解(个人理解)

首先是公式:
在这里插入图片描述
主要的改进是添加了一个权重wj。
在这里插入图片描述

如果输入的区域是背景,那Er等于0,LOSS还是正常的交叉熵。
如果输入的区域是前景,那Er等于1。

在这里插入图片描述
这个参数就是用来判断是头部类还是尾部类。
如果是头部类则为0,LOSS还是交叉熵。
如果是尾部类则为,此时的权重wj变为yj,也就是说只有标签值为1的情况下,才计算LOSS。

就比如首先判断前景背景。然后再看是头部类还是尾部类,如果是头部类则还是交叉熵,如果是尾部类,那么则在计算LOSS的时候只对标签值为1的进行计算。
如果当前输入的是一个头部类,计算LOSS时,LOSS里面没有尾部类的那一部分,也就不会对尾部类产生抑制梯度。
如果当前输入的是一个尾部类,计算LOSS时,对于那些是头部类的正常计算,然后在尾部类别中,只有当前输入的这个类别参与LOSS计算,其他尾部类都不参与LOSS计算,因为wj=yj=0;即也不会对其他尾部类产生抑制梯度。
(以上纯个人理解,如有错误,真的欢迎指正!!!感谢!)

你可能感兴趣的:(计算机视觉,机器学习,目标检测,分类)