[1] 是 metric learning 的一篇学术打假文,回顾了 deep metric learning 领域两个经典工作(contrastive loss,triplet loss)和近年来(2017 ~ 2019,见文中 Table 6)的几篇工作,指出近年一些工作其实有些作弊行径,其提出的 loss 带来的实际增长其实没有文中号称的那么多,非常硬核。
作者按照他认为公平的方式重新实验比较这些 losses,并有提供 benchmarks 的代码,见 [2]。一作 github 主页见 [3]。
本篇记录感兴趣的一些点。
Losses
文中提到的 metrics learning 中出现过的一些 losses,分 embedding loss 和 classification loss 两类。
Embedding Loss
- contrastive loss [5]
- triplet margin loss [6]
- angular loss [7]
- margin loss [8]
- lifted structure loss [9]
- N-Pairs loss [10]
- multi similarity loss [11]
- tuplet margin loss [12]
- FastAP [13]
Classification Loss
- ProxyNCA [14]
- SoftTriple loss [15]
P.S.
还有回顾一些 pair/triplet mining 方法,和用到 generator 的方法。
mark:刷一遍,有机会总结一下。
Flaws
文中指出一些工作在对比其它工作和论证自己贡献、训练模型、所选评价指标的一些漏洞和缺陷,也算是同时提出一些做实验对比时的原则。
(我此时其实还没看过这些被怼的文章,所以更看重其作为实验原则来的功用)
Unfair Comparisons
要实验验证所提算法的有效性,控制变量是基本的要求之一。文中提到几点:
- 预训练模型。比如不能自己用 ResNet50 和别人一个用 GoogleNet 的比;
- 数据增强。可能有些工作文章明面上说自己用了这些那些数据增强(青铜),但观其代码却又是用了更复杂的数据增强(王者);
- 优化器。Adam、RMSprop 这里自适应的收敛快,但用 SGD 可能使得模型泛化性更好,然而这是优化器引起的分别,而不是所提算法的分别;
- 隐藏 tricks。有篇工作将预训练模型的 BatchNorm 层参数定住,可以减少 overfitting,它代码注释说在 CUB200 可以提两个点,但文章却不提(如果有用了 tricks 不说还不给代码的?复现还玩个*?);
- 实验结果的置信区间。(还不是很懂这个 confidence interval 是什么、怎么用,是说 多次实验求平均和方差 而不是只给一个结果这个意思吗?);
Training with Test Set Feedback
一般 test set 在训练过程不可见是个基本要求(transductive learning 设置除外?),包括调参、模型选择过程。
他们发现一些工作只划了 training set 和 test set 而没有 validation set,这意味着这些工作可能在做模型选择、调参时用了 test set,这是违反原则的,因为 test set 实质上参与了训练过程:虽然不是直接的梯度回传,但是间接地通过人反馈给模型。
所以是应该 training set 中划一定比例出来做 validation set 做调参,test set 只用作最后评估。
Weakness of Commonly Used Accuracy Metrics
可能两个模型的在一种指标下表现差异巨大,在另一种指标下却没什么区别,这意味着有些指标用来评价模型不太合适?(或者不够全面客观?)文中有给示例。
Hyper Parameters
4.2 节指出,有些工作能比起两个经典损失 contrastive 和 triplet 进步巨大,其中一个原因是这些工作在引用这俩经典时,引了一些它俩很差的数据,而它俩效果差的原因是诸如构造 pairs/triplets 的方法不够好、超参没调好这些原因。作者认为这些超参带来效果不能直接算作算法的效果(2.1 节),引别的算法一个差的效果来映衬自己算法的效果不合理,还暗示人们应该自己试着重新实现别人的 loss 并调出一个好结果来作为一个合理的 baseline。
他自己好像就是这么做的,于是有了 Fig.4 (b) 和 Fig.5 (b),原本在 Fig.4 (a) 和 Fig.5 (a) 中看起来比俩经典有很大提升的王者们,变成了…白银?
这点是我觉得最硬核的一点,太刚了。
References
- (paper)A Metric Learning Reality Check
- (code)KevinMusgrave/powerful-benchmarker
- (author)Kevin Musgrave
- 如何理解与看待在cvpr2020中提出的circle loss?
- Dimensionality reduction by learning an invariant mapping
- Distance Metric Learning for Large Margin Nearest Neighbor Classification
- Deep Metric Learning with Angular Loss
- Sampling matters in deep embedding learning
- Deep metric learning via lifted structured feature embedding
- Improved deep metric learning with multi-class n-pair loss objective
- Multi-Similarity Loss With General Pair Weighting for Deep Metric Learning
- Deep Metric Learning With Tuplet Margin Loss
- Deep Metric Learning to Rank
- No Fuss Distance Metric Learning Using Proxies
- SoftTriple Loss: Deep Metric Learning Without Triplet Sampling