度量学习与聚类

来源:互联网 发布:js屏幕图片自动旋转 编辑:程序博客网 时间:2024/05/17 09:30

 一个完整的视觉任务往往包括两个步骤,特征提取和度量学习。

   传统的方法特征是按照某种设计方法进行提取得到的,不需要学习参数就可以提取;

   深度网络提取特征,就是特征提取器,需要的参数可以根据我们的目标进行调整。

(1)特征提取

   有传统的特征提取设计方法,比如LBP,HOG等;

   利用深度网络提取特征?其中包含非常多的学习参数,包括各个层的权重参数。

   

   那么如何得到这些参数,就是设计一个目标函数,这个目标函数衡量得到的特征与想要达到效果的差距。我们最小化这个差距损失,就能得到相关的参数。

   那么如何进行比较? 这时候一种好的度量思想就显得非常关键了。

(2)度量学习,或者是相似性学习

   是希望学习一个距离度量,能够使得同类样本之间距离小,不同类样本之间距离大。这个过程就能够使得损失函数最小。

   上面的这个目标包括两个方面,一个是类内紧凑,类间分散。


   a .传统的度量学习方法

   大多是基于不同的任务,比如行人再识别,分类,图像检索,人脸验证/识别,利用传统方法提取的特征,学习一个与任务相关的目标函数,目标函数是为了调整距离度量的参数。

 马氏距离: D^2 = (xi-xj)'M(xi-xj) = | L(xi-xj) | ,M=L'L

  任务的目标函数,可能是关于多分类或者是验证,但是目标函数涉及样本比较,也就是损失函数是关于距离的,优化损失函数就是在优化距离度量的参数。但其实对于马氏距离,就是学习线性变换矩阵L的参数,也就是在对原始特征进行一个高层抽象,要学习这个高层抽象的参数。

  

     b. 深度度量学习

        深度度量学习呢?就是现有的特征抽象是使用深度网络,对样本进行相似度比较,形成损失函数,通过优化这个损失函数,就是在学习特征提取的参数。当然如果相似度比较涉及参数,也同样通过损失函数进行学习。

  现在很多的视觉识别任务,很多直接使用某种无参数的距离进行样本比较,而不需要学习特定距离度量的参数。那么为什么不需要学习距离度量参数,因为深度特征已经是具有强大的判别力,你不需要调整特征之间的距离度量方法,可以用简单的欧式距离进行区分。

  但是这其中仍然包括度量学习的思想,因为你需要对样本进行比较,你需要设计一种相似性判别方法,比如损失函数要使得正样本相近,负样本远离。损失函数就是体现你的相似性判别方法好坏的直接方法。

  

  那么什么情况下需要深度度量学习呢?    

 当我们面对一些挑战性识别任务,我们希望有足够强的特征表示能力,结合度量学习思想设计关于相似性判别的损失函数,评价我们的特征的判别力。现有的度量学习能够应用经典网络,比如AlexNet,ResNet,GoogleNet等,基于关于距离的损失函数去训练网络得到输入的嵌入表示。

(3)度量学习现有的问题

 度量学习是一种相似比较思想,可以通过某种损失函数来体现某个任务的性能。

  1)学习一种可以横跨数据库的相似性比较方法是非常实用的,并且能够用于不同的任务,比如分类、聚类、检索、验证等。
    度量学习策略??
  2)大规模样本中样本各类数量不均衡,或者是小样本数量的时候,直接分类是不实际,那么借助度量学习,如何更好更快地得到分类结果就很有意义了。
  3)各种不同关于样本距离的损失函数,出发点都是一致的,希望类内紧凑,类间分散;损失函数的优缺点?