推薦的幾本數學書【by DaHua Lin】


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的空間如此。
· 一個連續體內任意兩點必然有路徑連接?這可未必。

一切看上去有悖常理,而又確實存在。從線性代數到一般的群,從有限維到無限維,從度量空間到拓撲空間,整個認識都需要重新清理。而且,這些絕非僅是數學家的概念游戲,因為我們的世界不是有限維向量能充分表達的。當我們研究一些不是向量能表達的東西的時候,度量,代數,以及分析的概念,都要重新建立,而起點就在拓撲。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com