在我讀研究生第一年,我對(duì)于數(shù)學(xué)有了一次頓悟,這改變了我對(duì)整個(gè)機(jī)器學(xué)習(xí)領(lǐng)域的看法與思路。當(dāng)時(shí)我選擇研究的方向是機(jī)器學(xué)習(xí)。這是一個(gè)交叉學(xué)科的領(lǐng)域,結(jié)合了計(jì)算機(jī)科學(xué)、統(tǒng)計(jì)學(xué)和其他很多的數(shù)學(xué)學(xué)科,比如優(yōu)化方法和線性代數(shù)。需要學(xué)的內(nèi)容非常多,所有的研一的學(xué)生都在努力地消化吸收這些海量的概念。
一天晚上,我坐在辦公室里試圖去對(duì)線性代數(shù)有所悟。雖然我有一本很好的教材—基爾伯特·斯特朗所著的《線性代數(shù)入門》—作為我的引導(dǎo),但我一直沒(méi)辦法取得進(jìn)展。我看著各種各樣的定義,特征分解、喬丹正規(guī)型、矩陣翻轉(zhuǎn)等等,就在想:“為什么?為什么這些都看著那么詭異?為什么翻轉(zhuǎn)要這么定義?真正地仔細(xì)想想,為什么所有這些矩陣運(yùn)算都用現(xiàn)在這個(gè)方式來(lái)定義?”
就在我無(wú)望地盯著滿屏的數(shù)學(xué)符號(hào)的時(shí)候,突然腦海里一道靈光閃現(xiàn)。我意識(shí)到:數(shù)學(xué)是一種設(shè)計(jì)!在此之前,我一直把數(shù)學(xué)當(dāng)成一種宇宙真理一樣的學(xué)習(xí)。它完美超然、且?guī)缀醴踩怂豢芍5谀且怪?,我意識(shí)到數(shù)學(xué)也僅僅是一個(gè)人類創(chuàng)建的工具。數(shù)學(xué)是被設(shè)計(jì)出來(lái)的,就像軟件編程是被設(shè)計(jì)出來(lái)的一樣,也使用了很多類似的設(shè)計(jì)原理。這些原理也許不那么明顯,但都是可以被理解的。從那個(gè)時(shí)刻起,對(duì)我而言數(shù)學(xué)從不可知變?yōu)楹侠?/p>
數(shù)學(xué)是由對(duì)象、運(yùn)算以及一些簡(jiǎn)化形式構(gòu)成的系統(tǒng)。它被設(shè)計(jì)來(lái)對(duì)真實(shí)世界的現(xiàn)象進(jìn)行建模。與所有的設(shè)計(jì)類似,它也有一定的自由度。這一系統(tǒng)可以這樣設(shè)計(jì),當(dāng)然也可以那樣設(shè)計(jì)。一個(gè)矩陣在極坐標(biāo)體系里可以被設(shè)計(jì)為一個(gè)圓球。只要運(yùn)算是一致的,這種設(shè)計(jì)就沒(méi)有關(guān)系;它僅僅就是一個(gè)簡(jiǎn)化的縮寫。在某個(gè)時(shí)間點(diǎn),某個(gè)人制定了這些設(shè)計(jì)。他們挑選了這些對(duì)象與運(yùn)算方式,并指定了組織在一起的規(guī)則。如果設(shè)計(jì)得比較好,那么基于這些基本的決定,很多有用的、可被證明的特性就出現(xiàn)了。這整套系統(tǒng)就可以被用來(lái)對(duì)我們所處于的這個(gè)世界進(jìn)行建模:比如拋物在空間里的運(yùn)行方式,聲波穿過(guò)以太的方式,或者股票價(jià)格的漲跌?,F(xiàn)實(shí)世界包含了層層堆疊的復(fù)雜性。設(shè)計(jì)良好的數(shù)學(xué)系統(tǒng)則給出了干凈簡(jiǎn)潔的工具來(lái)表征每一層的現(xiàn)實(shí)世界。
線性代數(shù)被設(shè)計(jì)來(lái)表征線性方程體系。而線性方程則被設(shè)計(jì)來(lái)表征線性關(guān)系,即一個(gè)對(duì)象被寫成其他對(duì)象相乘的和的關(guān)系。在線性代數(shù)的縮寫里,一個(gè)線性關(guān)系被表征為一個(gè)線性算子,即一個(gè)矩陣。線性算子被設(shè)計(jì)得很簡(jiǎn)單,因此他們的效應(yīng)就可以被完全的分析。線性算子可以做兩件事:旋轉(zhuǎn)和增縮。這里,在幾何與代數(shù)的交界處,一些神奇的事情發(fā)生了。代數(shù)里的乘和加運(yùn)算被轉(zhuǎn)化成了向量空間里的向量的旋轉(zhuǎn)和增縮。這樣就可以讓我們用代數(shù)的方法來(lái)分析線性算子的幾何效應(yīng),即把矩陣分解成它的組成部分:需要旋轉(zhuǎn)多少、需要擴(kuò)展或是壓縮多少以及在哪個(gè)方向上進(jìn)行。

來(lái)源:Alice Zheng授權(quán)使用
數(shù)學(xué)所包含的某些設(shè)計(jì)原則也展現(xiàn)在軟件工程里面。以抽象代數(shù)為例,抽象代數(shù)本質(zhì)上就是一個(gè)對(duì)象層級(jí)設(shè)計(jì)的實(shí)踐。它的目的是用近可能少的原料,并一次加入一個(gè)或幾個(gè)原料,來(lái)查看會(huì)得到什么有趣和有用的產(chǎn)出。一個(gè)“群”被定義成一些元素與一個(gè)運(yùn)算的集合(運(yùn)算必須要滿足一定的條件來(lái)保證它的行為不會(huì)太奇怪)。一個(gè)“環(huán)”則是一種特殊的群,它具有兩種可以被泛化成加與乘的運(yùn)算。一個(gè)“域”則是一種特殊的環(huán),它具有四種運(yùn)算(可以被泛化成加、減、乘、除)。這種定義立刻就聽著像是軟件工程里的概念:這是一個(gè)對(duì)象的層級(jí)結(jié)構(gòu),“域”繼承自“環(huán)”,而“環(huán)”則繼承自“群”!

來(lái)源:Alice Zheng授權(quán)使用
現(xiàn)在讓我們看看實(shí)數(shù)系統(tǒng)。這是另外一個(gè)層級(jí)化對(duì)象設(shè)計(jì)的例子,但細(xì)節(jié)上有一些有趣的變化。讓我們從自然數(shù)開始。其實(shí)自然數(shù)就是我們用手指頭數(shù)數(shù)的擴(kuò)展。接著,讓我們以零點(diǎn)為中心加入自然數(shù)的鏡像——負(fù)數(shù)。這樣我們就獲得了整數(shù)的概念。再把整數(shù)結(jié)合上加法和乘法運(yùn)算,我們就得到了一個(gè)上面所說(shuō)的“環(huán)”。如果再結(jié)合上乘法和除法,我們就生成了有理數(shù),也就是得到了一個(gè)“域”。如果故事就此為止,我們會(huì)有一個(gè)不錯(cuò)的結(jié)果:我們有一堆數(shù)和一些運(yùn)算。對(duì)這些數(shù)運(yùn)用我們的運(yùn)算,我們還是會(huì)得到同樣類型的數(shù)。好耶!但不幸的是,我們的幾何學(xué)家鄰居會(huì)來(lái)敲門,并問(wèn):“圓形的面積是什么樣的數(shù)?直角三角形的斜邊長(zhǎng)度是什么數(shù)?”這些數(shù)看起來(lái)并不是某兩個(gè)整數(shù)的比例值。

來(lái)源:Alice Zheng授權(quán)使用
上述的這些發(fā)現(xiàn)打開了無(wú)理數(shù)的泄洪閘,攪亂了我們?cè)O(shè)計(jì)的干凈整齊的數(shù)的系統(tǒng)。有理數(shù)和無(wú)理數(shù)都是有用的數(shù),因此最好能有一個(gè)表達(dá)方式來(lái)統(tǒng)一處理兩者。但是,源于那個(gè)煩人的“無(wú)窮”的概念,這兩種數(shù)是如此的不同。無(wú)理數(shù)是無(wú)限長(zhǎng)的,因此很不容易處理;而有理數(shù)是有順序的,且可數(shù)的;無(wú)理數(shù)是無(wú)法數(shù)的。我們整整花了幾千年來(lái)找到一個(gè)解決方法去統(tǒng)一處理有理數(shù)和無(wú)理數(shù)?,F(xiàn)在最佳的提議是用有限小數(shù)方式表示:每個(gè)實(shí)數(shù)都可以被認(rèn)為是無(wú)窮數(shù)列的等價(jià)類。整個(gè)數(shù)的系統(tǒng)的結(jié)構(gòu)都是層級(jí)化的,而且大部分的元素實(shí)際上都沒(méi)辦法被有窮圖靈機(jī)計(jì)算。到頭來(lái),我們可說(shuō)實(shí)數(shù)其實(shí)完全不“真實(shí)”存在,它們都是被構(gòu)造出來(lái)的。
上述這些只是實(shí)際在用的數(shù)學(xué)設(shè)計(jì)的一小部分例子。我們的文化在灌輸一個(gè)很奇怪的理念,即數(shù)學(xué)是很難的,數(shù)學(xué)看起來(lái)是太抽象、太難學(xué)、太難理解,所以幾乎無(wú)法學(xué)會(huì)。但換個(gè)角度來(lái)看,數(shù)學(xué)和軟件工程有著令人驚訝的相似性。這兩個(gè)學(xué)科都會(huì)使用自己的行話與表示法。但一旦我們理解了這些行話后,我們就可以看到數(shù)學(xué)的靈與肉了。理解數(shù)學(xué)的設(shè)計(jì)原則可以引領(lǐng)我們進(jìn)入這個(gè)充滿層級(jí)對(duì)象和變換表現(xiàn)的世界。在對(duì)于數(shù)學(xué)有更多的了解后,就可能幫助我們產(chǎn)生更多的數(shù)學(xué)與軟件工程學(xué)交叉的想法。甚至我們也能開始去對(duì)數(shù)學(xué)的設(shè)計(jì)做修改,產(chǎn)生新的數(shù)學(xué)設(shè)計(jì)。想想,現(xiàn)在的實(shí)數(shù)系統(tǒng)已經(jīng)非常得古老和笨拙了。是時(shí)候來(lái)點(diǎn)新的東西了!
Alice Zheng
Alice是機(jī)器學(xué)習(xí)領(lǐng)域的技術(shù)帶頭人。她有著豐富的算法與應(yīng)用平臺(tái)的開發(fā)應(yīng)用經(jīng)驗(yàn)?,F(xiàn)在她是亞馬遜廣告平臺(tái)的高級(jí)經(jīng)理。在此之前,她曾擔(dān)任過(guò)GraphLab、Dato和Turi的數(shù)據(jù)科學(xué)主管,微軟實(shí)驗(yàn)室的機(jī)器學(xué)習(xí)研究員,卡耐基梅大學(xué)的博士后。她擁有加州大學(xué)伯克利分校的數(shù)學(xué)計(jì)算機(jī)學(xué)士學(xué)位和電子工程博士學(xué)位。

