Equalization Loss v2:通过梯度引导重加权机制解决目标检测的正负梯度不平衡问题.

作者认为,长尾目标检测中的主要问题是正负梯度不平衡问题。对于具有$C$个类别的样本集$\mathcal{I}$,从中任取样本$i$,若样本$i$属于类别$j$,其标签$y^i$为one-hot向量,则它对于类别$j$的预测任务是正样本,对于其他类别的预测任务是负样本。则对于类别$j$的预测任务,其正负样本的数量计算为:

\[m_j^{pos} = \sum_{i \in \mathcal{I}}^{} y_j^i, \quad m_j^{neg} = \sum_{i \in \mathcal{I}}^{} (1-y_j^i)\]

对于类别$j$的预测任务,其正负样本比例为:

\[\frac{\Bbb{E}|m_j^{pos}|}{\Bbb{E}|m_j^{neg}|} = \frac{1}{\frac{N}{n_j}-1}\]

上式表明对于类别$j$的预测任务,其正负样本比例差异非常大。当类别$j$是tail类别时,有$\Bbb{E}|m_j^{pos}|$«$\Bbb{E}|m_j^{neg}|$,比例将更加失衡。正样本会为类别$j$的预测任务带来正梯度,负样本会为其带来负梯度。以Sigmoid函数为例,损失函数对于模型logit输出$z_j$的梯度值:

\[\frac{\partial \mathcal{L}_{\text{CE}}}{\partial z_j} = \frac{\partial \mathcal{L}_{\text{CE}}}{\partial p_{j}} \frac{\partial p_{j}}{\partial z_j} = \begin{cases} p_{j}-1, \quad y_j=1 \\ p_{j}, \quad \text{others} \end{cases}\]

由此可写出输出$z_j$对应的在样本集$\mathcal{I}$上累积的正梯度和负梯度:

\[\nabla_{z_j}^{pos}(\mathcal{L})=\frac{1}{\mathcal{I}} \sum_{i \in \mathcal{I}}^{} y_j^i(p_j^i-1)\] \[\nabla_{z_j}^{neg}(\mathcal{L})=\frac{1}{\mathcal{I}} \sum_{i \in \mathcal{I}}^{} (1-y_j^i)p_j^i\]

为解决正负梯度不平衡问题,作者提出了梯度引导重加权机制(gradient guided reweighing mechanism),即在每轮梯度更新中,根据累计正负梯度比,放大正梯度,缩小负梯度。定义在第$t$轮中对于类别$j$的累计正负梯度比为$g_j^{(t)}$,将正梯度的权重$q_j^{(t)}$和负梯度的权重$r_j^{(t)}$设置为:

\[q_j^{(t)}=1+\alpha(1-f(g_j^{(t)})), \quad r_j^{(t)} = f(g_j^{(t)})\]

其中映射函数$f(x)=\frac{1}{1+e^{-\gamma(x-\mu)}}$。在第$t$轮,为正负梯度重新加权为:

\[\nabla_{z_j}^{pos'}(\mathcal{L}^{(t)}) = q_j^{(t)} \nabla_{z_j}^{pos}(\mathcal{L}^{(t)})\] \[\nabla_{z_j}^{neg'}(\mathcal{L}^{(t)}) = r_j^{(t)} \nabla_{z_j}^{neg}(\mathcal{L}^{(t)})\]

最后更新累计正负梯度比:

\[g_j^{(t+1)} = \frac{\sum_{0}^{t}|\nabla_{z_j}^{pos'}(\mathcal{L}^{(t)})|}{\sum_{0}^{t}|\nabla_{z_j}^{neg'}(\mathcal{L}^{(t)})|}\]

实验表明该方法超过了之前的所有方法,能够更好地处理长尾分布数据集:

绘制所有类别的梯度比,发现应用该方法后正负梯度不平衡问题明显缓解: