【度量学习笔记】开山之作

174 阅读4分钟

论文链接

度量的定义及一些基本性质见链接

简介

许多学习和数据挖掘算法的性能都依赖于他们的输入是否有一个好的度量,例如K-means,近邻分类器和核算法(如SVM)都需要一个好的度量来很好地反映数据间的重要关系。这个问题在无监督的环境(如聚类)中尤其严重,而且与聚类经常没有“正确”答案这一长期存在的问题有关:如果使用三种算法对一组文档进行聚类,一种算法根据作者身份聚类,另一种算法根据主题聚类,第三种算法根据写作风格聚类,那么哪个是“正确”答案呢?进一步思考,如果一个算法是按主题聚类的,而我们想要它按写作风格聚类,但很少有系统机制能够将其传递给聚类算法,因此我们经常需要手动调整距离度量。

这篇论文中的主要问题是:假如一个用户指定输入空间中的一些点(Rn\mathbb{R}^n)认为它们是相似的,我们能否自动学到这些点间的距离来表示它们的关系。例如,在文档示例中,我们可能希望通过给它几对被判断为相似的文档,让它学会识别某种风格的关键特征。

学习距离度量

假设有一些点集{xi}i=1mRn\{x_i\}^m_{i=1} \subseteq \mathbb{R}^n,其中某些对是相似的,即:

S:  (xi,xj)SS:\ \ (x_i,x_j)\in \mathcal{S}

如何学习一个距离度量d(x,y)d(x,y)来表示xxyy的关系呢?并且相似对的距离应该相对更近。

考虑一个距离度量公式为:

d(x,y)=dA(x,y)=xyA=(xy)TA(xy)d(x,y)=d_A(x,y)=||x-y||_A=\sqrt{(x-y)^TA(x-y)}

为保证这个度量满足非负性和三角不等式(为什么要满足三角不等式),需要另AA为正的半正定矩阵,即A0A\succeq 0(此处的\succeq表示半正定,关于正定和半正定矩阵),令A=IA=I时就变成了欧氏距离的计算公式。若严格限制AA为对角矩阵,这就相当于学习一个度量,该度量在不同的坐标轴被给予了不同的“权重”。更具体的说,AA参数化了Rn\mathbb{R}^n内一组马氏距离。学习这么一个距离等价于找到数据的一个缩放,用A1/2xA^{1/2}x替换每个点xx,使用标准化欧氏距离来缩放数据,这有助于之后的度量学习可视化。

用一个简单方法来定义S\mathcal{S}中样本对(xi,xj)(x_i,x_j)的所需度量,即:

minimizeA(xi,xj)SxixjA2minimize_A\sum_{(x_i,x_j)\in\mathcal{S}}||x_i-x_j||^2_A

添加限制(xi,xj)DxixjA1\sum_{(x_i,x_j)\in\mathcal{D}}||x_i-x_j||_A \geq 1来保证AA不会将数据集压缩成一个点。若信息是明确可得的,此处的D\mathcal{D}可以是一组“不相似”的样本点对,否则将其取为不在S\mathcal{S}中的所有样本点对。综上所述,优化问题为:

minA (xi,xj)SxixjA2s.t. (xi,xj)DxixjA1,A0\min_A\ \sum_{(x_i,x_j)\in\mathcal{S}}||x_i-x_j||^2_A \\ s.t.\ \sum_{(x_i,x_j)\in\mathcal{D}}||x_i-x_j||_A \geq 1,A\succeq 0

上式中的1\geq 1是随意的并不重要,将其取为任意正常数cc只会导致AAc2Ac^2A取代。并且这个问题的目标在参数AA下是线性的,两个限制很容易证明是凸的,因此优化问题也是凸的,确保我们可以推导出一个有效的局部最优算法来求解它。

对角矩阵AA的情景

在想要学习一个对角矩阵A=diag(A11,A22,...,Ann)A=diag(A_{11},A_{22},...,A_{nn})的情况下,通过Newton-Raphson方法可以得到一个有效的算法,定义:

g(A)=g(A11,...,Ann)=(xi,xj)Sxi=xjA2log((xi,xj)DxixjA)g(A)=g(A_{11},...,A_{nn})= \\ \sum_{(x_i,x_j)\in \mathcal{S}}||x_i=x_j||^2_A-log(\sum_{(x_i,x_j)\in \mathcal{D}}||x_i-x_j||_A)

很容易证明这和最小化gg(限制于A0A\succeq 0)是恒成立的,AA通过乘以一个正常数来更新,然后求解之前的公式。(对于对角矩阵,只要对角线元素AiiA_{ii}非负则能保证A0A\succeq 0

完整矩阵AA的情景

AA为一个完整矩阵时,限制A0A\succeq 0变得有些棘手,Nerwton方法求解成本会变得很昂贵(需要O(n6)O(n^6)的时间来在n2n^2个参数下求黑塞矩阵的逆)。因此本文使用梯度下降和迭代投影的思想来对这种情况求导出一个不同的算法,基于此提出了一个等价的问题:

maxA g(A)=(xi,xj)Dxi,xjA(1)\max_A\ g(A)=\sum_{(x_i,x_j)\in\mathcal{D}}||x_i,x_j||_A\tag{1}
s.t. f(A)=(xi,xj)Sxi,xjA21,A0(2)s.t.\ f(A)=\sum_{(x_i,x_j)\in\mathcal{S}}||x_i,x_j||_A^2 \leq 1,A\succeq 0 \tag{2}

使用梯度上升的方法来求解(1),使用迭代投用来保证约束(2)。特别的一个梯度步长设置为:A:=A+αAg(A)A:=A+\alpha\nabla_Ag(A),然后反复映射AA到集合C1={A:(xi,xj)Sxi,xjA21}C_1=\{A:\sum_{(x_i,x_j)\in\mathcal{S}}||x_i,x_j||_A^2 \leq 1\}C2={A:A0}C_2=\{A:A\succeq 0\},上述步骤得到的算法如下图所示:

image.png