GFK(Geodesic Flow Kernel)關於測地線核的無監督域適應演算法
論文地址:http://www.cs.utexas.edu/users/grauman/papers/subspace-cvpr2012.pdf
通過測地線演算法完成遷移學習是一種不同的方向,其中GFK又是測地線演算法中經典的一個,整理了網上的一些關於GFK的解釋和流形空間的解釋形成了此篇筆記,希望能夠幫助更好的理解GFK,引用的內容連結詳見參考。
背景
有很多遷移學習的方法是將源域對映到目標域,或者將源域和目標域對映到一個共同空間中,然後就可以使用經過對映後的源域輔助目標域完成任務,我們假設源域和目標域是高維空間中的兩個點(Grassmann流形),那麼從一個點投影到另一個點的一種方法是一個點慢慢一步一步靠近另一個點,在這種情況下,如果是在歐式空間中,已知兩個點的座標,可以直接通過計算兩點之間的歐式距離進行對映,當時資料中的現實情況常常不是這麼簡單的,資料中兩點的歐式距離往往也不是我們想要的真實距離,比如下面這張很經典的“瑞士捲圖”:
圖中兩點的歐式距離是兩點之間的連線,而這個距離往往對我們來說意義不大,我們需要一個新的距離:一個點沿著捲走到另一個點的距離,即兩個點在流形空間中的距離,而走過的這條線稱為“測地線”。
流形空間
我們所能觀察到的資料實際上是由一個低維流形對映到高維空間上的。由於資料內部特徵的限制,一些高維中的資料會產生維度上的冗餘,實際上只需要比較低的維度就能唯一地表示。舉個例子,比如說我們在平面上有個圓,如何表示這個圓呢?如果我們把圓放在一個平面直角座標系中,那一個圓實際上就是由一堆二維點構成的。比如一個單位圓: (1, 0) 是一個在圓上的點, (0, 1) 也是一個在圓上的點,但 (0,0) 和 (2,3) 等等很多點是不在這個圓上的。顯然如果用二維座標來表示,我們沒有辦法讓這個二維座標系的所有點都是這個圓上的點。也就是說,用二維座標來表示這個圓其實是有冗餘的。我們希望,如果能建立某一種描述方法,讓這個描述方法所確定的所有點的集合都能在圓上,甚至能連續不間斷地表示圓上的點,那就好了!有沒有這種方法呢?對於圓來說,當然有!那就是用極座標。在極座標的表示方法下,圓心在原點的圓,只需要一個引數就能確定:半徑。當你連續改變半徑的大小,就能產生連續不斷的“能被轉換成二維座標表示”的圓。所以說,實際上二維空間中的圓就是一個一維流形。與之相似的,三維空間中一個球面,用x, y, z三個座標軸確定時會產生冗餘(很多在三維空間中的資料點並不在球面上)。但其實只需要用兩個座標就可以確定了,比如經度和維度。只要給定任何合法的精度和維度,我們就都能保證這個點肯定在球面上!像上面的“瑞士捲”,如果能找到一種空間完整的表示該卷形而很少冗餘甚至沒有冗餘,那麼這個空間就是一種流形空間。經典的構造流形空間的方法有ISOMAP、locally linear embedding、laplacian eigenmap等,而其中ISOMAP主要用的是一種在降維的過程中保持原始點距離不變的思想,具體可以參考筆記ISOMAP和MDS演算法。
GFK
咳咳,前戲已經做足,那麼就到重要時刻了,GFK想要解決了兩個問題來完成源域的遷移:
- 構造一條測地線來使源域靠近目標域
- 當存在多個源域時,提出Rank of Domain度量計算出各源域與目標域之間的距離,用於選擇合適的源域遷移。
構造測地線
既然在流形空間中,座標資訊不好用的情況下,我們可以通過在兩點之間構建一條線,我們可以在兩點之間選取一些點(比如k個點),通過這些點的連線來完成測地線的構造,這也是另一個遷移學習演算法SGF的做法,而其中的d取多少才合適往往是個問題,在GFK中,則是通過對兩點所在的流行空間函式進行積分,完成這條線的構造,這樣看起來也比較科學、準確呀。
正如上圖中, 為空間中的源域表示, 則為空間中的目標域表示, 通過一步一步走到 ,而中間的路程變換就為測地線(geodesic)。並且有以下性質:
測地線中,靠近 的 與源域相似,靠近 的 與目標域相似,而中間的類似於二者之間的融合。我們已經看出來了,這個測地線才是主角啊,那怎麼構造呢?
我們令
,即原本是
維的
和
為經過降維後的
維子空間,並令
,瞭解SVD的應該知道,這裡的D*d維相當於
的特徵向量中的前d個組成,而
為剩餘的D-d個特徵向量組成,並且他們之間是兩兩正交的,即:
。而將上面的圖引數化,則為:
起點和終點我們知道了,那其他的
怎麼表示呢?如下:
其中
為正交矩陣,通過SVD分割而來:
其中
為對角矩陣,在矩陣SVD中,
內的值為稱為奇異值,這裡則是對
的內積進行奇異值分解,而
內的值為
和
,同時稱
為
的"principal angles"(兩矩陣之間的夾角)。作為一個標準程式猿,數學基礎確實不太好,關於為何對
的內積進行奇異值分解,得到的對角陣
內的值為"principal angles"的正弦、餘弦,個人的理解是:在SVD中,有那麼一步是關於
進行特徵值分解