github:https://github.com/vandit15/Class-balanced-loss-pytorch/blob/master/class_balanced_loss.py
本文用于解决样本类别不平衡问题, 尤其是数据是长尾分布的情况.
本文核心概念为, 有效采样数.En
那么某一类别有效采样数多, 起loss权重应该小, 即和En成反比,
所以类别权重只要乘以En的倒数即可, 可以和各种已有的loss结合, 其中beta为样本的数目, ny为第n次采样数目
核心:怎么得到En
1.某一类别所有数据量为N, 在采样新的数据时, 有可能和已经采样的包含, 也有可能不包含, (为简化, 不考虑相交)如下图, 作者假设有些采样数据, 就是最后采样的体积, 上界为N.
2.作者假设random crop, sclae,等数据增强后的数据等价于原始数据
假设采样了n-1个样本后, 的有效样本数为En-1, 那么第n次采样为包含关系的概率p为En-1/N, 非包含为1-p
那么可得下式:, 再利用数学归纳法可以证明出来, 所以beta=(N-1)/N