大多数据集类别是不平衡的,可以通过调整损失函数的权重,来平衡各类别。
(1)神经网络每次训练过程中,给予不同的类别权重,选择最有的结果作为最优类别权重;但是这样花费的时间成本很高;因此可以通过如下策略进行训练:
1)首先训练不带权重的模型;
2)然后给予不同的类别权重参数,对网络进行微调,选取最优的权重参数;
(2)计算损失函数各类别权重的公式有:
假设有四类,对应类别数量为a,b,c,d
1)样本总数/(类别数量对应类别的个数);
例如:类别a的权重为:(a+b+c+d)/(4a)
2)对应类别的个数/总类别数:
例如:类别a的权重为:(a+b+c+d)/a
3)T= 对应类别个数/类别总数 T1=1/(log(k+T))
其中k为大于一的常数,如果k小于1,那么权重可能会出现负数,常数k可以保证样本比例适中,log能够有效的控制增长率,防止差别太大时比例过大的问题。
例如:类别a对用的权重为:T = a/(a+b+c+d) T1_weight = 1/(log(k+T))
(3) 设计损失函数来解决样本不平衡和难易样本不平衡问题
1)focal loss
2)GHM(从梯度的角度解决正负样本间数量差异和easy、hard examples之间的矛盾)