【机器学习基础】系列博客为参考周志华老师的《机器学习》一书,自己所做的读书笔记。
1.度量学习
在机器学习中,对高维数据进行降维的主要目的是希望找到一个合适的低维空间,在此空间中进行学习能比原始空间性能更好。事实上,每个空间对应了在样本属性上定义的一个距离度量,而寻找合适的空间,实质上就是在寻找一个合适的距离度量。那么,为何不直接尝试“学习”出一个合适的距离度量呢?这就是度量学习(metric learning)的基本动机。
亦称“距离度量学习”(distance metric learning)。
欲对距离度量进行学习,必须有一个便于学习的距离度量表达形式。【机器学习基础】第三十四课:聚类之距离计算一文中给出了很多种距离度量的表达式,但它们都是“固定的”、没有可调节的参数,因此不能通过对数据样本的学习来加以改善。为此,我们先来做一个推广。
对两个 d d d维样本 x i \mathbf{x}_i xi和 x j \mathbf{x}_j xj,它们之间的平方欧氏距离可写为:
dist ed 2 ( x i , x j ) = ∥ x i − x j ∥ 2 2 = d i s t i j , 1 2 + d i s t i j , 2 2 + ⋯ + d i s t i j , d 2 (1) \text{dist}_{\text{ed}}^2 (\mathbf{x}_i,\mathbf{x}_j)=\parallel \mathbf{x}_i - \mathbf{x}_j \parallel_2^2 = dist_{ij,1}^2+dist_{ij,2}^2+\cdots+dist_{ij,d}^2 \tag{1} disted2(xi,xj)=∥xi−xj∥22=distij,12+distij,22+⋯+distij,d2(1)
其中 d i s t i j , k dist_{ij,k} distij,k表示 x i \mathbf{x}_i xi与 x j \mathbf{x}_j xj在第 k k k维上的距离。若假定不同属性的重要性不同,则可引入属性权重 w \mathbf{w} w,得到:
dist wed 2 ( x i , x j ) = ∥ x i − x j ∥ 2 2 = w 1 ⋅ d i s t i j , 1 2 + w 2 ⋅ d i s t i j , 2 2 + ⋯ + w d ⋅ d i s t i j , d 2 = [ d i s t i j , 1 d i s t i j , 2 ⋯ d i s t i j , d ] [ w 1 0 ⋯ 0 0 w 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ w d ] [ d i s t i j , 1 d i s t i j , 2 ⋮ d i s t i j , d ] = ( x i − x j ) T W ( x i − x j ) (2) \begin{align*} \text{dist}_{\text{wed}}^2 (\mathbf{x}_i,\mathbf{x}_j) &=\parallel \mathbf{x}_i - \mathbf{x}_j \parallel_2^2 \\&=w_1 \cdot dist_{ij,1}^2+ w_2 \cdot dist_{ij,2}^2+\cdots+w_d \cdot dist_{ij,d}^2 \\&= \begin{bmatrix} dist_{ij,1} & dist_{ij,2} & \cdots & dist_{ij,d} \end{bmatrix} \begin{bmatrix} w_1 & 0 & \cdots & 0 \\ 0 & w_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & w_d \\ \end{bmatrix} \begin{bmatrix} dist_{ij,1} \\ dist_{ij,2} \\ \vdots \\ dist_{ij,d} \\ \end{bmatrix} \\&=(\mathbf{x}_i - \mathbf{x}_j)^T \mathbf{W} (\mathbf{x}_i - \mathbf{x}_j) \end{align*} \tag{2} distwed2(xi,xj)=∥xi−xj∥22=w1⋅distij,12+w2⋅distij,22+⋯+wd⋅distij,d2=[distij,1distij,2⋯distij,d] w10⋮00w2⋮0⋯⋯⋱⋯00⋮wd distij,1distij,2⋮distij,d =(xi−xj)TW(xi−xj)(2)
其中 w i ⩾ 0 w_i \geqslant 0 wi⩾0, W = diag ( w ) \mathbf{W} = \text{diag}(w) W=diag(w)是一个对角矩阵, ( W ) i i = w i (\mathbf{W})_{ii}=w_{i} (W)ii=wi。
式(2)中的 W \mathbf{W} W可通过学习确定,但我们还能再往前走一步: W \mathbf{W} W的非对角元素均为零,这意味着坐标轴是正交的,即属性之间无关;但现实问题中往往不是这样,例如考虑西瓜的“重量”和“体积”这两个属性,它们显然是正相关的,其对应的坐标轴不再正交。为此,将式(2)中的 W \mathbf{W} W替换为一个普通的半正定对称矩阵 M \mathbf{M} M,于是就得到了马氏距离(Mahalanobis distance):
dist mah 2 ( x i , x j ) = ( x i − x j ) T M ( x i − x j ) = ∥ x i − x j ∥ M 2 (3) \text{dist}_{\text{mah}}^2(\mathbf{x}_i,\mathbf{x}_j)=(\mathbf{x}_i - \mathbf{x}_j)^T \mathbf{M} (\mathbf{x}_i - \mathbf{x}_j) = \parallel \mathbf{x}_i - \mathbf{x}_j \parallel^2_{\mathbf{M}} \tag{3} distmah2(xi,xj)=(xi−xj)TM(xi−xj)=∥xi−xj∥M2(3)
标准马氏距离中 M \mathbf{M} M是协方差矩阵的逆,即 M = Σ − 1 \mathbf{M}=\Sigma^{-1} M=Σ−1;在度量学习中 M \mathbf{M} M被赋予更大的灵活性。
其中 M \mathbf{M} M亦称“度量矩阵”,而度量学习则是对 M \mathbf{M} M进行学习。注意到为了保持距离非负且对称, M \mathbf{M} M必须是(半)正定对称矩阵,即必有正交基 P \mathbf{P} P使得 M \mathbf{M} M能写为 M = P P T \mathbf{M}=\mathbf{PP}^T M=PPT。
对 M \mathbf{M} M进行学习当然要设置一个目标。假定我们是希望提高近邻分类器的性能,则可将 M \mathbf{M} M直接嵌入到近邻分类器的评价指标中去,通过优化该性能指标相应地求得 M \mathbf{M} M。下面我们以近邻成分分析(Neighbourhood Component Analysis,简称NCA)为例进行讨论。
近邻分类器在进行判别时通常使用多数投票法,邻域中的每个样本投1票,邻域外的样本投0票。不妨将其替换为概率投票法。对于任意样本 x j \mathbf{x}_j xj,它对 x i \mathbf{x}_i xi分类结果影响的概率为:
p i j = exp ( − ∥ x i − x j ∥ M 2 ) ∑ l exp ( − ∥ x i − x l ∥ M 2 ) (4) p_{ij} = \frac{\text{exp}(-\parallel \mathbf{x}_i - \mathbf{x}_j \parallel^2_{\mathbf{M}})}{\sum_l \text{exp} (-\parallel \mathbf{x}_i - \mathbf{x}_l \parallel^2_{\mathbf{M}})} \tag{4} pij=∑lexp(−∥xi−xl∥M2)exp(−∥xi−xj∥M2)(4)
当 i = j i=j i=j时, p i j p_{ij} pij最大。显然, x j \mathbf{x}_j xj对 x i \mathbf{x}_i xi的影响随着它们之间距离的增大而减小。若以留一法(LOO)正确率的最大化为目标,则可计算 x i \mathbf{x}_i xi的留一法正确率,即它被自身之外的所有样本正确分类的概率为:
p i = ∑ j ∈ Ω i p i j (5) p_i=\sum_{j \in \Omega_i} p_{ij} \tag{5} pi=j∈Ωi∑pij(5)
其中 Ω i \Omega_i Ωi表示与 x i \mathbf{x}_i xi属于相同类别的样本的下标集合。于是,整个样本集上的留一法正确率为:
∑ i = 1 m p i = ∑ i = 1 m ∑ j ∈ Ω i p i j (6) \sum_{i=1}^m p_i = \sum_{i=1}^m \sum_{j \in \Omega_i} p_{ij} \tag{6} i=1∑mpi=i=1∑mj∈Ωi∑pij(6)
将式(4)代入式(6),再考虑到 M = P P T \mathbf{M}=\mathbf{PP}^T M=PPT,则NCA的优化目标为:
min P 1 − ∑ i = 1 m ∑ j ∈ Ω i exp ( − ∥ P T x i − P T x j ∥ 2 2 ) ∑ l exp ( − ∥ P T x i − P T x l ∥ 2 2 ) (7) \min \limits_{\mathbf{P}} 1-\sum_{i=1}^m \sum_{j \in \Omega_i} \frac{\text{exp} \left( -\parallel \mathbf{P}^T \mathbf{x}_i - \mathbf{P}^T \mathbf{x}_j \parallel_2^2 \right)}{\sum_l \text{exp} \left( -\parallel \mathbf{P}^T \mathbf{x}_i - \mathbf{P}^T \mathbf{x}_l \parallel_2^2 \right)} \tag{7} Pmin1−i=1∑mj∈Ωi∑∑lexp(−∥PTxi−PTxl∥22)exp(−∥PTxi−PTxj∥22)(7)
求解式(7)即可得到最大化近邻分类器LOO正确率的距离度量矩阵 M \mathbf{M} M。
可用随机梯度下降法求解。
实际上,我们不仅能把错误率这样的监督学习目标作为度量学习的优化目标,还能在度量学习中引入领域知识。例如,若已知某些样本相似、某些样本不相似,则可定义“必连”(must-link)约束集合 M \mathcal{M} M与“勿连”(cannot-link)约束集合 C \mathcal{C} C, ( x i , x j ) ∈ M (\mathbf{x}_i,\mathbf{x}_j) \in \mathcal{M} (xi,xj)∈M表示 x i \mathbf{x}_i xi与 x j \mathbf{x}_j xj相似, ( x i , x k ) ∈ C (\mathbf{x}_i,\mathbf{x}_k) \in \mathcal{C} (xi,xk)∈C表示 x i \mathbf{x}_i xi与 x k \mathbf{x}_k xk不相似。显然,我们希望相似的样本之间距离较小,不相似的样本之间距离较大,于是可用过求解下面这个凸优化问题获得适当的度量矩阵 M \mathbf{M} M:
KaTeX parse error: Unknown column alignment: s at position 182: … \begin{array} s̲s.t.& \sum_{(\m…
其中约束 M ⪰ 0 \mathbf{M} \succeq 0 M⪰0表明 M \mathbf{M} M必须是半正定的。式(8)要求在不相似样本间的距离不小于1的前提下,使相似样本间的距离尽可能小。
不同的度量学习方法针对不同目标获得“好”的半正定对称距离度量矩阵 M \mathbf{M} M,若 M \mathbf{M} M是一个低秩矩阵,则通过对 M \mathbf{M} M进行特征值分解,总能找到一组正交基,其正交基数目为矩阵 M \mathbf{M} M的秩 rank ( M ) \text{rank}(\mathbf{M}) rank(M),小于原属性数 d d d。于是,度量学习学得的结果可衍生出一个降维矩阵 P ∈ R d × rank ( M ) \mathbf{P} \in \mathbb{R}^{d \times \text{rank}(\mathbf{M})} P∈Rd×rank(M),能用于降维之目的。
度量学习自身通常并不要求学得的 M \mathbf{M} M是低秩的。
低秩矩阵: 如果 X X X是一个 m m m行 n n n列的数值矩阵, rank ( X ) \text{rank}(X) rank(X)是 X X X的秩,假如 rank ( X ) \text{rank}(X) rank(X)远小于 m m m和 n n n,则我们称 X X X是低秩矩阵。低秩矩阵每行或每列都可以用其他的行或列线性表出,可见它包含大量的冗余信息。
2.参考资料
想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️
个人博客网站:https://shichaoxin.com
GitHub:https://github.com/x-jeff