深度度量学习的这十三年,难道是错付了吗?( 二 )


常用的准确率度量的缺点
为了报告准确率 , 大多数度量学习论文用到的指标是 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) 所示 , 实验结果和预期并不一致 。


推荐阅读