Equalization Loss:长尾目标检测中的均衡损失.

Sigmoid交叉熵损失函数形式的Equalization Loss

在标准的Sigmoid交叉熵损失函数中,模型的对于真实类别的预测概率会接近$1$,其他类别的预测概率会接近$0$,但预测不同类别的结果之间并没有相关性:

\[\mathcal{L}_{\text{CE}}(\hat{y},y) = - \sum_{j=1}^{C} log(\hat{p}_{j}) \\ \hat{p}_{j} = \begin{cases} \hat{y}_{j}, \quad y_j=1 \\ 1-\hat{y}_{j}, \quad \text{others} \end{cases}\]

而预测类别是由Sigmoid函数计算的:$\hat{y}_{j}=\sigma (z_j)$。由此计算损失函数对于模型logit输出$z_j$的梯度值:

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

由上式可知,当预测类别是真实类别(对应$y_j=1$)时,梯度值会促进模型预测正确的类别;而对于其他类别(对应$y_j=0$),梯度值会抑制模型对这些类别的预测。

对某一个类别预测时,该类别被看作是前景,其余类别都被看作背景。对tail class对应的类别,只有当预测该类别时(数据占比很小)模型的训练才会促进该类别的预测;大多数情况下(即处理其他类别的数据时)模型预测该类别的能力会被抑制。

Equalization Loss通过对交叉熵损失函数增加一个权重,减小对tail class类别的抑制情况。损失函数计算如下:

\[\mathcal{L}_{\text{EQ}}(\hat{y},y) = - \sum_{j=1}^{C} w_j \cdot log(\hat{p}_{j})\]

其中权重设置如下:

\[w_j = 1-E(r)T_{\lambda}(f_j)(1-y_j)\]

$r$是目标检测提出的一个proposal region,当$r$是前景时$E(r)=1$,当$r$是背景时$E(r)=0$。$f_j$是类别$j$出现在数据集中的频率$\frac{n_j}{n}$。$T_{\lambda}(\cdot)$是一个门限函数,$\lambda$是人为选定的阈值,用于区分该类别是head还是tail类:

\[T_{\lambda}(x) = \begin{cases} 1, \quad x< \lambda \\ 0, \quad \text{others} \end{cases}\]

对该权重的理解如下。

Softmax交叉熵损失函数形式的Equalization Loss

在标准的Softmax交叉熵损失函数中,模型的类别预测概率是通过Softmax进行归一化计算得到的,不同类别的预测结果之间具有相关性:

\[\mathcal{L}_{\text{CE}}(\hat{y},y) = - \sum_{j=1}^{C} y_jlog(\hat{p}_{j}) \\ \hat{p}_{j} = \frac{e^{z_j}}{\sum_{k=1}^{C}e^{z_k}}\]

此时的Equalization Loss计算如下:

\[\mathcal{L}_{\text{EQ}}(\hat{y},y) = - \sum_{j=1}^{C} y_jlog(\tilde{p}_{j}) \\ \tilde{p}_{j} = \frac{e^{z_j}}{\sum_{k=1}^{C} \tilde{w}_k e^{z_k}}\]

其中权重设置如下:

\[\tilde{w}_k= 1-\beta T_{\lambda}(f_k)(1-y_k)\]

其中$\beta$是额外引入的超参数。由于使用Softmax函数,不再考虑背景这一类,因此没有使用$E(r)$函数。