近期 Embedding MAP


《和機器學習和計算機視覺相關的數學(from LinDahua)》

From: http://dahua.spaces.live.com/default.aspx
1. 線性代數 (Linear Algebra):
我想國內的大學生都會學過這門課程,但是,未必每一位老師都能貫徹它的精要。這門學科對於Learning是必備的基礎,對它的透徹掌握是必不可少的。我在科大一年級的時候就學習了這門課,後來到了香港後,又重新把線性代數讀了一遍,所讀的是
Introduction to Linear Algebra (3rd Ed.) by Gilbert Strang.
這本書是MIT的線性代數課使用的教材,也是被很多其它大學選用的經典教材。它的難度適中,講解清晰,重要的是對許多核心的概念討論得比較透徹。我個人覺得,學習線性代數,最重要的不是去熟練矩陣運算和解方程的方法——這些在實際工作中MATLAB可以代勞,關鍵的是要深入理解幾個基礎而又重要的概念:子空間(Subspace),正交(Orthogonality),特徵值和特徵向量(Eigenvalues and eigenvectors),和線性變換(Linear transform)。從我的角度看來,一本線代教科書的質量,就在於它能否給這些根本概念以足夠的重視,能否把它們的聯繫講清楚。Strang的這本書在這方面是做得很好的。
而且,這本書有個得天獨厚的優勢。書的作者長期在MIT講授線性代數課(18.06),課程的video在MIT的Open courseware網站上有提供。有時間的朋友可以一邊看着名師授課的錄像,一邊對照課本學習或者複習。
http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/CourseHome/index.htm
2. 概率和統計 (Probability and Statistics):
概率論和統計的入門教科書很多,我目前也沒有特別的推薦。我在這裏想介紹的是一本關於多元統計的基礎教科書:
Applied Multivariate Statistical Analysis (5th Ed.) by Richard A. Johnson and Dean W. Wichern
這本書是我在剛接觸向量統計的時候用於學習的,我在香港時做研究的基礎就是從此打下了。實驗室的一些同學也借用這本書學習向量統計。這本書沒有特別追求數學上的深度,而是以通俗易懂的方式講述主要的基本概念,讀起來很舒服,內容也很實用。對於Linear regression, factor analysis, principal component analysis (PCA), and canonical component analysis (CCA)這些Learning中的基本方法也展開了初步的論述。
之後就可以進一步深入學習貝葉斯統計和Graphical models。一本理想的書是
Introduction to Graphical Models (draft version). by M. Jordan and C. Bishop.
我不知道這本書是不是已經出版了(不要和Learning in Graphical Models混淆,那是個論文集,不適合初學)。這本書從基本的貝葉斯統計模型出發一直深入到複雜的統計網絡的估計和推斷,深入淺出,statistical learning的許多重要方面都在此書有清楚論述和詳細講解。MIT內部可以access,至於外面,好像也是有電子版的。
3. 分析 (Analysis):
我想大家基本都在大學就學過微積分或者數學分析,深度和廣度則隨各個學校而異了。這個領域是很多學科的基礎,值得推薦的教科書莫過於
Principles of Mathematical Analysis, by Walter Rudin
有點老,但是絕對經典,深入透徹。缺點就是比較艱深——這是Rudin的書的一貫風格,適合於有一定基礎後回頭去看。
在分析這個方向,接下來就是泛函分析(Functional Analysis)。
Introductory Functional Analysis with Applications, by Erwin Kreyszig.
適合作爲泛函的基礎教材,容易切入而不失全面。我特別喜歡它對於譜論和算子理論的特別關注,這對於做learning的研究是特別重要的。Rudin也有一本關於functional analysis的書,那本書在數學上可能更爲深刻,但是不易於上手,所講內容和learning的切合度不如此書。
在分析這個方向,還有一個重要的學科是測度理論(Measure theory),但是我看過的書裏面目前還沒有感覺有特別值得介紹的。
4. 拓撲 (Topology):
在我讀過的基本拓撲書各有特色,但是綜合而言,我最推崇:
Topology (2nd Ed.) by James Munkres
這本書是Munkres教授長期執教MIT拓撲課的心血所凝。對於一般拓撲學(General topology)有全面介紹,而對於代數拓撲(Algebraic topology)也有適度的探討。此書不需要特別的數學知識就可以開始學習,由淺入深,從最基本的集合論概念(很多書不屑講這個)到Nagata-Smirnov Theorem和Tychonoff theorem等較深的定理(很多書避開了這個)都覆蓋了。講述方式思想性很強,對於很多定理,除了給出證明過程和引導你思考其背後的原理脈絡,很多令人讚歎的亮點——我常讀得忘卻飢餓,不願釋手。很多習題很有水平。
5. 流形理論 (Manifold theory):
對於拓撲和分析有一定把握時,方可開始學習流形理論,否則所學只能流於浮淺。我所使用的書是
Introduction to Smooth Manifolds. by John M. Lee
雖然書名有introduction這個單詞,但是實際上此書涉入很深,除了講授了基本的manifold, tangent space,bundle, sub-manifold等,還探討了諸如綱理論(Category theory),德拉姆上同調(De Rham cohomology)和積分流形等一些比較高級的專題。對於李羣和李代數也有相當多的討論。行文通俗而又不失嚴謹,不過對某些記號方式需要熟悉一下。
雖然李羣論是建基於平滑流形的概念之上,不過,也可能從矩陣出發直接學習李羣和李代數——這種方法對於急需使用李羣論解決問題的朋友可能更加實用。而且,對於一個問題從不同角度看待也利於加深理解。下面一本書就是這個方向的典範:
Lie Groups, Lie Algebras, and Representations: An Elementary Introduction. by Brian C. Hall
此書從開始即從矩陣切入,從代數而非幾何角度引入矩陣李羣的概念。並通過定義運算的方式建立exponential mapping,並就此引入李代數。這種方式比起傳統的通過“左不變向量場(Left-invariant vector field)“的方式定義李代數更容易爲人所接受,也更容易揭示李代數的意義。最後,也有專門的論述把這種新的定義方式和傳統方式聯繫起來。
%%% %%% %%% %%% %%% %%% %%% %%% %%% %%
無論是研究Vision, Learning還是其它別的學科,數學終究是根基所在。學好數學是做好研究的基石。學好數學的關鍵歸根結底是自己的努力,但是選擇一本好的書還是大有益處的。不同的人有不同的知識背景,思維習慣和研究方向,因此書的選擇也因人而異,只求適合自己,不必強求一致。上面的書僅僅是從我個人角度的出發介紹的,我的閱讀經歷實在非常有限,很可能還有比它們更好的書(不妨也告知我一聲,先說聲謝謝了)。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Learning中的代數結構的建立

Learning是一個融會多種數學於一體的領域。說起與此有關的數學學科,我們可能會迅速聯想到線性代數以及建立在向量空間基礎上的統計模型——事實上,主流的論文中確實在很大程度上基於它們。
R^n (n-維實向量空間) 是我們在paper中見到最多的空間,它確實非常重要和實用,但是,僅僅依靠它來描述我們的世界並不足夠。事實上,數學家們給我們提供了豐富得多的工具。
“空間”(space),這是一個很有意思的名詞,幾乎出現在所有的數學分支的基礎定義之中。歸納起來,所謂空間就是指一個集合以及在上面定義的某種數學結構。關於這個數學結構的定義或者公理,就成爲這個數學分支的基礎,一切由此而展開。
還是從我們最熟悉的空間——R^n 說起吧。大家平常使用這個空間的時候,除了線性運算,其實還用到了別的數學結構,包括度量結構和內積結構。
· 第一,它是一個拓撲空間(Topological space)。而且從拓撲學的角度看,具有非常優良的性質:Normal (implying Hausdorff and Regular), Locally Compact, Paracompact, with Countable basis, Simply connected (implying connected and path connected), Metrizable.
· 第二,它是一個度量空間(Metric space)。我們可以計算上面任意兩點的距離。
· 第三,它是一個有限維向量空間(Finite dimensional space)。因此,我們可以對裏面的元素進行代數運算(加法和數乘),我們還可以賦予它一組有限的基,從而可以用有限維座標表達每個元素。
· 第四,基於度量結構和線性運算結構,可以建立起分析(Analysis)體系。我們可以對連續函數進行微分,積分,建立和求解微分方程,以及進行傅立葉變換和小波分析。
· 第五,它是一個希爾伯特空間(也就是完備的內積空間)(Hilbert space, Complete inner product space)。它有一套很方便計算的內積(inner product)結構——這個空間的度量結構其實就是從其內積結構誘導出來。更重要的,它是完備的(Complete)——代表任何一個柯西序列 (Cauchy sequence)都有極限——很多人有意無意中其實用到了這個特性,不過習慣性地認爲是理所當然了。
· 第六,它上面的線性映射構成的算子空間仍舊是有限維的——一個非常重要的好處就是,所有的線性映射都可以用矩陣唯一表示。特別的,因爲它是有限維完備空間,它的泛函空間和它本身是同構的,也是R^n。因而,它們的譜結構,也就可以通過矩陣的特徵值和特徵向量獲得。
· 第七,它是一個測度空間——可以計算子集的大小(面積/體積)。正因爲此,我們纔可能在上面建立概率分佈(distribution)——這是我們接觸的絕大多數連續統計模型的基礎。
我 們可以看到,這是一個非常完美的空間,爲我們的應用在數學上提供了一切的方便,在上面,我們可以理所當然地認爲它具有我們希望的各種良好性質,而無須特別 的證明;我們可以直接使用它的各種運算結構,而不需要從頭建立;而且很多本來不一樣的概念在這裏變成等價的了,我們因此不再需要辨明它們的區別。
以此爲界,Learning的主要工作分成兩個大的範疇:
1. 建立一種表達形式,讓它處於上面討論的R^n空間裏面。
2. 獲得了有限維向量表達後,建立各種代數算法或者統計模型進行分析和處理。
這裏只討論第一個範疇。先看看,目前用得比較廣泛的一些方法:
1. 直接基於原始數據建立表達。 我們關心的最終目標是一個個現實世界中的對象:一幅圖片,一段語音,一篇文章,一條交易記錄,等等。這些東西大部分本身沒有附着一個數值向量的。爲了構造 一個向量表達,我們可以把傳感器中記錄的數值,或者別的什麼方式收集的數值數據按照一定的順序羅列出來,就形成一個向量了。如果有n個數字,就認爲它們在 R^n裏面。
不過,這在數學上有一點小問題,在大部分情況下,根據數據產生的物理原理,這些向量的值域並不能充滿整個空間。比如圖像的像素值一般是正值,而且在一個有界閉集之中。這帶來的問題是,對它們進行線性運算很可能得到的結果會溢出正常的範圍——在大部分paper中,可能只是採用某些heuristics的手段進行簡單處理,或者根本不管,很少見到在數學上對此進行深入探討的——不過如果能解決實際問題,這也是無可厚非的,畢竟不是所有的工作都需要像純數學那樣追求嚴謹。
2. 量化(quantization)。這是在處理連續信號時被廣泛採用的方式。只是習以爲常,一般不提名字而已。比如一個空間信號(Vision中的image)或者時間信號,它們的 domain中的值是不可數無限大的(uncountably infinite),不要說表示爲有限維向量,即使表達爲無限序列也是不可能的。在這種情況下,一般在有限域內,按照一定順序每隔一定距離取一個點來代表其周圍的點,從而形成有限維的表達。這就是信號在時域或空域的量化。
這樣做不可避免要丟失信息。但是,由於小鄰域內信號的高度相關,信息丟失的程度往往並不顯著。而且,從理論上說,這相當於在頻域中的低通過率。對於有限能量的連續信號,不可能在無限高的頻域中依然保持足夠的強度,只要採樣密度足夠,丟失的東西可以任意的少。
除了表示信號,對於幾何形體的表達也經常使用量化,比如表示curve和surface。
3. 找出有限個數充分表達一個對象也許不是最困難的。不過,在 其上面建立數學結構卻未必了。一般來說,我們要對其進行處理,首先需要一個拓撲結構用以描述空間上的點是如何聯繫在一起。直接建立拓撲結構在數學上往往非 常困難,也未必實用。因此,絕大部分工作採取的方式是首先建立度量結構。一個度量空間,其度量會自然地誘導出一個拓撲結構——不過,很多情況下我們似乎會無視它的存在。
最簡單的情況,就是使用原始向量表達的歐氏距離 (Euclidean distance)作爲metric。 不過,由於原始表達數值的不同特性,這種方式效果一般不是特別好,未必能有效表達實際對象的相似性(或者不相似性)。因此,很多工作會有再此基礎上進行度 量的二次建立。方式是多種多樣的,一種是尋求一個映射,把原空間的元素變換到一個新的空間,在那裏歐氏距離變得更加合適。這個映射發揮的作用包括對信息進 行篩選,整合,對某些部分進行加強或者抑制。這就是大部分關於feature selection,feature extraction,或者subspace learning的文章所要做的。另外一種方式,就是直接調節距離的計算方式(有些文章稱之爲metric learning)。
這兩種方式未必是不同的。如果映射是單射,那麼它相當於在原空間建立了一個不同的度量。反過來,通過改變距離計算方式建立的度量在特定的條件下對應於某種映射。
4. 大家可能注意到,上面提到的度量建立方法,比如歐氏距離,它需要對元素進行代數運算。對於普通的向量空間,線性運算是天然賦予的,我們無須專門建立,所以可以直接進行度量的構造——這也是大部分工作的基礎。可是,有些事物其原始表達不是一個n-tuple,它可能是一個set,一個graph,或者別的什麼特別的object。怎麼建立代數運算呢?
一 種方法是直接建立。就是給這些東西定義自己的加法和數乘。這往往不是那麼直接(能很容易建立的線性運算結構早已經被建立好並廣泛應用了),可能需要涉及很 深的數學知識,並且要有對問題本身的深入瞭解和數學上的洞察力。不過,一個新的代數結構一旦建立起來,其它的數學結構,包括拓撲,度量,分析,以及內積結 構也隨之能被自然地誘導出來,我們也就具有了對這個對象空間進行各種數學運算和操作的基礎。加法和數乘看上去簡單,但是如果我們對於本來不知道如何進行加 法和數乘的空間建立了這兩樣東西,其理論上的貢獻是非常大的。
(一個小問題:大家常用各種graphical model,但是,每次這些model都是分別formulate,然後推導出estimation和evaluation的步驟方法。是否可能對”the space of graphical model”或者它的某個特定子集建立某種代數結構呢?(不一定是線性空間,比如羣,環,廣羣, etc)從而使得它們在代數意義上統一起來,而相應的estimation或者evaluation也可以用過代數運算derive。這不是我的研究範圍,也超出了我目前的能力和知識水平,只是我相信它在理論上的重要意義,留作一個遠景的問題。事實上,數學中確實有一個分支叫做 Algebraic statistics 可能在探討類似的問題,不過我現在對此瞭解非常有限。)
5. 回到我們的正題,除了直接建立運算定義,另外一種方式就是嵌入(embedding)到某個向量空間,從而繼承其運算結構爲我所用。當然這種嵌入也不是亂來,它需要保持原來這些對象的某種關係。最常見的就是保距嵌入(isometric embedding),我們首先建立度量結構(繞過向量表達,直接對兩個對象的距離通過某種方法進行計算),然後把這個空間嵌入到目標空間,通常是有限維向量空間,要求保持度量不變。
“嵌入”是一種在數學上應用廣泛的手段,其主要目標就是通過嵌入到一個屬性良好,結構豐富的空間,從而利用其某種結構或者運算體系。在拓撲學中,嵌入到metric space是對某個拓撲空間建立度量的重要手段。而在這裏,我們是已有度量的情況下,通過嵌入獲取線性運算的結構。除此以來,還有一種就是前些年比較熱的manifold embedding,這個是通過保持局部結構的嵌入,獲取全局結構,後面還會提到。
6. 接下來的一個重要的代數結構,就是內積(inner product)結構。內積結構一旦建立,會直接誘導出一種性質良好的度量,就是範數(norm),並且進而誘導出拓撲結構。一般來說,內積需要建立在線性空間的基礎上,否則連一個二元運算是否是內積都無法驗證。不過,kernel理論指出,對於一個空間,只要定義一個正定核(positive kernel)——一個符合正定條件的二元運算,就必然存在一個希爾伯特空間,其內積運算等效於核運算。這個結論的重要意義在於,我們可以繞開線性空間,通過首先定義kernel的方式,誘導出一個線性空間(叫做再生核希爾伯特空間 Reproducing Kernel Hilbert Space),從而我們就自然獲得我們所需要的度量結構和線性運算結構。這是kernel theory的基礎。
在很多教科書中,以二次核爲例子,把二維空間變成三維,然後告訴大家kernel用於升維。對於這種說法,我一直認爲在一定程度上是誤導的。事實上,kernel的最首要意義是內積的建立(或者改造),從而誘導出更利於表達的度量和運算結構。對於一個問題而言,選擇一個切合問題的kernel比起關注“升維”來得更爲重要。
kernel被視爲非線性化的重要手段,用於處理非高斯的數據分佈。這是有道理的。通過nonlinear kernel改造的內積空間,其結構和原空間的結構確實不是線性關聯,從這個意義上說,它實施了非線性化。不過,我們還應該明白,它的最終目標還是要回到線性空間,新的內積空間仍舊是一個線性空間,它一旦建立,其後的運算都是線性的,因此,kernel的使用就是爲了尋求一個新的線性空間,使得線性運算更加合理——非線性化的改造最終仍舊是要爲線性運算服務。
值得一提的是,kernelization本質上說還是一種嵌入過程:對於一個空間先建立內積結構,並且以保持內積結構不變的方式嵌入到一個高維的線性空間,從而繼承其線性運算體系。
7. 上面說到的都是從全局的方式建立代數結構的過程,但是那必須以某種全局結構爲基礎(無論預先定義的是運算,度量還是內積,都必須適用於全空間。)但是,全局結構未必存在或者適合,而局部結構往往簡單方便得多。這裏就形成一種策略,以局部而達全局——這就是流形(manifold)的思想,而其則根源於拓撲學。
從拓撲學的角度說,流形就是一個非常優良的拓撲空間:符合Hausdorff分離公理(任何不同的兩點都可以通過不相交的鄰域分離),符合第二可數公理(具有可數的拓撲基),並且更重要的是,局部同胚於R^n。因此,一個正則(Regular)流形基本就具有了各種最良好的拓撲特性。而局部同胚於R^n,代表了它至少在局部上可以繼承R^n的各種結構,比如線性運算和內積,從而建立分析體系。事實上,拓撲流形繼承這些結構後形成的體系,正是現代流形理論研究的重點。繼承了分析體系的流形,就形成了微分流形(Differential manifold),這是現代微分幾何的核心。而微分流形各點上的切空間(Tangent Space),則獲得了線性運算的體系。而進一步繼承了局部內積結構的流形,則形成黎曼流形(Riemann manifold),而流形的全局度量體系——測地距離(geodesics)正是通過對局部度量的延伸來獲得。進一步的,當流行本身的拓撲結構和切空間上的線性結構發生關係——也就獲得一簇拓撲關聯的線性空間——向量叢(Vector bundle)。
雖然manifold theory作爲現代幾何學的核心,是一個博大精深的領域,但是它在learning中的應用則顯得非常狹窄。事實上,對於manifold,很多做learning的朋友首先反應的是ISOMAP, LLE, eigenmap之類的算法。這些都屬於embedding。當然,這確實是流形理論的一個重要方面。嚴格來說,這要求是從原空間到其映像的微分同胚映射,因此,嵌入後的空間在局部上具有相同的分析結構,同時也獲得了各種好處——全局的線性運算和度量。不過,這個概念在learning的應用中被相當程度的放寬了——微分同胚並不能被完全保證,而整個分析結構也不能被完全保持。大家更關注的是保持局部結構中的某個方面——不過這在實際應用中的折衷方案也是可以理解的。事實表明,當原空間中的數據足夠密集的情況下,這些算法工作良好。
Learning中流形應用的真正問題在於它被過濫地運用於稀疏空間(Sparse space),事實上在高維空間中撒進去幾千乃至幾十萬點,即使最相鄰的幾點也難稱爲局部了,局部的範圍和全局的範圍其實已經沒有了根本差別,連局部的概念都立不住腳的時候,後面基於其展開的一切工作也都沒有太大的意義。事實上,稀疏空間有其本身的規律和法則,通過局部形成全局的流形思想從本質上是不適合於此的。雖然,流形是一種非常美的理論,但是再漂亮的理論也需要用得其所——它應該用於解決具有密集數據分佈的低維空間。至於,一些paper所報告的在高維空間(比如人臉)運用流形方法獲得性能提升,其實未必是因爲“流形”本身所起的作用,而很可能是其它方面的因素。
8. 流形在實際應用中起重要作用的還有兩個方面:一個是研究幾何形體的性質(我們暫且不談這個),還有就是它和代數結構的結合形成的李羣(Lie group)和李代數(Lie algebra)。當我們研究的對象是變換本身的時候,它們構成的空間是有其特殊性的,比如所有子空間投影形成了Grassmann流形,所有的可逆線性算子,或者仿射算子,也形成各自的流形。對他們的最重要操作是變換的結合,而不是加法數乘,因此,它們上面定義的更合適的代數結構應該是羣和不是線性空間。而羣和微分流形的結合體——李羣則成爲它們最合適的描述體系——而其切空間則構成了一種加強的線性空間:李代數,用於描述其局部變化特性。
李代數和李羣的關係是非常漂亮的。它把變換的微變化轉換成了線性空間的代數運算,使得移植傳統的基於線性空間的模型和算法到李空間變得可能。而且李代數中的矩陣比起變換本身的矩陣甚至更能反映變換的特性。幾何變換的李代數矩陣的譜結構就能非常方便地用於分析變換的幾何特性。
最後,回頭總結一下關於嵌入這個應用廣泛的策略,在learning中的isometry, kernel和manifold embedding都屬於此範疇,它們分別通過保持原空間的度量結構,內積結構和局部結構來獲得到目標(通常是向量空間)的嵌入,從而獲得全局的座標表達,線性運算和度量,進而能被各種線性算法和模型所應用。
在獲得這一系列好處的同時,也有值得我們注意的地方。首先,嵌入只是一種數學手段,並不能取代對問題本身的研究和分析。一種不恰當的原始結構或者嵌入策略,很多時候甚至適得其反——比如稀疏空間的流形嵌入,或者選取不恰當的kernel。另外,嵌入適合於分析,而未必適合於重建或者合成。這是因爲嵌入是一個單射(injection),目標空間不是每一個點都和原空間能有效對應的。嵌入之後的運算往往就打破了原空間施加的限制。比如兩個元素即使都是從原空間映射過來,它們的和卻未必有原像,這時就不能直接地回到原空間了。當然可以考慮在原空間找一個點它的映射與之最近,不過這在實際中的有效性是值得商榷的。
和Learning有關的數學世界是非常廣博的,我隨着學習和研究的深入,越來越發現在一些我平常不注意的數學分支中有着適合於問題的結構和方法。比如,廣羣(groupoid)和廣代數(algebroid)能克服李羣和李代數在表示連續變換過程中的一些困難——這些困難困擾了我很長時間。解決問題和建立數學模型是相輔相成的,一方面,一個清晰的問題將使我們有明確的目標去尋求合適的數學結構,另一方面,對數學結構的深入理解對於指導問題的解決也是有重要作用的。對於解決一個問題來說,數學工具的選擇最重要的是適合,而不是高深,但是如果在現有數學方法陷入困難的時候,尋求更高級別的數學的幫助,往往能柳暗花明。數學家長時間的努力解決的很多問題,並不都是理論遊戲,他們的解決方案中很多時候蘊含着我們需要的東西,而且可能導致對更多問題的解決——但是我們需要時間去學習和發現它們。

拓撲:遊走於直觀與抽象之間

近日來,抽空再讀了一遍點集拓撲(Point Set Topology),這是我第三次重新學習這個理論了。我看電視劇和小說,極少能有興致看第二遍,但是,對於數學,每看一次都有新的啓發和收穫。
代數,分析,和拓撲,被稱爲是現代數學的三大柱石。最初讀拓撲,是在兩三年前,由於學習流形理論的需要。可是,隨着知識的積累,發現它是很多理論的根基。可以說,沒有拓撲,就沒有現代意義的分析與幾何。我們在各種數學分支中接觸到的最基本的概念,比如,極限,連續,距離(度量),邊界,路徑,在現代數學中,都源於拓撲。
拓撲學是一門非常奇妙的學科,它把最直觀的現象和最抽象的概念聯繫在一起了。拓撲描述的是普遍使用的概念(比如開集,閉集,連續),我們對這些概念習以爲常,理所當然地使用着,可是,真要定義它,則需要對它們本質的最深刻的洞察。數學家們經過長時間的努力,得到了這些概念的現代定義。這裏面很多第一眼看上去,會感覺驚奇——怎麼會定義成這個樣子。
首先是開集。在學習初等數學時,我們都學習開區間 (a, b)。可是,這只是在一條線上的,怎麼推廣到二維空間,或者更高維空間,或者別的形體上呢?最直觀的想法,就是“一個不包含邊界的集合”。可是,問題來了,給一個集合,何謂“邊界”?在拓撲學裏面,開集(Open Set)是最根本的概念,它是定義在集合運算的基礎上的。它要求開集符合這樣的條件:開集的任意並集和有限交集仍爲開集。
我最初的時候,對於這樣的定義方式,確實百思不解。不過,讀下去,看了和做了很多證明後,發現,這樣的定義一個很重要的意義在於:它保證了開集中每個點都有一個鄰域包含在這個集合內——所有點都和外界(補集)保持距離。這樣的理解應該比使用集合運算的定義有更明晰的幾何意義。但是,直觀的東西不容易直接形成嚴謹的定義,使用集合運算則更爲嚴格。而集合運算定義中,任意並集的封閉性是對這個幾何特點的內在保證。
另外一個例子就是“連續函數”(Continuous Function)。在學微積分時,一個耳熟能詳的定義是“對任意的epsilon > 0,存在delta > 0,使得。。。。”,背後最直觀的意思就是“足夠近的點保證映射到任意小的範圍內”。可是,epsilon, delta都依賴於實空間,不在實空間的映射又怎麼辦呢?拓撲的定義是“如果一個映射的值域中任何開集的原象都是開集,那麼它連續。”這裏就沒有epsilon什麼事了。“開集的原象是開集”
這裏的關鍵在於,在拓撲學中,開集的最重要意義就是要傳遞“鄰域”的意思——開集本身就是所含點的鄰域。這樣連續定義成這樣就順理成章了。稍微把說法調節一下,上面的定義就變成了“對於f(x)的任意鄰域U,都有x的一個鄰域V,使得V裏面的點都映射到U中。”
這裏面,我們可以感受到爲什麼開集在拓撲學中有根本性的意義。既然開集傳達“鄰域”的意思,那麼,它最重要的作用就是要表達哪些點靠得比較近。給出一個拓撲結構,就是要指出哪些是開集,從而指出哪些點靠得比較近,這樣就形成了一個聚集結構——這就是拓撲。
可是這也可以通過距離來描述,爲什麼要用開集呢,反而不直觀了。某種意義上說,拓撲是“定性”的,距離度量是“定量”的。隨着連續變形,距離會不斷變化,但是靠近的點還是靠近,因此本身固有的拓撲特性不會改變。拓撲學研究的就是這種本質特性——連續變化中的不變性。
在拓撲的基本概念中,最令人費解的,莫過於“緊性”(Compactness)。它描述一個空間或者一個集合“緊不緊”。正式的定義是“如果一個集合的任意開覆蓋都有有限子覆蓋,那麼它是緊的”。乍一看,實在有點莫名其妙。它究竟想描述一個什麼東西呢?和“緊”這個形容詞又怎麼扯上關係呢?
一個直觀一點的理解,幾個集合是“緊”的,就是說,無限個點撒進去,不可能充分散開。無論鄰域多麼小,必然有一些鄰域裏面有無限個點。上面關於compactness的這個定義的玄機就在有限和無限的轉換中。一個緊的集合,被無限多的小鄰域覆蓋着,但是,總能找到其中的有限個就能蓋全。那麼,後果是什麼呢?無限個點撒進去,總有一個鄰域包着無數個點。鄰域們再怎麼小都是這樣——這就保證了無限序列中存在極限點。
Compact這個概念雖然有點不那麼直觀,可是在分析中有着無比重要的作用。因爲它關係到極限的存在性——這是數學分析的基礎。瞭解泛函分析的朋友都知道,序列是否收斂,很多時候就看它了。微積分中,一個重要的定理——有界數列必然包含收斂子列,就是根源於此。
在學習拓撲,或者其它現代數學理論之前,我們的數學一直都在有限維歐氏空間之中,那是一個完美的世界,具有一切良好的屬性,Hausdorff, Locally compact, Simply connected,Completed,還有一套線性代數結構,還有良好定義的度量,範數,與內積。可是,隨着研究的加深,終究還是要走出這個圈子。這個時候,本來理所當然的東西,變得不那麼必然了。
· 兩個點必然能分開?你要證明空間是Hausdorff的。
· 有界數列必然存在極限點?這隻在locally compact的空間如此。
· 一個連續體內任意兩點必然有路徑連接?這可未必。
一切看上去有悖常理,而又確實存在。從線性代數到一般的羣,從有限維到無限維,從度量空間到拓撲空間,整個認識都需要重新清理。而且,這些絕非僅是數學家的概念遊戲,因爲我們的世界不是有限維向量能充分表達的。當我們研究一些不是向量能表達的東西的時候,度量,代數,以及分析的概念,都要重新建立,而起點就在拓撲。

和機器學習和計算機視覺相關的數學(轉載)

(以下轉自一位MIT牛人的空間文章,寫得很實際:)
作者:Dahua
感覺數學似乎總是不夠的。這些日子爲了解決research中的一些問題,又在圖書館捧起了數學的教科書。從大學到現在,課堂上學的和自學的數學其實不算少了,可是在研究的過程中總是發現需要補充新的數學知識。Learning和Vision都是很多種數學的交匯場。看着不同的理論體系的交匯,對於一個researcher來說,往往是非常exciting的enjoyable的事情。不過,這也代表着要充分了解這個領域並且取得有意義的進展是很艱苦的。記得在兩年前的一次blog裏面,提到過和learning有關的數學。今天看來,我對於數學在這個領域的作用有了新的思考。對於Learning的研究,

1、Linear Algebra (線性代數) 和 Statistics (統計學) 是最重要和不可缺少的。這代表了Machine Learning中最主流的兩大類方法的基礎。一種是以研究函數和變換爲重點的代數方法,比如Dimension reduction,feature extraction,Kernel等,一種是以研究統計模型和樣本分佈爲重點的統計方法,比如Graphical model, Information theoretical models等。它們側重雖有不同,但是常常是共同使用的,對於代數方法,往往需要統計上的解釋,對於統計模型,其具體計算則需要代數的幫助。以代數和統計爲出發點,繼續往深處走,我們會發現需要更多的數學。

2、Calculus (微積分),只是數學分析體系的基礎。其基礎性作用不言而喻。Learning研究的大部分問題是在連續的度量空間進行的,無論代數還是統計,在研究優化問題的時候,對一個映射的微分或者梯度的分析總是不可避免。而在統計學中,Marginalization和積分更是密不可分——不過,以解析形式把積分導出來的情況則不多見。

3、Partial Differential Equation (偏微分方程),這主要用於描述動態過程,或者仿動態過程。這個學科在Vision中用得比Learning多,主要用於描述連續場的運動或者擴散過程。比如Level set, Optical flow都是這方面的典型例子。

4、Functional Analysis (泛函分析),通俗地,可以理解爲微積分從有限維空間到無限維空間的拓展——當然了,它實際上遠不止於此。在這個地方,函數以及其所作用的對象之間存在的對偶關係扮演了非常重要的角色。Learning發展至今,也在向無限維延伸——從研究有限維向量的問題到以無限維的函數爲研究對象。Kernel Learning 和 Gaussian Process 是其中典型的例子——其中的核心概念都是Kernel。很多做Learning的人把Kernel簡單理解爲Kernel trick的運用,這就把kernel的意義嚴重弱化了。在泛函裏面,Kernel (Inner Product)是建立整個博大的代數體系的根本,從metric, transform到spectrum都根源於此。

5、Measure Theory (測度理論),這是和實分析關係非常密切的學科。但是測度理論並不限於此。從某種意義上說,Real Analysis可以從Lebesgue Measure(勒貝格測度)推演,不過其實還有很多別的測度體系——概率本身就是一種測度。測度理論對於Learning的意義是根本的,現代統計學整個就是建立在測度理論的基礎之上——雖然初級的概率論教科書一般不這樣引入。在看一些統計方面的文章的時候,你可能會發現,它們會把統計的公式改用測度來表達,這樣做有兩個好處:所有的推導和結論不用分別給連續分佈和離散分佈各自寫一遍了,這兩種東西都可以用同一的測度形式表達:連續分佈的積分基於Lebesgue測度,離散分佈的求和基於計數測度,而且還能推廣到那種既不連續又不離散的分佈中去(這種東西不是數學家的遊戲,而是已經在實用的東西,在Dirchlet Process或者Pitman-Yor Process裏面會經常看到)。而且,即使是連續積分,如果不是在歐氏空間進行,而是在更一般的拓撲空間(比如微分流形或者變換羣),那麼傳統的黎曼積分(就是大學一年級在微積分課學的那種)就不work了,你可能需要它們的一些推廣,比如Haar Measure或者Lebesgue-Stieltjes積分。

6、Topology(拓撲學),這是學術中很基礎的學科。它一般不直接提供方法,但是它的很多概念和定理是其它數學分支的基石。看很多別的數學的時候,你會經常接觸這樣一些概念:Open set / Closed set,set basis,Hausdauf, continuous function,metric space, Cauchy sequence, neighborhood, compactness, connectivity。很多這些也許在大學一年級就學習過一些,當時是基於極限的概念獲得的。如果,看過拓撲學之後,對這些概念的認識會有根本性的拓展。比如,連續函數,當時是由epison法定義的,就是無論取多小的正數epsilon,都存在xxx,使得xxx。這是需要一種metric去度量距離的,在general topology裏面,對於連續函數的定義連座標和距離都不需要——如果一個映射使得開集的原像是開集,它就是連續的——至於開集是基於集合論定義的,不是通常的開區間的意思。這只是最簡單的例子。當然,我們研究learning也許不需要深究這些數學概念背後的公理體系,但是,打破原來定義的概念的侷限在很多問題上是必須的——尤其是當你研究的東西它不是在歐氏空間裏面的時候——正交矩陣,變換羣,流形,概率分佈的空間,都屬於此。

7、Differential Manifold (微分流形),通俗地說它研究的是平滑的曲面。一個直接的印象是它是不是可以用來fitting一個surface什麼的——當然這算是一種應用,但是這是非常初步的。本質上說,微分流形研究的是平滑的拓撲結構。一個空間構成微分流形的基本要素是局部平滑:從拓撲學來理解,就是它的任意局部都同胚於歐氏空間,從解析的角度來看,就是相容的局部座標系統。當然,在全局上,它不要求和歐氏空間同胚。它除了可以用於刻畫集合上的平滑曲面外,更重要的意義在於,它可以用於研究很多重要的集合。一個n-維線性空間的全部k-維子空間(k

8、Lie Group Theory (李羣論),一般意義的羣論在Learning中被運用的不是很多,羣論在Learning中用得較多的是它的一個重要方向Lie group。定義在平滑流形上的羣,並且其羣運算是平滑的話,那麼這就叫李羣。因爲Learning和編碼不同,更多關注的是連續空間,因爲Lie group在各種羣中對於Learning特別重要。各種子空間,線性變換,非奇異矩陣都基於通常意義的矩陣乘法構成李羣。在李羣中的映射,變換,度量,劃分等等都對於Learning中代數方法的研究有重要指導意義。

9、Graph Theory(圖論),圖,由於它在表述各種關係的強大能力以及優雅的理論,高效的算法,越來越受到Learning領域的歡迎。經典圖論,在Learning中的一個最重要應用就是graphical models了,它被成功運用於分析統計網絡的結構和規劃統計推斷的流程。Graphical model所取得的成功,圖論可謂功不可沒。在Vision裏面,maxflow (graphcut)算法在圖像分割,Stereo還有各種能量優化中也廣受應用。另外一個重要的圖論分支就是Algebraic graph theory (代數圖論),主要運用於圖的譜分析,著名的應用包括Normalized Cut和Spectral Clustering。近年來在semi-supervised learning中受到特別關注。
這是大牛們做的很好的綜述啊!
據說,是MIT一牛人對數學在機器學習中的作用給的評述!


轉載manifold learning一篇

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/ (現在已經404了。。)

以上提到方法論文,都可以用文中給出的關鍵詞藉助google.com找到。


模式特徵抽取研究進展

發佈了37 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章