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

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


作者 | 蒋宝尚
编辑 | 贾伟


近日,Facebook AI 和 Cornell Tech 的研究人员近期发表研究论文预览文稿,声称近十三年深度度量学习(deep metric learning) 领域的目前研究进展和十三年前的基线方法(Contrastive, Triplet) 比较并无实质提高,近期发表论文中的性能提高主要来自于不公平的实验比较, 泄露测试集标签,以及不合理的评价指标。

也就是说:新出的ArcFace, SoftTriple, CosFace 等十种算法与十三年前的依赖成对或成三元组的损失函数并没有本质上的区别。

FB和康奈尔科技此论无疑是对深度度量学习过去十三年研究成果盖棺定论,斩钉截铁表示,虽然深度度量学习非常重要,但是学界这些年一直在灌水。


损失函数对度量学习很重要


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

论文下载地址:https://arxiv.org/pdf/2003.08505.pdf


在综述论文开头,FB和康奈尔先肯定了深度度量学习的重要性,他们表示:深度度量学习已成为近年来机器学习最具吸引力的研究领域之一,如何有效的度量物体间的相似性成为问题的关键。

度量学习试图将数据映射到一个嵌入空间,在这个空间中,相似的数据靠得很近,类型不同的数据离的很远。而映射的方式可以通过嵌入损失和分类损失实现,这两种方式各有特点,嵌入损失是根据一批样本之间的关系来操作,而分类损失包括一个权重矩阵,将嵌入空间转化为类logits向量。

在一些适用分类损失的任务下,当任务是信息检索的某个变体时,通常使用嵌入方法,目标是返回与查询最相似的数据。例如图像搜索:输入是查询图像,输出是数据库中视觉上最相似的图像。

然后,在某些情况下无法使用分类损失。例如,在构建数据集时,为每个样本分配类别标签可能很困难或成本很高,并且可能更容易以配对或三元组关系的形式指定样本之间的相对相似性。另外,样本对( pair ) 或者样本三元组(triplets)还可以为现有数据集提供额外的训练信号。所以在这两种情况下都没有显式标注,因此嵌入损失成为合适的选择。

换句话说损失函数在度量学习中起到了非常重要的作用。很多深度度量学习的损失函数构建在样本对( pair ) 或者样本三元组 ( triplet ) 之上。随着深度学习在众多领域出色表现,逐渐这种方法对度量学习产生了影响,于是度量学习将深度学习方法结合了起来,产生了一个新的领域,即深度度量学习。

最新的论文也都采用了神经网络技术,例如构建生成网络,用生成器作为建模类中心和类内方差的框架的一部分(Lin et al);使用自适应插值方法,根据模型的强度,产生不同难度的负值(Zheng et al)。除此之外,还有基于注意力的技术、基于聚类和编码器组合的技术等等。


领域的进展实际并不存在


在列举了一系列技术方法之后,研究员开始针对各种损失函数进行实验,研究结果表明:通过交叉验证对超参数进行适当调整时,大多数方法的性能相似。

研究员一共指出了现有文献中的三个缺陷:不公平的比较、通过测试集反馈进行训练、不合理的评价指标
不公平的比较:一般大家声明一个算法性能优于另一个算法,通常需要确保尽可能多的参数不变,而在度量学习的论文中不是如此。另外,一些论文中所提到的精度提高其实只是所选神经网络带来的,并不是他们提出的“创新”方法。例如2017年的一篇论文声称使用ResNet50 获得了巨大的性能提升,而实际上他的对比对象是精度较低的GoogleNet。

通过测试集反馈进行训练:不仅是度量学习领域,大多数论文都有这一通病:将数据集一半拆分为测试集,一半拆分为训练集,不设验证集。在具体训练的过程中,定期检查模型的测试集精度,并报告最佳测试集精度,也就是说模型选择和超参数调优是通过来自测试集的直接反馈来完成的,这显然会有过拟合的风险。

不合理的评价指标:为了体现准确性,大多数度量学习论文都会报告Recall@K、归一化相互信息(NMI)和F1分数。但这些一定是最好的衡量标准吗?如下图三个嵌入空间,每一个recall@1指标评价都接近满分,而事实上,他们之间的特征并不相同。此外,F1和NMI分数也接近,这在一定程度上说明,其实,这几个指标并没带来啥信息。

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

三个 toy示例:不同的精确指标如何评分。


在指出问题的同时,FB和康奈尔的研究员自然也指出了改进建议,针对上述三个缺点建议进行公平比较和重复性实验、通过交叉验证进行超参数搜索、采用更加准确的信息性、准确性度量。

公平比较和重复性实验:实验使用PyTorch;设置相同的输出嵌入进行预训练;批次大小设置为32;在训练期间,使用随机调整大小的裁剪策略来增强图像;设置固定的学习率;公开配置文件。

通过交叉验证进行超参数搜索:多用交叉验证;优化超参数,并以最大程度地提高平均验证准确性;多使用最佳超参数进行训练,然后报告运行的平均值以及置信区间。

调整度量指标:建议用MAP@R来做平均精度,因为它结合了MAP(Mean Average Precision)和R精度( R-precision)。


劝退?不,沧海横流,方显英雄本色!


深度度量学习,是否有用?是否还值得入坑?!!

在知乎上迅速激起诸多网友的热烈讨论。

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

一位曾在Deep Metric Learning中单枪匹马、摸爬滚打过的网友(MS Loss 一作)直言:DML领域大部分方法并无宣称的那么大,其“进步”往往来源于:调参、方法本身以及大的Batch Size。

该领域确实水文比例挺大的,有些文章为了中,确实会用特别低的baseline, 用resnet甚至densenet和别人googlenet的结果去比,或者用2048维特征去比过去方法的128维的结果。

一位网友提到,度量学习在数学上优雅,在可视化上炫酷,在论文结果上漂亮,但在实际应用中却毫无效果。

Metric learning在数学上推得很优雅,在可视化上很酷炫,在论文结果上表现得很漂亮,但实际应用上却毫无效果。asoftmax am amm等在某些数据集上确实拟合很好,适合刷指标,但实际在跨数据开集上,还是最简单的softmax更香。

或者用另一位网友的说法:公式超级多,论文看起来就专业可视化好看,类间离散图很优雅

当然也有网友认为还是有进展的,就是李飞飞用超大规模数据集,告诉大家堆数据要比算法提升更优秀!基本认同。唯一的进展是李飞飞的超大规模数据集,告诉大家堆数据带来的提升效果比算法创新还要大。然而这基本只算一个工程经验,根本也谈不上一个'进展'。

不过也有网友认为,发展还是有的,那就是正则化。

那么metirc learning有没有发展呢,我认为最主要的发展还是近几年的normalization,这个东西明确了几何空间的定义,使得研究人员能够更好的在几何层面设计metric,最后无论是训练的收敛速度还是最后的准确率都有了极大的提升。

最后,我们引用一下知名博主「王晋东不在家」的话(编者注:有删减)——

其实大可不必心潮澎湃、攻击别人、对该领域前途失望。每当一个研究领域出现一些retlinking、revisiting、comprehensive analysis等类型的文章时,往往都说明了几个现象:

1、这个领域发展的还可以,出现了很多相关的工作可以参考;

2、这个领域的文章同质化太严重,到了传说中的“瓶颈期”;

3、研究人员思考为什么已经有这么多好工作,却好像觉得还差点意思,还“不够用”、“不好用”、“没法用”。

其实这对于研究而言是个好事。我们在一条路上走了太久,却常常忘记了为什么出发。此时需要有些人敢于“冒天下之大不睫”,出来给大家头上浇盆冷水,重新思考一下这个领域出现了什么问题。哲学上也有“否定之否定”规律。 

回到metric learning的问题上来。其实想想看,机器学习的核心问题之一便是距离。Metric learning这种可以自适应地学习度量的思想,真的是没用吗?还是说它只是被目前的方法、实验手段、评测数据集等等束缚了手脚,阴差阳错地导致了不好的结果这也是这个问题的提出者原文作者质疑的问题。

不能经受得住质疑和时间的洗礼的工作,不是好工作。事实上此类事情并不是第一次发生。

不信你看,作为当下ICML、ICLR、NIPS等顶会的“宠儿”,meta-learning可谓风头一时无两。然而,大家都清楚,meta-learning的一大部分工作都是在few-shot的任务上进行算法开发和评测的。从18年开始到今年的ICLR,就已经不断地有人“质疑”其有效性了。“质疑”的核心问题之一是:用简单的pretrain network去学习feature embedding,然后再加上简单的分类器就可以在few-shot那几个通用任务上,打败很多“著名”的meta-learning方法。所以到底是meta-learning的这种“学会学习”的思想没用,还是它只是被不恰当地使用了?或者说,meta-learning的正确用法是什么?我认为这也是要思考的。我个人是非常喜欢meta的思想的。

其实在transfer learning领域。我之前也有一篇看似“打脸”的paper:Easy Transfer Learning by Exploiting Intra-domain Structures。我们的实验同样证明了仅需简单pretrain过的ResNet50提取源域和目标域的feature embedding,然后加上简单的线性规划分类器,甚至是nearest centroid,就能取得当时(2018年底)几乎最好的分类结果。但是你能说transfer learning没用吗?显然这并不能掩盖transfer learning方法的光芒。所以我一直都在质疑自己:肯定是这些数据集不完善、精度不能作为唯一指标、其他方法需要再调参数,等等。

我觉得这可能是个实验科学的误区:我们实验设定本来就需要完善,并不能因此否定一类方法的有效性。深度学习大部分都是建立在实验科学的基础上,因此实验很关键。

有了广泛的质疑,才会有更广泛的讨论,于是会有更广泛的反质疑、新范式、新思想。从整个领域的发展来看,这无疑是好事。

所以这应是“沧海横流,方显英雄本色”的时候了。加油吧!

(雷锋网(公众号:雷锋网))、(雷锋网)、(雷锋网)

雷锋网原创文章,未经授权禁止转载。详情见转载须知

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

(完)