度量学习 (Metric Learning) == 距离度量学习 (Distance Metric Learning,DML) == 相似度学习
度量学习 是指 距离度量学习,Distance Metric Learning,简称为 DML,是人脸识别中常用传统机器学习方法,由Eric Xing在NIPS 2002提出。
度量学习(Metric Learning)也就是常说的相似度学习。如果需要计算两张图片之间的相似度,如何度量图片之间的相似度使得不同类别的图片相似度小而相同类别的图片相似度大(maximize the inter-class variations and minimize the intra-class variations)就是度量学习的目标。
分为两种,一种是基于监督学习的,另外一种是基于非监督学习的。
一. 监督学习
1)LDA Fisher线性判别
2)Local LDA
Local Linear Discriminative Analysis
3)RCA 相关成分分析
Relevant Component Analysis
4)LPP 局部保留投影
Locality Preserving Projection
5)LMNN 大间隔最近邻
Large-Margin Nearest Neighbors
6)LLE 局部线性嵌入
Locally linear embedding
监督学习的方法应用比较多,包括上一节我们讲到的 基于CNN的特征提取都属于监督学习的范畴。
二. 非监督学习
严格说来,非监督的度量学习(主要是指降维方法)不算真正的度量学习,我们也把他们列出来,方便读者记忆:
1)主成分分析(Pricipal Components Analysis, PCA)
2)多维尺度变换(Multi-dimensional Scaling, MDS)
3)独立成分分析(Independent components analysis, ICA)
4)拉普拉斯特征映射(Laplacian Eigenmaps)
举例:
knn最合适的是学习马氏距离,要给出先验知识,哪两个数据更相似,欧式距离不可靠。SVM也是metric learning的一种,因为kernel matrix就是相似度。state of art的metric learning方法LMNN。任何方法只要用到相似度,就可以用到度量学习。度量学习主流就是学习马氏距离!
http://www.cs.cmu.edu/~liuy/distlearn.htm 其中的Principal Component Analysis(PCA)是有蔡登老师开发
http://www.cse.wustl.edu/~kilian/Downloads/LMNN.html有Large Margin NN Classifier (LMNN)的代码
与经典识别网络相比
经典识别网络有一个bug:必须提前设定好类别数。
这也就意味着,每增加一个新种类,就要重新定义网络模型,并从头训练一遍。
比如我们要做一个门禁系统,每增加或减少一个员工(等于是一个新类别),就要修改识别网络并重新训练。很明显,这种做法在某些实际运用中很不科学。
因此,Metric Learning作为经典识别网络的替代方案,可以很好地适应某些特定的图像识别场景。一种较好的做法,是丢弃经典神经网络最后的softmax层,改成直接输出一根feature vector,去特征库里面按照Metric Learning寻找最近邻的类别作为匹配项。
目前,Metric Learning已被广泛运用于人脸识别的日常运用中。
========================
度量学习的应用基本可以涵盖各种领域,当作工具使用,用的语言是python,有工具包metric-learn,可以直接使用pip install metric-learn的方法来安装,或者根据前面github上的网址下载源码之后python setup.py install.
安装好之后就可以使用包中带的一些度量学习的方法了。例如:
Large Margin Nearest Neighbor (LMNN)
import numpy as np
from metric_learn import LMNN
from sklearn.datasets import load_iris
iris_data = load_iris()
X = iris_data['data']
Y = iris_data['target']
lmnn = LMNN(k=5, learn_rate=1e-6)
lmnn.fit(X, Y, verbose=False)
参考:
1.https://blog.csdn.net/lzt1983/article/details/7884553
2.https://www.jianshu.com/p/cf235256771b
3.https://blog.csdn.net/jningwei/article/details/80641184
4.https://blog.csdn.net/linolzhang/article/details/71247548
5.https://blog.csdn.net/m0_37052320/article/details/78912203