↑↑↑點擊上方藍字,回復資料,10個G的驚喜
版權聲明:本文為CSDN博主「ChangHengyi」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/ChangHengyi/article/details/80577318推薦語:學習機器學習的同學,一定對希爾伯特空間不陌生,然而,它似乎一直是一個「熟悉的陌生人」。網上的大量教程充斥著「傅立葉變換」,「柯西序列」,「量子力學」等等高大上名詞,能讓人看懂的寥寥無幾。我有幸在茫茫文章中看到了這一篇,從空間的定義、意義,一步步娓娓道來,解釋希爾伯特空間和一系列其他空間之間的關係,十分值得一讀!
在學習機器學習的同學如果對SVM中的核函數進行深究,一定會見到再生核希爾伯特空間(RKHS)這個概念,其他理工科的同學往往也會在書中遇到希爾伯特空間這樣的字眼,還有什麼巴拿赫空間、賦范線性空間等等。但是非理學院的同學遇到這些字眼往往會被嚇到,或者覺得好高大上。但是,這些概念其實一點都不難,讀了今天我的文章,希望大家可以理解好這些概念,至少以後不會被它們嚇到,如果只是想知道希爾伯特空間是什麼,那看到相應的章節不再往下看就好。
BTW,第一次寫博客,講的比較多,生怕說不明白,大神們不要嫌煩就好,如果你前面的感覺都知道可以從中間開始看。
什麼是數學中的空間我們知道數學的特點就是抽象,數學家喜歡把問題的本質抽象出來,而不再是只針對具體的問題,所以現代數學喜歡以集合為研究對象,比如你想研究你們班上的同學,那麼你的研究對象就是由你們班上所有同學組成的集合,比如你做機器學習想分析一組數據,那麼你要研究的集合就是由每一個數據組成的集合。所以,看到這裡我們明白了,數學家們在研究問題時首先要明確研究的對象。
有了研究的對象,還需要什麼呢?那就是你的研究對象所需要遵循的規則。比如你要研究你們班談戀愛的狀況,剛剛說了,每一個同學是集合中的一個元素,既然你要研究的問題是你們班的戀愛狀況,那你就要定義一個戀愛關係。比如我這麼定義,班裡每一個同學可以和另一名同學(不能和自己)之間建立戀愛關係(沒有規定必須是異性戀)。好了,我定義完了,於是我們就得到了一個賦有某種規則的班上同學的集合,當然你的定義可以和我不一樣,比如你思想很open,你覺得一個人可以和幾個人保持戀愛關係,那麼fine,你按照你的定義來就好,定義了之後的規則就變成了公理,以後的任何操作以及推到都只能在公理的基礎上進行。我們可以把這個定義了戀愛規則同學的集合叫做一個同學戀愛空間。如果你說:「同學之間不只有戀愛關係啊,還有純潔的友誼。」好呀,如果你也需要研究交友關係,那麼你再按照你心目中的定義,定義一下交朋友的原則就好了。如果你在同學戀愛空間的基礎上又加入了交朋友的定義,那麼恭喜你,你就得到了一個同學戀愛交友空間。那麼得到了這個空間有什麼用呢?你就可以在這個空間裡研究你們班同學的戀愛和交友關係了,但是你的一切研究包括推倒、計算,都必須基於你定義的公理,不能按照自己的常識,不然你就又把抽象的東西具象化了,這就失去了抽象出來的意義。
好,如果大家不厭其煩的看完了上面的例子,那麼可以明白數學中談到的空間需要有兩部分組成,研究的對象和內在的規則,或者叫做元素和結構,有了這些我們就可以在這基礎上研究我們感興趣的問題。
好了,講完了什麼是空間,我們來看幾種數學中的空間,看完之後你將明白它們的含義和關係。
線性空間線性空間就是定義了加法和數乘的空間。
先來說一種我們最常見的空間吧,那就是線性空間,線性空間是什麼意思呢?這裡就不從群、環、域的概念開始講了,什麼對加法封閉、零元、負元啥的,不然就又變得像課本一樣嚇人了,我們力求用通俗又不失嚴謹的話把問題解釋清楚。大家可以時刻回想之前舉得例子,元素和結構。那線性空間中的元素是什麼呢,這不重要,可以是任何東西,線性空間強調的是空間中的元素滿足線性結構。
那如何才能得到線性結構呢,我們需要定義加法和數乘。定義加法和數乘需要8條公理,這裡就不放了,免得大家頭大,線性代數課本上第一章都會有。這裡想說的是,加法和數乘在我們生活中是想當然的概念,小學生也知道,一條狗加一條狗等於兩條狗,一條狗乘以3等於三條狗。但其實我們在數學中不能夠想當然,一切東西都要先定義了才可以使用,這裡的加法和數乘和大家從小到大接觸的沒什麼兩樣。
定義了加法和數乘,空間裡的一個元素就可以由其他元素線性表出,這就是線性空間。
度量空間度量空間就是定義了距離的空間。
這裡的距離就要好好的和大家掰扯掰扯了,因為它不像加法和數乘這樣的想當然。如果我問你什麼是距離,你回答兩點之間的連線的長度的話,那說明你還是naïve。如果在地球上,你想從中國去美國,走直線的話你可能要穿過地心,但是這是不可能的,所以地球上兩點之間最短的距離應該經過兩個點的直徑為地球直徑的大圓上的一部分。
設想另一個場景,你在做計程車,從城市的一個地方去另一個地方,因為道路都是網格型的,你也不可能讓司機從樓中穿過,所以你走的最短路線是一條折線,實際上,這種距離叫做曼哈頓距離。
事實上,還有很多種不同距離的定義方式,例如閔可夫斯基距離,馬氏距離,切比雪夫距離等等,我們最常用的兩點之間的連線叫做歐式距離。
我們可以按照我們的需要或者具體問題的具體情況,用不同的方式來定義距離。那麼到底什麼是距離呢,說白了距離就是兩個點(元素)對應一個數,x,y是集合中的兩個元素,那麼x,y的距離d(x,y)是由x,y這兩個元素決定的一個數。
那麼我們是不是可以按照任何我們想要的方式來定義距離呢,並不是,因為稍有常識的人都知道,距離不能是負的,負的距離我們不知道是什麼意義,一個點和自己的距離應該是0,不然我們會感覺很奇怪。其實在定義距離時,有三條公理必須遵守,這三條公理來源於我們對距離的常識:
(1)非負性、同一性:d(x,y)≥0,若且唯若x=y時取等號;
(2)對稱性:d(x,y)=d(y,x);
(3)三角不等式:d(x,z)≤d(x,y)+d(y,z)。
如果可以滿足以上三條,那麼任何定義距離的方式都是OK的。
一個定義了距離的空間我們把它成為度量空間。
賦范空間賦范空間就是定義了範數的空間。
學理工科的都聽過範數的概念,簡單理解,x的範數||x||就是x的長度。那麼這裡的長度和上一節中說的距離到底有什麼區別呢。距離的概念是針對兩個元素來說的,例如d(x,y)指的是x與y兩個元素之間的距離,而範數是針對一個元素來說的,每一個元素都對應一個範數,可以將範數理解為一個元素到零點的距離(這只是一種理解,並不是定義),也就是它自己的長度。定義範數和距離一樣也要滿足一些要求:
(1)非負性:||x||≥0;
(2)||ax||=|a| ||x||,即裡面的數乘可以提出來;
(3)三角不等式:||x||+||y||≤||x+y||。
我們依然可以任意定義範數,只要滿足以上三條。
不知道大家有沒有發現,如果我們定義了範數,可以在這基礎上定義距離:d(x,y)=||x-y||。根據範數的三條性質,我們可以證明我們這樣定義的距離也滿足距離的定義,聰明的你可以自己證明一下(對稱性的證明,提一個-1出來,一加絕對值就是1了)。
也就是說範數其實是一個更加具體的概念,有了範數一定能利用範數定義距離,但是有距離不能定義範數。
也許你會問,你不是說理解範數就是一個元素到零點的距離嗎,那定義範數為||x||=d(x,0) 不就行了嗎。這樣的話,對於範數的第二條性質就不一定會滿足,||ax||=d(ax,0),而d(ax,0)不一定等於|a|d(x,0),具體等不等於還要看你的距離是怎麼定義的。
線性賦范空間線性賦范空間,就是把上面的性質加到一起唄,就是定義了加法、數乘和範數的空間。
有了之前的解釋,這就應該很好理解了,不同的空間只是加的條件不一樣。有的加的東西多,有的加的東西少
巴拿赫空間巴拿赫空間就是完備的賦范空間。
賦范空間是什麼意思之前已經說過了,那完備的空間又是什麼意思呢?
我們先來看一下令人頭大的定義:如果一個空間是完備的,那麼該空間中的任何一個柯西序列都收斂在該空間之內。
現在我將慢慢解釋這個定義,首先來說一下柯西序列是什麼,柯西序列就是隨著序數增加,值之間的距離越來越小的序列。換一種說法是,柯西序列可以在去掉有限個值之後,使任意兩個值之間的距離都小於任意給定正常數(其實這就是定義了一個極限而已)。
那麼任意一個柯西序列都收斂在該空間內是什麼意思呢,舉個例子你就明白了。
設定義在有理數空間Q上的序列:Xn = [(2^1/2)n]/n,其中[x]表示x取整數部分。
對於這個數列來說,每一個元素的分子分母都是整數,所以每一個xn都在有理數空間Q上,那這個序列的極限呢,稍有常識的人都能看出,這個序列的極限是2^1/2,而這並不是一個有理數,所以這個柯西序列的極限不在該空間裡面,也就是說有理數空間Q是不完備的。
所以完備的意義我們可以這樣理解,那就是在一個空間上我們定義了極限,但是不論你怎麼取極限,它的極限的值都不會跑出這個空間,那麼這個空間就是完備空間。
另外,不知道你有沒有發現,上面在解釋什麼是柯西序列的時候,有一個詞我加了下劃線,那就是距離,也就說說在定義完備空間之前,要先有距離的概念。所以完備空間,其實也是完備度量空間。
所以,巴拿赫空間滿足幾條特性呢:距離、範數、完備。
內積空間定義了內積的空間就是內積空間。
內積就是我們所說的點乘、標積,它的定義方式也不是唯一的,但如同距離範數的定義一樣,內積的定義也要滿足某些條件,不能隨便定義。具體的條件這裡便不再展開,大家可以去看線性代數書或者直接百度。
內積對我們來說並不是一個陌生的概念,我們從中學就開始接觸向量的點乘。也能夠初步的理解它的意義,只有定義了內積,才會有夾角的概念,才會有正交的概念,另外內積也可以定義範數,也就是說內積是比範數更具體的一個概念。內積的好處大大的有,在理工科的各個領域都有著極其重要的作用,這裡不再詳細討論。
歐式空間歐式空間使我們經常聽到的概念,它就是定義了內積的有限維實線性空間。
別看它的定義一大長串修飾,其實每一個都是我們生活中常見的概念,可以說我們腦海中對真實世界的認識最接近於歐式空間。我們想當然的距離、長度、夾角等計算都在歐式空間中定義了。
希爾伯特空間終於迎來了我們今天的主角,希爾伯特空間就是完備的內積空間。
到了這裡,我們來捋一捋這些概念的關係。其實,這些空間的定義之間的關係是,有的更加具體(加的限定條件更多),有的更加抽象(加的限定條件更少)。就像是,植物、水果、熱帶水果、熱帶植物……這些概念的關係。那麼這些空間之間的關係是怎樣的呢,可以看這張圖。
只有加法和數乘就是線性空間。
定義了距離的線性空間就是線性度量空間。
再更具體一點定義了範數,就是賦范空間。
再多定義一個內積,就是內積空間。
那希爾伯特空間呢,就是再多定義一個完備性,這裡的完備性是為了取極限操作而準備的。也就是說有了完備性,取極限才不會跑出自己的空間。
為什麼要這麼麻煩呢?是因為研究不同問題的需要,之前說了,現代數學以集合為研究對象,首先確定所研究的元素,然後定義需要用到的結構。例如歐式空間中,每一個向量就是我們所研究的元素,內積運算就是我們所定義的結構。有些問題我們不涉及夾角,只用研究距離和線性性質,那我們完全可以在線性度量空間中來研究,就沒有必要定義內積;甚至有時我們連距離都不需要,這樣的空間叫拓撲空間(元素的交並運算仍屬於同一集合)。所以說,這些空間概念的定義,這些結構的定義是為了研究各種不同的具體問題,或者說是為了將現實中各種具體問題抽象出來,為解決問題提供嚴謹的數學理論基礎。這便是這些空間的由來。
歐式空間的應用場景很好理解,因為我們生活的就是一個三維的歐式空間,我們想當然的理解的距離,長度,夾角的概念就是歐式空間中距離,範數,內積的定義。那麼希爾伯特空間的應用場景呢,希爾伯特空間中的元素一般是函數,因為一個函數可以視為一個無窮維的向量。如果大家熟悉傅立葉變換或者泰勒展開,便能自然的想到這個空間的基底是什麼。沒錯,也是一組無限多的函數。
再生核希爾伯特空間
支持向量機的核技巧(kernel trick),涉及到再生核希爾伯特空間的概率。
核技巧將不能線性可分的數據集映射到高維空間,使其變得線性可分。如果已經理解了這些內容,其實對於理解非線性支持向量機來說已經足夠了。關鍵大家容易不理解的是再生核希爾伯特空間和這個核技巧的關係。
其實關係是這樣的:我們定義了一種核函數(例如徑向基函數),就定義了一個希爾伯特空間,而這個核函數的再生性使得我們可以不去計算高維特徵空間中的內積,而只需計算核函數,降低了大量的計算量。
圖書推薦
本書選取了近年來比較熱門的語言Python作為載體,來實現算法的功能。這不但可以讓讀者系統地學習算法的相關知識,而且還能提高讀者對Python語言的應用水平。
pip 的高階玩法
Python數據可視化,被Altair圈粉了
你真的懂print('Hello World!')?我不信
缺失值可視化Python工具庫:missingno