Title:Self-Supervised Aggregation of Diverse Experts for Test-Agnostic Long-Tailed Recognition
1 概览
-
针对问题:test-agnostic long-tailed recognition
- 一般假设测试集类别分布是平衡的,然而现实中的测试类别分布经常违背这个假设(可能是长尾甚至是逆长尾的)
- 逆长尾分布中效果普遍很差:
-
提出方法:多样化专家的自监督聚合Self-supervised Aggregation of Diverse Experts
- 一个可以test-time自适应的多专家聚合方案 ,以应对未知的测试类分布
- 分治地使用不同的类分布来训练具有不同特长(应对不同测试分布)的专家
-
提出一个新问题:Test-agnostic Long-tailed Recognition
两个挑战:
1. 如何用一个单一且平稳的长尾数据集训练出多样性的专家?
- 基于一个发现【使用的损失函数与学习到的类分布有模拟相关性】
- 也就是通过不同损失函数学到的模型能够熟练处理不同的目标类分布
- 得到方法:使用不同的专家指导损失函数对不同专家进行训练
2. 如何对特长不同的专家进行集成?
- 基于一个发现【专家的专业性和预测稳定性之间存在正相关】
- 提出了预测稳定性最大化的自监督策略(prediction stability maximization)
- 该方法可以最大化预测标记分布和真实分布的互信息
第一个自动适应未知的测试集分布偏移的方法,甚至效果好于已经知道测试集分布的LADE
2 相关领域
Test-time training
经常用于处理训练集与测试集的分布偏移问题。
3 详细方法
3.1 Skill-diverse Expert Learning
依据:见挑战一,由下表看出,softmax loss训练的模型擅长长尾测试分布,长尾方法训练的模型擅长平衡分布。
(1) forward expert使用softmax CE loss
(2) uniform expert使用balanced softmax loss
受logit调整损失对长尾识别的有效性启发
The balanced softmax adjusts the prediction probability by compensating for the long-tailed class distribution with the prior of training label frequencies
其中,π表示类频繁系数,基数大的类对应的πk更接近1.
(3) backward expert使用inverse softmax loss
在balanced softmax loss调整logit到平均分布的基础上继续调整,以适应逆长尾分布
该部分代码
进行logit adjustment之后再计算base_loss(此处使用CELoss)
def forward(self, output_logits, target, extra_info=None):
if extra_info is None:
return self.base_loss(output_logits, target) # output_logits indicates the final prediction
loss = 0
# Obtain logits from each expert
expert1_logits = extra_info['logits'][0]
expert2_logits = extra_info['logits'][1]
expert3_logits = extra_info['logits'][2]
# Softmax loss for expert 1
loss += self.base_loss(expert1_logits, target)
# Balanced Softmax loss for expert 2
# tips:一个数值稳定小技巧,防止prior为0或者十分接近0,导致取log后得到无穷大。
expert2_logits = expert2_logits + torch.log(self.prior + 1e-9)
loss += self.base_loss(expert2_logits, target)
# Inverse Softmax loss for expert 3
inverse_prior = self.inverse_prior(self.prior)
expert3_logits = expert3_logits + torch.log(self.prior + 1e-9) - self.tau * torch.log(inverse_prior+ 1e-9)
loss += self.base_loss(expert3_logits, target)
return loss
3.2 Test-time Self-supervised Aggregation
基于假设【专家对于其擅长领域的预测应当更加稳定stable】
验证假设——通过比较对样本的两个增强视图的预测之间的余弦相似度来估计专家的预测稳定性。
增强数据方法——MoCo v2中的数据增强,该数据增强被证明在自监督学习领域是有效的。
we estimate the prediction stability of experts by comparing the cosine similarity between their predictions for a sample’s two augmented views.
- 专家1对于many-shot类稳定性优,而专家2对于few-shot类更稳定。
提出方法——预测稳定性最大化prediction stability maximization.
(1) data view generation
(2) learnable aggregation weight
w进行了归一化,即满足
w
1
+
w
2
+
w
3
=
1
w_1 + w_2 + w_3=1
w1+w2+w3=1
the final softmax prediction:
y
^
=
σ
(
w
1
⋅
v
1
+
w
2
⋅
v
2
+
w
3
⋅
v
3
)
\hat{y} = σ(w_1·v_1 + w_2·v_2 + w_3·v_3)
y^=σ(w1⋅v1+w2⋅v2+w3⋅v3)
(3) 目标函数
基于两个view prediction之间的余弦相似度计算
论文citation:
@inproceedings{DBLP:conf/nips/ZhangHHF22,
author = {Yifan Zhang and
Bryan Hooi and
Lanqing Hong and
Jiashi Feng},
title = {Self-Supervised Aggregation of Diverse Experts for Test-Agnostic Long-Tailed
Recognition},
booktitle = {NeurIPS},
year = {2022},
url = {http://papers.nips.cc/paper_files/paper/2022/hash/dc6319dde4fb182b22fb902da9418566-Abstract-Conference.html},
timestamp = {Thu, 11 May 2023 17:08:22 +0200},
biburl = {https://dblp.org/rec/conf/nips/ZhangHHF22.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}