天天看點

轉:和機器學習和計算機視覺相關的數學

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一牛人對數學在機器學習中的作用給的評述!

via:http://blog.sina.com.cn/s/blog_6833a4df0100nazk.html

繼續閱讀