本篇文章是对《Geodesic Flow Kernel for Unsupervised Domain Adaptation》的学习。
格拉斯曼流形
在讲述GFK之前我们先引入一个概念,即格拉斯曼流形。百度百科中的定义:
设W是n维向量空间,考虑W中全体k维子空间构成的集合G=Grass(k,W),因为G上有自然的流形结构,所以我们将它称为格拉斯曼流形。
关于这个定义我们并不需要深究,只要知道n维空间的所有k维子空间构成了一个流形结构即可。
1 SGF
之前博客讲的方法均是将源域和目标域数据映射到同一个空间中,SGF(Sampling Geodesic Flow)则引入了格拉斯曼流形,将源域和目标域看做这个流形结构中的两个点,并构建从源域到目标域的测地线,测地线上的每个点可以看作是一个子空间,通过将数据映射在该测地线上的不同子空间,并进行分析,学习算法可以很好地提取较为恒定的特征(即在子空间变化的过程中较为稳定的一部分)。一个直观的理解就是汽车出发地驶向目的地,这个过程中车身会位移,会旋转,运气不好出现点剐蹭还会发生一些形变,但整个过程车的型号、车牌号、具体的一些硬件配置等等是不会变化的,对车辆在行驶过程的影像进行分析,可以获取这些稳定的特征,用于接下来的特定任务场景中。
SGF的步骤大体如下:(1)构建连接源域和目标域的测地线;(2)对测地线进行采样,获取若干子空间;(3)将特征映射到这些子空间上,并将在这些子空间上的映射结果连接起来,构成一个高维的向量(super-vectors);(4)将这个高维向量进行降维;(5)用最后降维后的样本构建分类器。
2 GFK
SGF存在一些问题,如在该路径中找多少点(即多少子空间),子空间的维度该如何确定等。GFK对这些问题进行了解答。接下来我就主要讲一下GFK(主要还是SGF这篇文章看的不太懂。。。)。
GFK的思路:(1)确定子空间的维度;(2)构建测地线;(3)计算测地线核;(4)使用核在标注数据上构建分类器。
2.1 Subspace disagreement measure(SDM)
首先是子空间维度的确定,本篇文章提出了SDM来对子空间的不一致度进行度量。我们分别对S(源域数据)、T(目标域数据)、S+T(源域数据和目标域数据合并起来)进行PCA,获取相应的PCA子空间: P C A S 、 P C A T 、 P C A S + T PCA_{S}、PCA_{T}、PCA_{S+T} PCAS、PCAT、PCAS+T(列向量构成了该子空间的一组基,每一列为该空间中一个基向量),其中三个矩阵的大小分别为 d ∗ d S 、 d ∗ d T 、 d ∗ d S + T d*d_{S}、d*d_{T}、d*d_{S+T} d∗dS、d∗dT、d∗dS+T,d为原始数据的维度, d S 、 d T 、 d S + T d_{S}、d_{T}、d_{S+T} dS、dT、dS+T为PCA降维后的维度。
文章给出了主角( principal angles)的概念,用 P C A S PCA_{S} PCAS的转置乘以 P C A S + T PCA_{S+T} PCAS+T,得到矩阵A( d S ∗ d S + T d_{S}*d_{S+T} dS∗dS+T),对A进行奇异值分解,将奇异值向量的每个元素理解为一个cos值,通过arccos获取角度,设角度构成的向量为 α \alpha α,那么 α d \alpha_{d} αd即为 P C A S PCA_{S} PCAS与 P C A S + T PCA_{S+T} PCAS+T之间的第d个主角。至于为什么这么定义,谈一下个人理解,因为 P C A S PCA_{S} PCAS和 P C A S + T PCA_{S+T} PCAS+T中的每个列向量均为单位向量,矩阵A的每个元素代表了两个基向量的内积,即两个坐标轴之间的夹角的余弦值,而A的奇异值则在一定程度上体现了两个坐标系之间的余弦值的大小。
分别获取 P C A S PCA_{S} PCAS与 P C A S + T PCA_{S+T} PCAS+T、 P C A T PCA_{T} PCAT与 P C A S + T PCA_{S+T} PCAS+T的主角向量,并升序排列,得到向量 α \alpha α和 β