《A Metric Learning Reality Check》笔记

[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

  1. (paper)A Metric Learning Reality Check
  2. (code)KevinMusgrave/powerful-benchmarker
  3. (author)Kevin Musgrave
  4. 如何理解与看待在cvpr2020中提出的circle loss?
  5. Dimensionality reduction by learning an invariant mapping
  6. Distance Metric Learning for Large Margin Nearest Neighbor Classification
  7. Deep Metric Learning with Angular Loss
  8. Sampling matters in deep embedding learning
  9. Deep metric learning via lifted structured feature embedding
  10. Improved deep metric learning with multi-class n-pair loss objective
  11. Multi-Similarity Loss With General Pair Weighting for Deep Metric Learning
  12. Deep Metric Learning With Tuplet Margin Loss
  13. Deep Metric Learning to Rank
  14. No Fuss Distance Metric Learning Using Proxies
  15. SoftTriple Loss: Deep Metric Learning Without Triplet Sampling

你可能感兴趣的:(《A Metric Learning Reality Check》笔记)