ML:流形学习
???????? 很多原理性的東西需要有基礎性的理解,還是篇幅過少,所以講解的不是特別的清晰。
???????? 原文鏈接:http://blog.sciencenet.cn/blog-722391-583413.html
??????? 流形(manifold)的概念最早是在1854年由 Riemann 提出的(德文Mannigfaltigkeit),現代使用的流形定義則是由 Hermann Weyl 在1913年給出的。
???????? 流形(Manifold),一般可以認為是局部具有歐氏空間性質的拓撲空間。而實際上歐氏空間就是流形最簡單的實例。像地球表面這樣的球面是一個稍為復雜的例子。一般的流形可以通過把許多平直的片折彎并粘連而成。
?? ? ? (流形被定義為局部具有歐式幾何特性的拓撲空間 ,但有誰知道空間的原型,如果我們嵌入了流形里面,我倒想看看我的思維的流向。對于尋找相似最近鄰或許是一個很好的啟示,不過希望除此之外有更好的方法。 ? )
?? ? ? ? 流形在數學中用于描述幾何形體,它們提供了研究可微性的最自然的舞臺。物理上,經典力學的相空間和構造廣義相對論的時空模型的四維偽黎曼流形都是流形的實例。他們也用于組態空間(configuration space)。環(torus)就是雙擺的組態空間。
? ? ? ? 如果把幾何形體的拓撲結構看作是完全柔軟的,因為所有變形(同胚)會保持拓撲結構不變,而把解析簇看作是硬的,因為整體的結構都是固定的(譬如一個1維多項式,如果你知道(0,1)區間的取值,則整個實屬范圍的值都是固定的,局部的擾動會導致全局的變化),那么我們可以把光滑流形看作是介于兩者之間的形體,其無窮小的結構是硬的,而整體結構是軟的。這也許是中文譯名流形的原因(整體的形態可以流動),該譯名由著名數學家和數學教育學家江澤涵引入。這樣,流形的硬度使它能夠容納微分結構,而它的軟度使得它可以作為很多需要獨立的局部擾動的數學和物理上的模型。
? ? ? ? 最容易定義的流形是拓撲流形,它局部看起來象一些"普通"的歐氏空間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
?? 這個方法不太被人所知,但是我認為這個是流形學習發展中的一個典型的方法(其實其他還有很多人也這莫認為)。就效果來說,這個方法不算好,說它是一個典型的方法,是因為這個方法應用了黎曼幾何中一個很直觀的性質。這個性質和法坐標(normal coordinate)、指數映射(exponential map)和距離函數(distance function)有關。
??? 如果你了解黎曼幾何,你會知道,對于流形上的一條測地線,如果給定初始點和初始點處測地線的切方向,那莫這個測地線就可以被唯一確定。這是因為在這些初始條件下,描述測地線的偏微分方程的解是唯一的。那末流形上的一條測地線就可以和其起點處的切平面上的點建立一個對應關系。我們可以在這個切平面上找到一點,這個點的方向就是這個測地線在起點處的切方向,其長度等于這個測地線上的長。這樣的一個對應關系在局部上是一一對應的。那末這個在切平面上的對應點在切平面中就有一個坐標表示,這個表示就叫做測地線上對應點的法坐標表示(有的也叫指數坐標)。那末反過來,我們可以把切平面上的點映射到流形上,這個映射過程就叫做指數映射(Logmap就倒過來)。如果流形上每一個點都可以這樣在同一個切平面上表示出來,那末我們就可以得到保持測地線長度的低維表示。如果這樣做得到,流形必須可以被單坐標系統所覆蓋。
??? 如果給定流形上的采樣點,如果要找到法坐標,我們需要知道兩個東西,一是測地線距離,二是每個測地線在起點處的切方向。第一個東西好弄,利用Isomap中的方法直接就可以解決,關鍵是第二個。第二個作者利用了距離函數的梯度,這個梯度和那個切方向是一個等價的關系,一般的黎曼幾何書中都有敘述。作者利用一個局部切坐標的二次泰勒展開來近似距離函數,而距離是知道的,就是測地線距離,局部切坐標也知道,那末通過求一個簡單的最小二乘問題就可以估計出梯度方向。
??? 如果明白這個方法的幾何原理,你再去看那個方法的結果,你就會明白為什莫在距離中心點比較遠的點的embedding都可以清楚地看到在一條條線上,效果不太好。
??? 最近這個思想被北大的一個年輕的老師 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)
- 等距映射(Isomap)
- 拉普拉斯特征映射(Laplacian Eigenmap)
局部線性嵌入(LLE)
前提假設:采樣數據所在的低維流形在局部是線性的,即每個采樣點可以用它的近鄰點線性表示。
求解方法:特征值分解。
LLE算法:
多維尺度變換(MDS)
- MDS是一種非監督的維數約簡方法。
- MDS的基本思想:約簡后低維空間中任意兩點間的距離應該與它們在原高維空間中的距離相同。
- MDS的求解:通過適當定義準則函數來體現在低維空間中對高維距離的重建誤差,對準則函數用梯度下降法求解,對于某些特殊的距離可以推導出解析法。
等距映射(Isomap)
基本思想:建立在多維尺度變換(MDS)的基礎上,力求保持數據點的內在幾何性質,即保持兩點間的測地距離。
前提假設:
- 高維數據所在的低維流形與歐氏空間的一個子集是整體等距的。
- 與數據所在的流形等距的歐氏空間的子集是一個凸集。
估計兩點間的測地距離:
- 離得很近的點間的測地距離用歐氏距離代替。
- 離得較遠的點間的測地距離用最短路徑來逼近。
拉普拉斯特征映射(Laplacian Eigenmap)
基本思想:在高維空間中離得很近的點投影到低維空間中的象也應該離得很近。
求解方法:求解圖拉普拉斯算子的廣義特征值問題。
總結
- 上一篇: 珍惜现在的说说经典语录206个
- 下一篇: 解决Eclipse一直loading w