[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》笔记相关推荐

  1. 《信贷的逻辑与常识》笔记

    序 银行信贷风险管理的反思 现状与趋势 银行贷款的质量变化与经济周期.宏观调控政策等存在很高的相关性 现在银行不良贷款的增加主要是前几年经济快速增长时企业过度投资.银行过度放贷所带来的结果. 从历史情 ...

  2. AI公开课:19.02.27周逵(投资人)《AI时代的投资逻辑》课堂笔记以及个人感悟

    AI公开课:19.02.27周逵(投资人)<AI时代的投资逻辑>课堂笔记以及个人感悟 目录 课堂PPT图片 精彩语录 个人感悟 课堂PPT图片 精彩语录 更新中-- 文件图片已经丢失-- ...

  3. 人工智能入门算法逻辑回归学习笔记

    逻辑回归是一个非常经典的算法,其中也包含了非常多的细节,曾看到一句话:如果面试官问你熟悉哪个机器学习模型,可以说 SVM,但千万别说 LR,因为细节真的太多了. 秉持着精益求精的工匠精神不断对笔记进行 ...

  4. 【逻辑回归学习笔记】

    算法描述 1.逻辑回归要做的事就是寻找分界面实现二分类. 2.问题假设:对一堆三角形和正方形分类. 3.数据输入:已知正方形和三角形的坐标和标签. 4.算法过程: 知识储备 1.分类和回归 ①分类的目 ...

  5. 逻辑回归函数学习笔记

    继续逻辑回归学习,今日笔记记录. 1.逻辑回归和线性回归的关系:对逻辑回归的概率比取自然对数,则得到的是一个线性函数,推导过程如下. 首先,看逻辑回归的定义 其次,计算两个极端y/(1-y),其值为( ...

  6. 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授

    逻辑回归 上一节我们知道,使用线性回归来处理 0/1 分类问题总是困难重重的,因此,人们定义了逻辑回归来完成 0/1 分类问题,逻辑一词也代表了是(1) 和 非(0). Sigmoid预测函数 在逻辑 ...

  7. LVM逻辑卷分区笔记

    磁盘的静态分区有其缺点:分区大小难评估,估计不准确,当分区空间不够用的时候,系统管理员可能需要先备份整个系统,清除磁盘空间,然后重新对磁盘进行分区,然后恢复磁盘数据到新分区,且需要停机一段时间进行恢复 ...

  8. 适合理工直男的钟平老师逻辑英语学习笔记

    一切的一切都只是套路!             --鲁迅 核心公式: En: (状语1) 主(定语1) 谓(状语2) (宾)(定语2) (状语1) Ch: (状语1) (定语1)主 (状语2)谓 (定 ...

  9. 【数字逻辑】学习笔记 第四章 Part2 常用组合逻辑电路与竞争、险象

    文章目录 一.常用组合逻辑电路 1. 译码器 (1) 二进制译码器 74LS138(3/8译码器) a. 一般符号和图形符号 b. 74LS138功能表 c. 两片 `74LS138` 构成 `4-1 ...

  10. 线性回归、逻辑回归学习笔记

    学习源代码 import numpy as np import matplotlib.pyplot as plt def true_fun(X): # 这是我们设定的真实函数,即ground trut ...

最新文章

  1. %matplotlib inline的含义
  2. 自学python推荐书籍2019-2019最全Python入门学习路线,不是我吹,绝对是最全
  3. 财务人员学python有用吗-python在财务里面有用吗
  4. 大型数据中心蓄电池规划与应用中的痛点及展望
  5. 网页性能优化04-函数节流
  6. Redis源码剖析(四)过期键的删除策略
  7. 【OS学习笔记】十六 保护模式四:进入保护模式与在保护模式下访问内存的汇编代码
  8. python编程首选_为什么说学编程首选是python
  9. linux文件状态,Linux命令之stat - 显示文件或文件系统状态
  10. 吴恩达新书AI实战圣经《Machine Learning Yearning》中英文版分享
  11. oracle 流标和sql效率,Oracle 中流标使用实例
  12. 思科ccnp认证工程师必看
  13. java统计学生上课出勤_javaweb课堂考勤管理系统
  14. mysql的chakan biao_MySQL_Mysql中文汉字转拼音的实现(每个汉字转换全拼),一、创建拼音对照表 复制代 - phpStudy...
  15. lpx寒假作业案例3
  16. [树莓派] - u盘做系统盘
  17. 如何破解winrar(可用)
  18. 使用 Wall 搭建个人照片墙和视频墙
  19. Linux学习日记- - -配置篇##1
  20. 计算机组成原理课程设计_微程序控制的运算器设计

热门文章

  1. android爬虫应用实战讲解 视频播放应用开发
  2. 2018092609-2 选题 Scrum立会报告+燃尽图 01
  3. 新媒体运营葬送了多少人的前程
  4. cad指北针lisp_AutoCAD_Map_3D__2010_教程.pdf
  5. 回顾艾维在苹果的15款最经典设计:最后一个特别大
  6. Appletviewer运行swing
  7. 零基础如何去入门学习UI设计?学习步骤是什么?
  8. keytool generate keystore for mac
  9. 你的网页有多快 — 从 DOMReady 到 Element Timing
  10. 张长水主任当选2018年IEEE Fellow!中国大陆17位当选者清华占了5位 !(附完整名单)