流 形(manifold)的概念最先是在1854年由 Riemann 提出的(德文Mannigfaltigkeit),現代使用的流形定義則是由 Hermann Weyl 在1913年給出的。江澤涵先生對這個名詞的翻譯出自文天祥《正氣歌》「天地有正氣,雜然賦流形」,日本人則將之譯爲「多樣體」,兩者孰雅孰鄙,高下立 判。html
流形(Manifold),通常能夠認爲是局部具備歐氏空間性質的空間。而實際上歐氏空間就是流形最簡單的實例。像地球表面這樣的球面是一個稍爲複雜的例子。通常的流形能夠經過把許多平直的片折彎並粘連而成。算法
流形在數學中用於描述幾何形體,它們提供了研究可微性的最天然的舞臺。物理上,經典力學的相空間和構造廣義相對論的時空模型的四維僞黎曼流形都是流形的實例。他們也用於組態空間(configuration space)。環(torus)就是雙擺的組態空間。網絡
如 果把幾何形體的拓撲結構看做是徹底柔軟的,由於全部變形(同胚)會保持拓撲結構不變,而把解析簇看做是硬的,由於總體的結構都是固定的(譬如一個1維多項 式,若是你知道(0,1)區間的取值,則整個實屬範圍的值都是固定的,局部的擾動會致使全局的變化),那麼咱們能夠把光滑流形看做是介於二者之間的形體, 其無窮小的結構是硬的,而總體結構是軟的。這也許是中文譯名流形的緣由(總體的形態能夠流動),該譯名由著名數學家和數學教育學家江澤涵引入。這樣,流形 的硬度使它可以容納微分結構,而它的軟度使得它能夠做爲不少須要獨立的局部擾動的數學和物理上的模型。app
最容易定義的流形是拓撲流形,它局部看起來象一些"普通"的歐氏空間Rn。形式化的講,一個拓撲流形是一個局部同胚於一個歐氏空間的拓撲空間。這表示每一個點有一個領域,它有一個同胚(連續雙射其逆也連續)將它映射到Rn。這些同胚是流形的座標圖。框架
一般附加的技術性假設被加在該拓撲空間上,以排除病態的情形。能夠根據須要要求空間是豪斯朵夫的而且第二可數。這表示下面所述的有兩個原點的直線不是拓撲流形,由於它不是豪斯朵夫的。函數
流形在某一點的維度就是該點映射到的歐氏空間圖的維度(定義中的數字n)。連通流形中的全部點有相同的維度。有些做者要求拓撲流形的全部的圖映射到同一歐氏空間。這種狀況下,拓撲空間有一個拓撲不變量,也就是它的維度。其餘做者容許拓撲流形的不交併有不一樣的維度。
工具
自從2000年之後,流形學習被認爲屬於非線性降維的一個分支。衆所周知,引導這一領域迅速發展的是2000年Science雜誌上的兩篇文章: Isomap and LLE (Locally Linear Embedding)。
1. 流形學習的基本概念
那 流形學習是什莫呢?爲了好懂,我儘量應用少的數學概念來解釋這個東西。所謂流形(manifold)就是通常的幾何對象的總稱。好比人,有中國人、美國 人等等;流形就包括各類維數的曲線曲面等。和通常的降維分析同樣,流形學習把一組在高維空間中的數據在低維空間中從新表示。和以往方法不一樣的是,在流形學 習中有一個假設,就是所處理的數據採樣於一個潛在的流形上,或是說對於這組數據存在一個潛在的流形。對於不一樣的方法,對於流形性質的要求各不相同,這也就 產生了在流形假設下的各類不一樣性質的假設,好比在Laplacian Eigenmaps中要假設這個流形是緊緻黎曼流形等。對於描述流形上的點,咱們要用座標,而流形上自己是沒有座標的,因此爲了表示流形上的點,必須把流 形放入外圍空間(ambient space)中,那末流形上的點就能夠用外圍空間的座標來表示。好比R^3中的球面是個2維的曲面,由於球面上只有兩個自由度,可是球面上的點通常是用外 圍R^3空間中的座標表示的,因此咱們看到的R^3中球面上的點有3個數來表示的。固然球面還有柱座標球座標等表示。對於R^3中的球面來講,那末流形學 習能夠粗略的歸納爲給出R^3中的表示,在保持球面上點某些幾何性質的條件下,找出找到一組對應的內蘊座標(intrinsic coordinate)表示,顯然這個表示應該是兩維的,由於球面的維數是兩維的。這個過程也叫參數化(parameterization)。直觀上來 說,就是把這個球面儘可能好的展開在經過原點的平面上。在PAMI中,這樣的低維表示也叫內蘊特徵(intrinsic feature)。通常外圍空間的維數也叫觀察維數,其表示也叫天然座標(外圍空間是歐式空間)表示,在統計中通常叫observation。
瞭解了流形學習的這個基礎,那末流形學習中的一些是非也就很天然了,這個下面穿插來講。由此,若是你想學好流形學習裏的方法,你至少要了解一些微分流形和黎曼幾何的基本知識。
2. 表明方法
a) Isomap。
Josh Tenenbaum的Isomap開創了一個數據處理的新戰場。在沒有具體說Isomap以前,有必要先說說MDS(Multidimensional Scaling)這個方法。咱們國內的不少人知道PCA,卻不少人不知道MDS。PCA和MDS是相互對偶的兩個方法。MDS就是理論上保持歐式距離的一 個經典方法,MDS最先主要用於作數據的可視化。因爲MDS獲得的低維表示中心在原點,因此又能夠說保持內積。也就是說,用低維空間中的內積近似高維空間 中的距離。經典的MDS方法,高維空間中的距離通常用歐式距離。
Isomap就是借窩生蛋。他的理論框架就是MDS,可是放在流形的理論 框架內,原始的距離換成了流形上的測地線(geodesic)距離。其它如出一轍。所謂的測地線,就是流形上加速度爲零的曲線,等同於歐式空間中的直線。 咱們常常聽到說測地線是流形上兩點之間距離最短的線。其實這末說是不嚴謹的。流形上兩點之間距離最短的線是測地線,可是反過來不必定對。另外,若是任意兩 個點之間都存在一個測地線,那末這個流形必須是連通的鄰域都是凸的。Isomap就是把任意兩點的測地線距離(準確地說是最短距離)做爲流形的幾何描述, 用MDS理論框架理論上保持這個點與點之間的最短距離。在Isomap中,測地線距離就是用兩點之間圖上的最短距離來近似的,這方面的算法是通常計算機系 中用的圖論中的經典算法。
若是你曾細緻地看過Isomap主頁上的matlab代碼,你就會發現那個代碼的實現複雜度遠超與實際論文中敘 述的算法。在那個代碼中,除了論文中寫出的算法外,還包括了 outlier detection和embedding scaling。這兩樣東西,保證了運行他們的程序獲得告終果通常來講相對比較理想。可是,這在他們的算法中並無敘述。若是你直接按照他論文中的方法來 實現,你能夠體會一下這個結果和他們結果的差距。今後咱們也能夠看出,那幾個做者作學問的嚴謹態度,這是值得咱們好好學習的。
另外比較有 趣的是,Tenenbaum根本不是作與數據處理有關算法的人,他是作計算認知科學(computational cognition science)的。在作這個方法的時候,他還在stanford,02年就去了MIT開創一派,成了CoCoSci 的掌門人,他的組成長十分迅速。可是有趣的是,在Isomap以後,他包括他在MIT帶的學生就歷來再也沒有作過相似的工做。其緣由我今年夏天有所耳聞。 他在今年參加 UCLA Alan Yuille 組織的一個summer school上說,(不是原文,是大意)咱們常常忘了作研究的原始出發點是什莫。他作Isomap就是爲了找一個好的visual perception的方法,他還堅持了他的方向和信仰,computational cognition,他沒有隨波逐流。而由他引導起來的 manifold learning 卻快速的發展成了一個新的方向。
這是一個值得咱們好好思考的問題。咱們作一個東西,選擇一個研究方向到底是爲了什莫。你考慮過嗎?
(固然,此問題也在問我本身)
b) LLE (Locally linear Embedding)
LLE 在做者寫出的表達式看,是個具備十分對稱美的方法. 這種看上去的對稱對於啓發人很重要。LLE的思想就是,一個流形在很小的局部鄰域上能夠近似當作歐式的,就是局部線性的。那末,在小的局部鄰域上,一個點 就能夠用它周圍的點在最小二乘意義下最優的線性表示。LLE把這個線性擬合的係數當成這個流形局部幾何性質的刻畫。那末一個好的低維表示,就應該也具備同 樣的局部幾何,因此利用一樣的線性表示的表達式,最終寫成一個二次型的形式,十分天然優美。
注意在LLE出現的兩個加和優化的線性表達, 第一個是求每一點的線性表示係數的。雖然原始公式中是寫在一塊兒的,可是求解時,是對每個點分別來求得。第二個表示式,是已知全部點的線性表示係數,來求 低維表示(或嵌入embedding)的,他是一個總體求解的過程。這兩個表達式的轉化正好中間轉了個彎,使一些人困惑了,特別後面一個公式寫成一個二次 型的過程並非那末直觀,不少人每每在此卡住,而阻礙了全面的理解。我推薦你們去精讀 Saul 在JMLR上的那篇LLE的長文。那篇文章不管在方法表達仍是英文書寫,我認爲都是精品,值得好好玩味學習。
另外值得強調的是,對於每一點處擬合獲得的係數歸一化的操做特別重要,若是沒有這一步,這個算法就沒有效果。可是在原始論文中,他們是爲了保持數據在平行移動下embedding不變。
LLE的matlab代碼寫得簡潔明瞭,是一個樣板。
在 此有必要提提Lawrence Saul這我的。在Isomap和LLE的做者們中,Saul算是惟一一個以流形學習(並不限於)爲研究對象開創學派的人。Saul早年主要作參數模型有 關的算法。自從LLE之後,坐陣UPen創造了一個個佳績。主要成就在於他的兩個出色學生,Kilian Weinberger和 Fei Sha,作的方法。拿了不少獎,在此很少說,能夠到他主頁上去看。Weinberger把學習核矩陣引入到流形學習中來。他的這個方法在流形學習中影響到 不是很顯著,倒是在 convex optimization 中人人得知。Fei Sha不用多說了,machine learning中一個閃亮的新星,中國留學生之驕傲。如今他們一個在Yahoo,一個在Jordan手下作PostDoc。
c) Laplacian Eigenmaps
要說哪個方法被作的全面,那莫非LE莫屬。若是隻說LE這個方法自己,是不新的,許多年前在作mesh相關的領域就開始這莫用。可是放在黎曼幾何的框架內,給出完整的幾何分析的,應該是Belkin和Niyogi(LE做者)的功勞。
LE的基本思想就是用一個無向有權圖來描述一個流形,而後經過用圖的嵌入(graph embedding)來找低維表示。說白了,就是保持圖的局部鄰接關係的狀況把這個圖從高維空間中從新畫在一個低維空間中(graph drawing)。
在至今爲止的流行學習的典型方法中,LE是速度最快、效果相對來講不怎莫樣的。可是LE有一個其餘方法沒有的特色,就是若是出現outlier狀況下,它的魯棒性(robustness)特別好。
後來Belkin和Niyogi又分析了LE的收斂性。你們不要忽視這個問題,很重要。鼓勵有興趣數學功底不錯的人好好看看這篇文章。
d) Hessian Eigenmaps
若是你對黎曼幾何不懂,基本上看不懂這個方法。又加做者表達的抽象,因此絕大多數人對這個方法瞭解不透徹。在此我就根據我本身的理解說說這個方法。
這個方法有兩個重點:(1)若是一個流形是局部等距(isometric)歐式空間中一個開子集的,那末它的Hessian矩陣具備d+1維的零空間。(2)在每一點處,Hessian係數的估計。
首 先做者是經過考察局部Hessian的二次型來得出結論的,若是一個流形局部等距於歐式空間中的一個開子集,那末由這個流形patch到開子集到的映射函 數是一個線性函數,線性函數的二次混合導數爲零,因此局部上由Hessian係數構成的二次型也爲零,這樣把每一點都考慮到,過渡到全局的Hessian 矩陣就有d+1維的零空間,其中一維是常函數構成的,也就是1向量。其它的d維子空間構成等距座標。這就是理論基礎的大意,固然做者在介紹的時候,爲了保 持理論嚴謹,做了一個由切座標到等距座標的過渡。
另一個就是局部上Hessian係數的估計問題。我在此引用一段話:
If you approximate a function f(x) by a quadratic expansion
f(x) = f(0) + (grad f)^T x + x^T Hf x + rem
then the hessian is what you get for the quadratic component. So simply over a given neighborhood, develop the operator that approximates a function by its projection on 1, x_1,...,x_k, x_1^2,...,x_k^2, x_1*x_2,... ,x_{k-1}*x_{k}. Extract the component of the operator that delivers the projection on x_1^2,...,x_k^2, x_1*x_2,... ,x_{k-1}*x_{k}.
dave
這 段話是我在初學HE時候,寫信問Dave Donoho,他給個人回信。但願你們領會。若是你瞭解了上述基本含義,再去細看兩遍原始論文,也許會有更深的理解。因爲HE牽扯到二階導數的估計,因此 對噪聲很敏感。另外,HE的原始代碼中在計算局部切座標的時候,用的是奇異值分解(SVD),因此若是想用他們的原始代碼跑一下例如圖像之類的真實數據, 就特別的慢。其實把他們的代碼改一下就能夠了,利用通常PCA的快速計算方法,計算小尺寸矩陣的特徵向量便可。還有,在原始代碼中,他把Hessian系 數歸一化了,這也就是爲什莫他們叫這個方法爲 Hessian LLE 的緣由之一。
Dave Dohono是學術界公認的大牛,在流形學習這一塊,是他帶着他的一個學生作的,Carrie Grimes。如今這個女性研究員在Google作 project leader,學術界女生同窗的楷模 : )
e) LTSA (Local tangent space alignment)
很榮幸,這個是國內學者(浙江大學數學系的老師ZHANG Zhenyue)爲第一做者作的一個在流行學習中最出色的方法。因爲這個方法是由純數學作數值分析出身的老師所作,因此原始論文看起來公式一大堆,好像很難似的。其實這個方法很是直觀簡單。
象 Hessian Eigenmaps 同樣,流形的局部幾何表達先用切座標,也就是PCA的主子空間中的座標。那末對於流形一點處的切空間,它是線性子空間,因此能夠和歐式空間中的一個開子集 創建同構關係,最簡單的就是線性變換。在微分流形中,就叫作切映射 (tangential map),是個很天然很基礎的概念。把切座標求出來,創建出切映射,剩下的就是數值計算了。最終這個算法劃歸爲一個很簡單的跌代加和形式。若是你已經明白 了MDS,那末你就很容易明白,這個算法本質上就是MDS的從局部到總體的組合。
這裏主要想重點強調一下,那個論文中使用的一個從局部幾何到總體性質過渡的alignment技術。在spectral method(特徵分解的)中,這個alignment方法特別有用。只要在數據的局部鄰域上你的方法能夠寫成一個二次項的形式,就能夠用。
其 實LTSA最先的版本是在02年的DOCIS上。這個alignment方法在02年末Brand的 charting a manifold 中也出現,隱含在Hessian Eigenmaps中。在HE中,做者在從局部的Hessian矩陣過渡到全局的Hessian矩陣時,用了兩層加號,其中就隱含了這個 alignment方法。後來國內一個叫 ZHAO Deli 的學生用這個方法從新寫了LLE,發在Pattern Recognition上,一個短文。能夠預見的是,這個方法還會被髮揚光大。
ZHA Hongyuan 後來專門做了一篇文章來分析 alignment matrix 的譜性質,有興趣地能夠找來看看。
f) MVU (Maximum variance unfolding)
這 個方法剛發出來之後,名字叫作Semi-definite Embedding (SDE)。構建一個局部的稀疏歐式距離矩陣之後,做者經過必定約束條件(主要是保持距離)來學習到一個核矩陣,對這個核矩陣作PCA就獲得保持距離的 embedding,就這莫簡單。可是就是這個方法得了多少獎,本身能夠去找找看。我的觀點認爲,這個方法之因此被如此受人賞識,不管在vision仍是 在learning,除了給流形學習這一領域帶來了一個新的解決問題的工具以外,還有兩個重點,一是核方法(kernel),二是半正定規劃(semi- definite programming),這兩股風不管在哪一個方向(learning and Vision)上都吹得正猛。
g) S-Logmaps
aa
這 個方法不太被人所知,可是我認爲這個是流形學習發展中的一個典型的方法(其實其餘還有不少人也這莫認爲)。就效果來講,這個方法不算好,說它是一個典型的 方法,是由於這個方法應用了黎曼幾何中一個很直觀的性質。這個性質和法座標(normal coordinate)、指數映射(exponential map)和距離函數(distance function)有關。
若是你瞭解黎曼幾何,你會知道,對於流形上的一條測地線,若是給定初始 點和初始點處測地線的切方向,那莫這個測地線就能夠被惟一肯定。這是由於在這些初始條件下,描述測地線的偏微分方程的解是惟一的。那末流形上的一條測地線 就能夠和其起點處的切平面上的點創建一個對應關係。咱們能夠在這個切平面上找到一點,這個點的方向就是這個測地線在起點處的切方向,其長度等於這個測地線 上的長。這樣的一個對應關係在局部上是一一對應的。那末這個在切平面上的對應點在切平面中就有一個座標表示,這個表示就叫作測地線上對應點的法座標表示 (有的也叫指數座標)。那末反過來,咱們能夠把切平面上的點映射到流形上,這個映射過程就叫作指數映射(Logmap就倒過來)。若是流形上每個點均可 以這樣在同一個切平面上表示出來,那末咱們就能夠獲得保持測地線長度的低維表示。若是這樣作獲得,流形必須能夠被單座標系統所覆蓋。
若是 給定流形上的採樣點,若是要找到法座標,咱們須要知道兩個東西,一是測地線距離,二是每一個測地線在起點處的切方向。第一個東西好弄,利用Isomap中的 方法直接就能夠解決,關鍵是第二個。第二個做者利用了距離函數的梯度,這個梯度和那個切方向是一個等價的關係,通常的黎曼幾何書中都有敘述。做者利用一個 局部切座標的二次泰勒展開來近似距離函數,而距離是知道的,就是測地線距離,局部切座標也知道,那末經過求一個簡單的最小二乘問題就能夠估計出梯度方向。
若是明白這個方法的幾何原理,你再去看那個方法的結果,你就會明白爲什莫在距離中心點比較遠的點的embedding均可以清楚地看到在一條條線上,效果不太好。
bb
最 近這個思想被北大的一個年輕的老師 LIN Tong 發揚光大,就是ECCV‘06上的那篇,還有即將刊登出的TPAMI上的 Riemannian Manifold Learning,實爲國內研究學者之榮幸。Lin的方法效果很是好,可是雖然取名叫Riemannian,沒有應用到黎曼幾何自己的性質,這樣使他的方 法更容易理解。
Lin也是以一個切空間爲基準找法座標,這個出發點和思想和Brun(S-Logmaps)的是同樣的。可是Lin全是在 局部上操做的,在得出切空間原點處局部鄰域的法座標之後,Lin採用逐步向外擴展的方法找到其餘點的法座標,在某一點處,保持此點到它鄰域點的歐式距離和 夾角,而後轉化成一個最小二乘問題求出此點的法座標,這樣未知的利用已知的逐步向外擴展。說白了就像縫網同樣,從幾個臨近的已知點開始,逐漸向外擴散的 縫。效果好是必然的。
有人作了個好事情,作了個系統,把幾個方法的matlab代碼放在了一塊兒http://www.math.umn.edu/~wittman/mani/
以上提到方法論文,均可以用文中給出的關鍵詞藉助google.com找到。
3. 基本問題和我的觀點
流形學習如今還基本處於理論探討階段,在實際中難以施展拳腳,不過在圖形學中除外。我就說說幾個基本的問題。
a. 譜方法對噪聲十分敏感。但願你們本身作作實驗體會一下,流形學習中譜方法的脆弱。
b. 採樣問題對結果的影響。
c. 收斂性
d. 一個最尷尬的事情莫過於,若是用來作識別,流形學習線性化的方法比原來非線性的方法效果要好得多,若是用原始方法作識別,那個效果叫一個差。也正由於此,使不少人對流形學習產生了懷疑。緣由方方面面 : )
e. 把偏微分幾何方法引入到流形學習中來是一個頗有但願的方向。這樣的工做在最近一年已經有出現的跡象。
f. 坦白說,我已不能見廬山真面目了,仍是留給你們來講吧
結尾寫得有點草率,實在是精疲力盡了,不過還好主體部分寫完。
『如下是dodo在回帖中補充的內容:
看一些問到人臉識別有關的問題。因爲此文結尾寫得有點草,我這裏再補充一下。
dodo
1) 人臉識別的識別效果首先取決於 visual feature,圖片中表示的模式和通常的向量模式仍是有很大差異的。visual feature的好壞,決定了你所用的向量到底能不能表明這個圖像中的模式和這個模式與其餘模式的正確關係,若是能,那再談降維識別的事情。
結構能保持,效果就好;不能保持,就很難說。
2)如今流形學習中的極大多數方法不收斂。正由於這樣,在原始樣本集中,若是增添少部分點,或是減小少部分點,或是擾動少部分點,都會對最後的nonlinear embedding產生影響。也就是說,極不穩定。
到如今爲止,就 Laplacian Eigenmaps 有收斂性的證實。可是,這個被證實的結果的前提條件是啥,這個很重要。若是是均勻採樣,那麼基本對實際用處不大,理論上有引導做用。
3)採樣的問題,包括採樣密度和採樣方式,都對最後結果有顯著影響。而實際數據都是很是複雜的。
4)最後降到多少維的問題。這個對於流行學習來講,也是一個正在爭論探討的問題。
5)多流形的問題。如今的流形學習算法能處理的流形狀況很是的弱,前提建設的條件很是的強,好比單座標系統覆蓋,與歐式空間的開子集等距等等。對於具備不一樣維數的多流形混合的問題,尚未人能解。而
這偏偏是模式識別中一個合理的狀況!(具備不一樣維數的多流形混合的問題)
而4)5)後二者是牢牢聯繫在一塊兒。
這幾點也是流形學習能發揮其威力必須克服的問題。實際的狀況並非像一些人說的「流形學習已經作爛了」,問題在於
1)沒有找到真正的問題在哪,
2)知道問題在哪兒,解決不了。
這就是流形學習目前的情況,若是你能用恰當的理論,而不是技巧和實驗,解決了2)、5)其中一個問題,你就會是流形學習進入下一個黃金時期的功臣。
而如今的狀況是,引導和開創流形學習進入第一個黃金時期和爲這個黃金時期推波助瀾的那第一撥人,大都再也不爲此而努力了。如今就M. Belkin還在第一線爲2)問題而奮鬥。
另一個可喜的局面是,那些專職搞數值和幾何的數學人開始涉足此領域,這必將帶動流形學習這個方向深刻發展,這也是這個方向發展的一個必然。
如今流形學習就處在這個懵懂的時期,就等着打開下一個局面的人出現,這須要機遇或者天才。可是從歷史的角度來看,能夠確定的是,這樣的人一定出現。流形學習頗有可能會經歷神經網絡相似的發展歷程,可是比神經網絡更新的要快的多。
細數歷史,能夠看到機會。若是你對此有興趣,何時加入都不晚。學習
局部線性嵌入(LLE)
前提假設:採樣數據所在的低維流形在局部是線性的,即每一個採樣點能夠用它的近鄰點線性表示。
求解方法:特徵值分解。
LLE算法:
優化
多維尺度變換(MDS)
ui
等距映射(Isomap)
基本思想:創建在多維尺度變換(MDS)的基礎上,力求保持數據點的內在幾何性質,即保持兩點間的測地距離。
前提假設:
核心:
估計兩點間的測地距離:
拉普拉斯特徵映射(Laplacian Eigenmap)
基本思想:在高維空間中離得很近的點投影到低維空間中的象也應該離得很近。
求解方法:求解圖拉普拉斯算子的廣義特徵值問題。
本文轉自連接 http://blog.sciencenet.cn/blog-722391-583413.html
推薦參考連接: http://www.pami.sjtu.edu.cn/people/xzj/introducelle.htm
http://en.wikipedia.org/wiki/Nonlinear_dimensionality_reduction