【问题标题】:Why do we use metric learning when we can classify为什么我们可以分类时使用度量学习
【发布时间】:2017-12-22 11:50:28
【问题描述】:

到目前为止,我已经阅读了一些被高度引用的度量学习论文。这些论文的总体思路是学习一个映射,使得具有相同标签的映射数据点彼此靠近,远离其他类的样本。为了评估这些技术,他们报告了 KNN 分类器对生成嵌入的准确性。所以我的问题是,如果我们有一个标记的数据集,并且我们有兴趣提高分类任务的准确性,为什么我们不在原始数据点上学习一个分类器。我的意思是,我们可以学习一个适合(非嵌入式)数据点的分类器,而不是找到适合 KNN 分类器的新嵌入。根据我目前所读到的内容,此类分类器的分类准确性比度量学习方法要好得多。是否有研究表明度量学习+KNN 至少在某些数据集上比拟合(好的)分类器表现更好?

【问题讨论】:

  • 你有使用这种技术的论文或问题的例子吗?
  • 如果你的意思是度量学习+KNN方法,那么它们有很多,“大边距最近邻分类的距离度量学习”,“汉明距离度量学习”,“人的深度度量学习”重新识别”, ...
  • 您的问题基本上是“人们为什么要做 [metric learning + KNN]?”在人们使用这种方法的特定情况下,他们几乎肯定有一些理由这样做。但是这个问题太模糊了,除非你想解释一些特定的用例。如前所述,这个问题可能更适合stats.stackexchange.com

标签: machine-learning classification metric


【解决方案1】:

度量学习模型可以是分类器。所以我会回答为什么我们需要度量学习来进行分类的问题。

让我举个例子。当您拥有数百万个类别的数据集,而某些类别只有有限的示例时,假设少于 5 个。如果您使用 SVM 或普通 CNN 等分类器,您会发现无法训练,因为那些分类器(判别模型) 将完全忽略少数示例的类别。

但对于度量学习模型,这不是问题,因为它们基于生成模型。

顺便说一句,大量的类对判别模型本身来说是一个挑战。

现实生活中的挑战激励我们探索更多更好的模型。

【讨论】:

  • 谢谢。我同意你的观点,但如果这是度量学习技术的真正应用,那么此类论文的实验设置必须反映这种情况。换句话说,在实验中,我们应该有一些没有样本或样本很少的类标签,然后我们可以看到学习映射的泛化能力。但是,在大多数论文中,我看到该映射应用于一些流行的数据集,例如 cifar-10(每个类标签具有相同数量的样本),然后测量 KNN 分类器的准确性。
  • 我明白你的担忧。我的理解是,当您撰写要发表的论文时,您通常会将您的方法与其他人在任何人都可以访问的流行 open 数据集上进行比较。原因之一是院系通常无法访问工业数据集。开放数据集的结果更具说服力,因为每个人都可以重复他们的实验。无论如何请不要太担心,我认为如果基于度量的分类器在平衡数据集上击败它们,它肯定会在不平衡数据集上击败它们。
  • 我正在寻找一个使用度量学习进行分类的示例,如果有人提供 keras 深度学习的示例,我将不胜感激
  • @user8523104 您好,您可以搜索“one-shot learning”。人脸验证就是一个例子。
  • 谢谢你,是的,我能找到他们:)
【解决方案2】:

正如@Tengerye 提到的,您可以使用使用度量学习训练的模型进行分类。 KNN 是最简单的方法,但您可以将数据嵌入并训练另一个分类器,例如 KNN、SVM、神经网络等。在这种情况下,度量学习的使用是将原始输入空间更改为另一个分类器更容易​​处理的一种。

除了当数据不平衡时判别模型难以训练,或者更糟糕的是,每个类的示例很少,它们不能轻易地扩展到新的类。

以面部识别为例,如果将面部识别模型训练为分类模型,这些模型将只适用于它见过的面孔,而不会适用于任何新面孔。当然,您可以为想要添加的人脸添加图像并重新训练模型或在可能的情况下微调模型,但这是非常不切实际的。另一方面,使用度量学习训练的面部识别模型可以生成新面孔的嵌入,可以轻松地将其添加到 KNN,然后您的系统可以根据他/她的图像识别新人。

【讨论】:

    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2018-02-16
    • 1970-01-01
    相关资源
    最近更新 更多