1. 程式人生 > >GFK(Geodesic Flow Kernel)關於測地線核的無監督域適應演算法

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中,則是通過對兩點所在的流行空間函式進行積分,完成這條線的構造,這樣看起來也比較科學、準確呀。

正如上圖中, Φ ( 0 ) \Phi(0) 為空間中的源域表示, Φ ( 1 ) \Phi(1) 則為空間中的目標域表示, Φ ( 0 ) \Phi(0) 通過一步一步走到 Φ ( 1 ) \Phi(1) ,而中間的路程變換就為測地線(geodesic)。並且有以下性質:

測地線中,靠近 Φ ( 0 ) \Phi(0) Φ ( t ) \Phi(t) 與源域相似,靠近 Φ ( 1 ) \Phi(1) Φ ( t ) \Phi(t) 與目標域相似,而中間的類似於二者之間的融合。我們已經看出來了,這個測地線才是主角啊,那怎麼構造呢?

我們令 P S , P T R D d P_S,P_T\in R^{D*d}​ ,即原本是 D D D*D 維的 P S P_S​ P T P_T​ 為經過降維後的 D d D*d 維子空間,並令 R S R D ( D d ) R_S\in R^{D*(D-d)}​ ,瞭解SVD的應該知道,這裡的D*d維相當於 P S P_S​ 的特徵向量中的前d個組成,而 R S R_S​ 為剩餘的D-d個特徵向量組成,並且他們之間是兩兩正交的,即: R S T P S = 0 R_S^TP_S=0​ 。而將上面的圖引數化,則為:
Φ : t [ 0 , 1 ] Φ : t G ( d , D ) \Phi : t\in [0,1] \rightarrow \Phi : t\in G(d,D)
s t . P S = Φ [ 0 ] , P T = Φ [ 1 ] st. P_S=\Phi[0],P_T=\Phi[1]
起點和終點我們知道了,那其他的 Φ [ t ] \Phi[t] 怎麼表示呢?如下:
Φ ( t ) = P S U 1 Γ ( t ) R S U 2 Σ ( t ) \Phi(t)=P_SU_1\Gamma(t)-R_SU_2\Sigma(t)
其中 U 1 U 2 U_1、U_2 為正交矩陣,通過SVD分割而來:
P S T P T = U 1 Γ ( t ) V T , R S T P T = U 2 Σ ( t ) V T P_S^TP_T=U_1\Gamma(t)V^T,R_S^TP_T=-U_2\Sigma(t)V^T
其中 Σ Γ \Sigma、\Gamma 為對角矩陣,在矩陣SVD中, Σ Γ \Sigma、\Gamma 內的值為稱為奇異值,這裡則是對 P S T P T P_S^T、P_T 的內積進行奇異值分解,而 Σ Γ \Sigma、\Gamma 內的值為 cos ( θ ) \cos(\theta) sin ( θ ) \sin(\theta) ,同時稱 θ \theta P S T P T P_S^T、P_T 的"principal angles"(兩矩陣之間的夾角)。作為一個標準程式猿,數學基礎確實不太好,關於為何對 P S T P T P_S^T、P_T 的內積進行奇異值分解,得到的對角陣 Σ Γ \Sigma、\Gamma 內的值為"principal angles"的正弦、餘弦,個人的理解是:在SVD中,有那麼一步是關於 A A T AA^T 進行特徵值分解 A A T = U Σ V T AA^T=U\Sigma V^T

相關推薦

GFK(Geodesic Flow Kernel)關於地線監督適應演算法

論文地址:http://www.cs.utexas.edu/users/grauman/papers/subspace-cvpr2012.pdf 通過測地線演算法完成遷移學習是一種不同的方向,其中GFK又是測地線演算法中經典的一個,整理了網上的一些關於GFK的解釋和流形空間的解釋形成了此

吳恩達機器學習(第十四章)---監督學習kmeans演算法

一、kmeans演算法 Kmeans演算法的流程: 1.根據我們要分的類別數,就是你要將資料分成幾類(k類),隨機初始化k個點(暫且稱為類別點) 2.計算每個資料點到k個類別點的距離,將其歸類到距離最近的那個類別點 3.計算每一類中包含的資料點的位置的平均值,比如,包含a(x1,y1

影象處理系列(1):地線動態輪廓(geodesic active contour)

動態輪廓是影象分割的一個熱點,從早期的snake,就有很多的優化版,測地線動態輪廓(GAC)就是其中之一。總體來說,其摒棄了snake對引數的依賴,並加入了水平集,使得輪廓曲線更貼近目標物的拓撲結構。 經典的動態輪廓模型(activecontour model)的能量公式為

Pycharm激活教程,親可用,時間限制!

tex span download 測試 oop 安裝 pytho web開發 odin 說實話.作為一個Coder.每天在各種IDE中切換編寫Code.如果一個IDE Look and Feel總是無形中影響你每天Code Farm的心情.那該是多麽不爽的事情.特別是針對

#26 Linux kernel(內)詳解與uname、lsmod、modinfo、depmod、insmod、rmmod、modprobe...命令用法

linux kernel(內核)詳解與uname、lsmod、modinfo、depmod、insmod、rmmod、modprobe...命令用法Linux kernel: 內核設計流派: 單內核設計,但是充分借鑒了微內核體系設計的優點,為內核引入了模塊化機制,內核高度模塊化; 內核被模塊化之

kernel筆記——內編譯與進程管理

代碼 IE x86 nis 版本 href 界面 fork函數 linux下 內核與操作系統 由於一些商業操作系統設計上的缺陷以及日益龐雜,“操作系統”的概念對很多人而言變得含糊不清。在進一步討論Linux內核的話題前,我們先區分“內核”與“操作系統”這兩個概念。

ml入門系列三監督學習和監督學習

tex tin swa core logging eba webapi handle 5% %E6%9C%89%E5%85%B3handler%E7%94%A8%E6%B3%95%E6%B1%82%E5%8A%A9%E5%95%8A aspnetcoremvc?????÷

監督學習

新聞 而在 組織 repeat 過程 -s 空間 csdn margin 無監督學習 監督學習通過發現數據的其他屬性和類別屬性之間的關聯模式並通過對這些模型來預測未知數據實例的類別屬性。這些屬性通常表示一些現實世界中的預測或分類問題,例如通過判斷新聞是屬於體育類還是屬於政

監督學習,監督學習和半監督學習

思想 learn 尋找 很多 ear 目標 dsm 工作 變量 概念:監督學習、無監督學習與半監督學習 監督學習 : supervised learning 無監督學習 : unsupervised learning 半監督學習 : semi-supervised le

學習筆記TF057:TensorFlow MNIST,卷積神經網絡、循環神經網絡、監督學習

back ide str 描述 com 類別 bat softmax 比例 MNIST 卷積神經網絡。https://github.com/nlintz/TensorFlow-Tutorials/blob/master/05_convolutional_net.py 。Te

監督學習之聚類2——DBSCAN

odi alt times 指標 pyplot shape otl 明顯 score 根據學生月上網時間數據運用DBSCAN算法計算: #coding=utf-8 import numpy as np import sklearn.cluster as skc from

【吳恩達機器學習】學習筆記——1.5監督學習

分類 哪些 rep epm 朋友 工作 style class 客戶 1 無監督學習:在不知道數據點的含義的情況下,從一個數據集中找出數據點的結構關系。 2 聚類算法:相同屬性的數據點會集中分布,聚集在一起,聚類算法將數據集分成不同的聚類。也就是說,機器不知道這些數據點具體

監督學習筆記

end who 配送 names core 用例 wid mil -m 無監督學習 1、簡介 無監督學習是一種對不含標記的數據建立模型的機器學習範式。最常見的無監督學習方法是聚類,就是講無標記的數據分成幾種集群,這些集群通常是根據某種相似度指標進行的,如歐氏距離(Eucl

K-均值算法(數據挖掘監督學習)

roi 挖掘 mean nts 步驟 com ima spa 要求 一、無監督學習   1、聚類:是一個將數據集中在某些方面相似的數據成員進行分類組織的過程。因此,一個聚類就是一些數據實例的集合。聚類技術經常被稱為無監督學習。 二、K-均值聚類   1、k—均值算算法:是發

監督學習與監督學習

半監督學習 類別 ear gist 神經網絡 有關 代表性 整數 是否 監督學習與無監督學習的區別_機器學習 最近發現很多人還是不能真正分清機器學習的學習方法,我以個人的愚見結合書本簡單說一下這個 機器學習中,可以根據學習任務的不同,分為監督學習(Supervised Le

監督學習和監督學習

得到 機器學習 事先 分辨 是什麽 輸入數據 評價 一個 style 機器學習的常用方法,主要分為有監督學習(supervised learning)和無監督學習(unsupervised learning)。   監督學習,就是人們常說的分類,通過已有的訓練樣本(即已

監督學習——K-均值聚類算法對未標註數據分組

機器學習算法 可能 變化 分類 結果 sts lis mat 得到 無監督學習 和監督學習不同的是,在無監督學習中數據並沒有標簽(分類)。無監督學習需要通過算法找到這些數據內在的規律,將他們分類。(如下圖中的數據,並沒有標簽,大概可以看出數據集可以分為三類,

監督學習小記(參考)

廣泛 個數 就是 sca 協方差矩陣 ear 元素 約束 方法 下面淩亂的小記一下無監督學習 無監督學習->聚類 降維 聚類:數據相似性 相似性的評估:兩個數據樣本間的距離 距離:歐氏距離 曼哈頓距離 馬氏距離 夾角余弦 sklearn 聚類算法 sklearn.cl

監督學習算法-Apriori進行關聯分析

thead 包含 序號 排列組合 關聯分析 大數據量 優缺點 如果 電視 關聯分析 是無監督訊息算法中的一種,Apriori主要用來做_關聯分析_,_關聯分析_可以有兩種形式:頻繁項集或者關聯規則。舉個例子:交易訂單 序號 商品名稱 1 書籍,電腦 2 杯

監督學習、監督學習、半監督學習

class tail detail 局部特征 連續 tails cannot 得到 ica 1.有監督學習:教計算機如何做事情。   對於機器學習來說,有監督學習就是訓練數據既有特征又有標簽,通過訓練,讓機器可以自己找到特征和標簽之間的聯系,在面對只有特征沒有標簽的數據時,