机器之心报道

机器之心编辑部

或许对于每一个领域来说,停下脚步去思考,与低头赶路一样重要。

「度量学习(Metric Learning)」即学习一个度量空间,在该空间中的学习异常高效,这种方法用于小样本分类时效果很好,不过度量学习方法的效果尚未在回归或强化学习等其他元学习领域中验证。

在人脸识别、指纹识别等开集分类的任务中,类别数往往很多而类内样本数比较少。在这种情况下,基于深度学习的分类方法常表现出一些局限性,如缺少类内约束、分类器优化困难等。而这些局限可以通过深度度量学习来解决。

「四年来,深度度量学习领域的论文经常表示已经在准确性层面取得了很大的进展,基本是十年前方法的两倍以上。」事实上,我们真的取得了这么惊人的进展吗?

近日,Facebook AI 和 Cornell Tech 的研究者在论文预印本平台 arXiv 上公布了最新研究论文,声称这十三年来深度度量学习领域的研究进展「实际上并不存在」。

论文链接:https://arxiv.org/pdf/2003.08505.pdf

研究者发现,度量学习的这些论文在实验设置方面存在多种缺陷,比如不公平的实验比较、测试集标签泄露、不合理的评价指标等。于是,他们提出了一种新的评估方法来重新审视度量学习领域的多项研究。最后,他们通过实验表明,现有论文宣称的那些改进实在是「微不足道」,近几年的 ArcFace,、SoftTriple,、CosFace 等十种算法,和十三年前的 Contrastive、Triplet 基线方法相比,并没有什么实质性的提高。

也就是说,论文宣称的改进是节节攀升的:

但实际情况却是原地踏步:

之前的论文存在哪些缺陷?

不公平的比较

为了宣称新算法的性能比已有的方法要好。尽可能多地保持参数不变是很重要的。这样便能够确定性能的优化是新算法带来的提升,而不是由额外的参数造成的。但现有的度量学习论文的研究情况却不是如此。

提高准确率最简单的方法之一是优化网络架构,但这些论文却没有保证这项基本参数固定不变。度量学习中架构的选择是非常重要的。在较小的数据集上的初始的准确率会随着所选择的网络而变化。2017 年一篇被广泛引用的论文用到了 ResNet50,然后声称性能得到了巨大的提升。这是值得质疑的,因为他们用的是 GoogleNet 作比较,初始准确率要低得多(见表 1)。

通过测试集反馈进行训练

该领域大多数论文会将每个数据集分开,类中的前 50% 用作训练集,剩下的部分用作测试集。训练过程中,研究者会定期检查模型在测试集上的准确率。也就是,这里没有验证集,模型的选择和超参数的调整是通过来自测试集的直接反馈完成的。一些论文并不定期检查性能,而是在预先设置好的训练迭代次数之后报告准确率。在这种情况下,如何设置迭代次数并不确定,超参数也仍然是在测试集性能的基础上调整的。这种做法犯了机器学习研究的一个大忌。依靠测试集的反馈进行训练会导致在测试集上过拟合。因此度量学习论文中所阐述的准确率的持续提升会被质疑。

常用的准确率度量的缺点

为了报告准确率,大多数度量学习论文用到的指标是 Recall@K、标准化互信息(NMI)以及 F1 分值。但这些真的是最佳度量标准吗?图 1 展示了三种嵌入空间,虽然它们有不同的特性,但每个 Recall@1 的分值都接近 100%,说明这个指标基本上提供不了什么信息。

新的评估方法

以上种种缺陷造成了度量学习领域的「虚假繁荣」。因此研究者提出了一种新的评估方法,希望能够对损失函数进行恰当的评估。为此,他们做了如下设置:

公平的比较和复现

所有的实验都是在 PyTorch 上进行的,用到了 ImageNet 来预训练 BN-Inception 网络。训练过程中冻结 BatchNorm 参数,以减少过拟合。批大小设置为 32。

训练过程中,图像增强通过随机调整大小的裁剪策略来完成。所有的网络参数都用学习率为 1e-6 的 RMSprop 进行优化。在计算损失函数之前和评估过程中,对嵌入进行 L2 归一化。

通过交叉验证进行超参数搜索

为了找到最好的损失函数超参数,研究运行了 50 次贝叶斯优化迭代,每次迭代均包括 4 折交叉验证:

类中的第一半用来交叉验证,创建 4 个分区,前 0-12.5% 是第一个分区,12.5-25% 是第二个分区,以此类推。

第二半用来做测试集,这和度量学习论文使用多年的设置相同,目的是便于和之前的论文结果做比较。

超参数都被优化到能最大化验证精确度的平均值。对于最佳超参数,将加载每个训练集分区的最高准确率检查点,测试集的嵌入是经过计算和 L2 归一化的,然后计算准确率。

更有信息量的准确率度量指标

研究者用 Mean Average Precision at R (MAP@R) 来度量准确度,这一指标综合了平均精度均值和 R 精度的思想。

R 精度的一个弱点是,它没有说明正确检索的排序。因此,该研究使用 MAP@R。MAP@R 的好处是比 Recall@1 更有信息量(见图 1)。它可以直接从嵌入空间中计算出来,而不需要聚类步骤,也很容易理解。它奖励聚类良好的嵌入空间。

实验

损失和数据集

研究者选择了近年来多个会议论文在度量学习领域提出的先进方法(如表 6 所示),在 11 种损失和一种损失+miner 组合上进行实验。

此前,度量学习领域的论文一直没有面向验证损失的内容,因此该研究加入了这方面的两项损失。

研究者选用了 3 个度量学习领域广泛使用的数据集:CUB200、Cars196 和 Stanford Online Products (SOP),选择这 3 个数据集也便于和之前的论文做比较。表 3-5 展示了训练运行的平均准确率,以及在适用时 95% 的置信区间,加粗部分代表了最好的平均准确率。同时也包括了预训练模型的准确率,用 PCA 将模型的嵌入值减少到 512 或 128。

论文 vs 现实

首先,让我们看一下论文结果的普遍趋势,图 4(a) 展示了该领域中「本以为」的准确率提升,即新方法完全淘汰了旧方法。

但正如图 4(b) 所示,实验结果和预期并不一致。

研究者发现,这些论文过分夸大了自己相对于两种经典方法——对比损失(contrastive loss)和三元组损失(triplet loss)——的改进。许多论文表示,自己方法的性能超出了对比损失一倍还多,比三元组损失也高出 50% 以上。这些提升是因为这些损失造成了非常低的准确性。

这些数据有一些是来源于 2016 年的提升结构损失论文,在他们的对比损失和三元组损失的实现中,他们每批采样 N/2 样本对和 N/3 样本三元组(N 是批的大小)。因此,他们只用到了每批里的一小部分数据信息。

他们将三元组的 margin 设置为 1,而最优的值大约是 0.1。尽管有这些实现缺陷,大多数论文仍旧只是简单地引用这些较低的数字,而不是依靠自己实现损失去获得一个更有意义的基线。

通过这些基线损失所呈现的良好实现、公平竞争环境和机器学习实践,研究者获得了如图 4(b) 所示的趋势图——事实上它似乎是平滑的走向。这表明无论是在 2006 年还是在 2019 年,各种方法的性能都是相似的。换句话说,度量学习算法并没有取得论文中所说的那么夸张的进展,论文中没有提到的前沿论文也值得怀疑。

这十几年的研究投入,终究是错付了吗?

在这篇论文出现以后,很多人在讨论:度量学习是否已经到了一个瓶颈期?我们还要继续在这个研究方向上前进吗?

第一个问题的答案是肯定的,第二个问题的答案也是肯定的。

中科院计算所博士生、知乎用户 @ 王晋东认为:「其实大可不必心潮澎湃、攻击别人、对该领域前途失望。」

其实每个领域经历过一段长时间的发展以后,都必然会有研究者回过头来进行反思。学术研究也适用于这条定律:「走得太远,忘记了为什么出发。」

图源:知乎 @ 王晋东不在家。https://www.zhihu.com/question/394204248/answer/1219383067

也有深度度量学习领域研究者、CVPR 2019 论文一作前来回答,并将这篇论文放在了自身研究介绍项目的开篇,希望「能让做这个领域的人看到,引导新入这个坑的人向着正确的方向走。因为,我也曾是踩过这些坑过来的」。

图源:知乎 @ 王珣。https://www.zhihu.com/question/394204248/answer/1219001568

质疑会带来讨论,讨论则引起反思。停下脚步后的思考,与赶路一样重要。在你的领域,也曾经有过这样的讨论吗?

参考链接:https://www.zhihu.com/question/394204248

深度度量学习的这十三年,难道是错付了吗?相关推荐

  1. 【CVPR2022】语言引导与基于视觉的深度度量学习的集成

    来源:专知 本文为论文,建议阅读5分钟我们提出了一种视觉相似度学习的语言指导目标. 深度度量学习(Deep Metric Learning, DML)提出学习度量空间,将语义相似性编码为嵌入空间距离. ...

  2. Facebook爆锤深度度量学习:该领域13年来并无进展!网友:沧海横流,方显英雄本色...

    来源:AI科技评论 近日,Facebook AI和Cornell Tech的研究人员近期发表研究论文预览文稿,声称近十三年深度度量学习(deep metric learning) 领域的目前研究进展和 ...

  3. tensorflow中同时两个损失函数_深度度量学习中的损失函数

    度量学习(metric learning)研究如何在一个特定的任务上学习一个距离函数,使得该距离函数能够帮助基于近邻的算法(kNN.k-means等)取得较好的性能.深度度量学习(deep metri ...

  4. 度量学习 度量函数 metric learning deep metric learning 深度度量学习

    曼哈顿距离(CityBlockSimilarity) 同欧式距离相似,都是用于多维数据空间距离的测度. 欧式距离(Euclidean Distance) 用于衡量多维空间中各个点之间的绝对距离.欧式距 ...

  5. 深度度量学习-论文简评

    缘起: 有人说起深度度量学习,就会觉得这里面水文多,或者觉得鱼龙混杂,参见曾经上了知乎热榜的一个问题: 如何看待研究人员声称近13年来在 deep metric learning 领域的进展实际并不存 ...

  6. 深度度量学习 (metric learning deep metric learning )度量函数总结

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_16234613/article/ ...

  7. 深度度量学习(DML)中pair-based方法中的loss

    文章目录 前言 一.Constrative loss[1] 二.Triplet loss[2] Offline and online triplet mining 参考 三.Lifted Struct ...

  8. 汪昭然:构建“元宇宙”和理论基础,让深度强化学习从虚拟走进现实

    作者 | 陈彩娴 深度强化学习的故事,可以追溯到2015年: 当时,位于英国伦敦的一家小公司 DeepMind 在<Nature>上发表了一篇文章"Human-level con ...

  9. 【ICML2021】 9篇RL论文作者汪昭然:构建“元宇宙”和理论基础,让深度强化学习从虚拟走进现实...

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 来源:转载自AI科技评论 作者 | 陈彩娴 深度强 ...

最新文章

  1. node-mongo-服务器封装
  2. Python老男孩 day16 函数(六) 匿名函数
  3. Logback配置文件这么写,TPS提高10倍!
  4. Kubernetes之实战入门
  5. 模式识别—判别函数分类法(几何分类法)
  6. HAWQ取代传统数仓实践(一)——为什么选择HAWQ
  7. 推荐 4 个开源小程序
  8. 阵处理与波束形成学习心得(二)
  9. 工业以太网交换机常见的几种故障类型及分析排查方法
  10. 第5章 NameNode和SecondaryNameNode
  11. iOS6和iPhone5使用第三方静态库在真机无法运行的处理
  12. Android中 Rect类
  13. Mars3D中模型加载慢的优化办法
  14. Tomcat无法启动,报错java.lang.NoClassDefFoundError: or...
  15. 数据导入(excel读取,存储进数据库【多表】)
  16. html图片上传布局,上传图片(压缩图片再上传),布局参考以前的文章(https://www.jianshu.com/p/d379ab1b3eec)...
  17. myeclipse数据库逆向hibernate教程 -
  18. 年轻打工人,在互联网大厂“边缘”岗位挣扎
  19. 挥动奥卡姆的剃刀:“学霸”GPT-4,超越人工的智能答案有多少可信度?
  20. 1.定义一个丈夫Husband类,有姓名、年龄、性别,妻子属性。 2.定义一个妻子Wife类,有姓名、年龄、性别,丈夫属性。 3.丈夫类中有一个getInfo方法,其中,能显示自己的姓名,年龄,和他的

热门文章

  1. 技术图文:C# 语言中的扩展方法
  2. 图像质量评价,图片放大和缩小
  3. 用了这么久的 Python,居然没注意到这个操作
  4. 又被 AI 抢饭碗?2457 亿参数规模,全球最大中文人工智能巨量模型 “源1.0”正式开源...
  5. 摆脱 FM!这些推荐系统模型真香
  6. 全领域通吃,12个经典Python数据可视化库盘点
  7. TensorFlow官方课程开启,机器学习上车吧
  8. 测试工程师的好日子来啦?Testin发布AI测试产品,提升易用性和自动化效率
  9. 金融业加速智能化,解析360金融AI基础架构和应用
  10. 李飞飞谈AI医疗:为什么我要从监督医生洗手开始做起?