標籤:

數學模型與計算機科學的認知

長時間地呆在解決數學問題的世界裡,反而會讓你看不清楚數學的本質,或者數學的根本性的東西。這個觀點,陳省身(Shiing-Shen Chern)和陶哲軒(Terence Tao)都表達過。陳省身在談論納什(John Nash, 電影《美麗心靈》的主角,諾貝爾經濟學獎得主)的時候就反覆提到:John Nash當然是個出色的數學問題的解答者,一天到晚都在做題目。可是,他真的是不懂數學。而陶哲軒在回顧自己的早年經歷也這樣說:在做數學研究之前,整個對數學的工作就是不斷地去做題目,以為解決一個又一個的難題,就是數學家一輩子乾的事情了。直到自己真正走上數學家的道路,才發現,那時候的自己根本不懂數學。

戲劇的隱喻

在數學當中解決問題,很像是做programming的人在解決演算法問題一樣。這是領域中最難吭的骨頭之一,也同時是挑戰智商的舞台,是享受心智的榮耀的最佳場所。但從更加宏觀的角度來看,這些事情雖然有一定的重要性,但做出的貢獻畢竟比較微觀,屬於:在別人搭建好的舞台上演戲。你當然可以專註於去解決特定舞台上的重要問題,甚至去解決一些各個舞台都通用的技術問題。可是,你能否從零開始搭建起一個舞台,能否構建出一個精彩的故事,能否將精彩的故事從其它形式恰如其分地轉移到你熟悉的場景,才是戲劇最關心的問題

讓我們來問一個幼稚但卻微妙的問題:為什麼說這才是戲劇最關心的問題?為什麼燈光、造型、片子的剪切藝術,不是戲劇最關心的問題?

因為,戲劇的故事,舞台所傳達的故事內涵,才是人們真正關心的。你這個戲劇是否能夠繼續在社會中存活下去,取決於是否有源源不斷的觀眾前來觀看,即:是否有社會中其它成員的關注。而故事以及故事的展現方式,才是吸引這些觀眾的核心。戲劇的價值在於它能夠提供一種媒介,充分地表達和探索那些生活表面之下潛藏的真相,用極端的戲劇衝突極集中現那些隱藏的秘密。所以,這些精心設計的故事和表現方式所提供的揭示生活真相的服務,是讓戲劇賴以生存的根本。而那些舞台技術細節,是構建故事的技巧。它重要,但卻不是根本與核心。

總結起來,什麼東西才是一個領域的核心價值呢?就是這個領域,能夠為世界提供的不可替代的東西。如果這個領域所提供的東西,不再受到社會中其它成員的關注,它便會走向枯萎,便會死掉。

那麼同樣的,僅僅在數學中做題目,在計算機中做演算法,對於各自的行業來說它重要,但卻不是核心。過分地陷入這些過程,會讓你一葉障目,陷入到這些微觀細節之中。無論數學還是計算機,它的核心價值是提供一種供其他領域使用的工具,或者一種幫助其它領域梳理細節的服務。

計算機科學的認知

對於計算機來講,它的本質在於運用機器來解放人類的生產力,也就是幫助一個個的人幹活兒,特別是那種單調乏味的機械性的活兒。那麼以此為標準,對於其它領域的人來說,運用你的計算機技能,通過printf不斷地輸出具備固定格式的簡訊的價值,要大於你對複雜演算法的研究。因為這裡的重點依舊在於,你是否把握住了你這個行業能夠在世界中存在的核心:能否幫助人類幹活。至於華麗的專業名詞,諸如大數據、人工智慧、深度學習、設計模式等等,其實都不是重點,或者說,它們彼此之間其實並沒有一個高貴與低賤之分。你不能說研究深度學習的人比研究古老的關係資料庫存儲的人來得高貴,或者寫for循環的人就比只寫printf的人高貴。單看這些說辭,會覺得很荒謬,因為它完全沒有抓住重點。重點在於你寫出的代碼或者弄出來的產品,是否對你當前的服務對象有價值有幫助。它是否能夠幫助你當前的服務對象,更好地解放生產力。

如果繼續用之前例子來說,對於需要重複發送簡訊的人來說,寫出printf是核心,因為它解決了這個業務問題,不用再讓用戶做機械的發送動作。而一堆for,只是循環卻不輸出,並不會對業務起到半毛錢的效果。同樣的,如果你服務的對象,僅僅是一個工廠,那麼運用Excel的各種奇淫巧技,或許更能得到上司的親耐。可你非要在工廠裡面,部署Google那樣的計算機集群,那估計你離被開除也就不遠了。

這裡想要說的是,如果純粹從技術的角度看,不同技術之間其實是不存在好壞高下之分的,因為它僅僅是一個個客觀的知識或者知識規律的總結。真正有高下好壞之分的,在於你的技術應用於業務的合理性、恰當性與優良性。可往往,身陷技術細節的人,會迷失或者自嗨在自己的領域,以自己的流行名號作為高人一等的資本。可這些名號僅僅是「表」,是外在的「名」,它無法撼動核心價值。重要的是,面對你要處理的業務和要服務的客戶,選擇什麼技術工具是合適的。使用什麼樣的技術組合才能更高效、更優雅地解決用戶的問題。

數學的認知

對於數學來講,這樣的認知和思維方式是相同的。數學的作用在於提供一種嚴格的定量討論的框架。它的理論成果,用於從另一個角度去梳理事物之間的數量和變化關係,讓整個問題的討論,變得更精確、更嚴密。而不是悶頭學習基礎知識,為更加深奧的理論做鋪墊。等鋪墊結束,繼續去鑽研更深奧理論中的難題,或是為構建更深奧的理論做準備。

毋庸置疑,把當前的材料,進行加工和組合,自然會變成更加深奧複雜的東西。可是,為什麼要構建這些理論呢?為什麼要做這樣的組合與粘連呢?沒人可以限制你做任意的組合。但是,對其他領域的貢獻和作為工具性的好使程度,是衡量你的組合是否有意義的一個標準。

我想,更有意思的問題是,我為什麼要做這樣的組合,為什麼要去這樣搭建一個數學框架,為什麼那樣不可以?從這些問題的回答中,你會明白數學對生產力的貢獻,它最核心的基本價值在哪裡。

讓我們用自然語言處理(NLP)的例子來做一些說明。

如果想要根據文本本身,來進行語義的推斷或者分類,一個重要的基礎便是提供評價關鍵詞的重要性的指標。這樣的指標在不同的模型下有不同的體現。其中一種方式,是運用詞袋(Bag of Words)模型,將一個文本向量化。運用一個重要的參考指標TF-IDF,來衡量這個關鍵詞的對目標文本的重要程度。其中:

  • TF是Term Frequency,用于衡量這個詞在目標文本中的出現頻率:
  • IDF是Inverse Document Frequency,表示這個詞在其它文本中出現的頻率。

那麼,一個粗略的TF-IDF指標便是:

TF_IDF=frac{這個詞在文本中的出現頻率}{這個詞在其它文本中出現的頻率}

這個詞在文本中的出現頻率這個詞在其它文本中出現的頻率

直接看這兩個定義會讓人一頭霧水,讓我們從另一個角度來考察一番。一個詞對於目標文本是否重要,一個質樸的想法是看它在這個文本當中出現的頻率是否夠高。你可以粗略地認為,它在這個文本中出現的頻率越高,這個詞就越能夠表徵這個文本的含義,也就是越重要。那麼,TF就可以以正相關的方式,體現在TF-IDF的指標中。

而如果這個詞是類似於the這樣的常見卻又沒什麼含義的辭彙,它就不能作為目標文檔中的意義表徵。那麼怎麼衡量它是否是一個常見又沒有實質含義的辭彙呢?一種直觀便是用它在其餘文本中出現的次數來做表徵。如果它越多的在其它文本中出現,那就越是說明這個詞對於目標文本來說是不重要的。於是可以在TF-IDF中以倒數的形式呈現出來。這樣,就解釋了上面這個粗淺的公式。

但回到我們之前的那個問題,為什麼這裡一定是這樣的公式?其合理性在哪裡?換一個行不行?

例如,如果單詞A在文本中出現100次,單詞B出現200次,那是不是說單詞B的重要性就是A的2倍?為它加一個對數來做平滑,是不是可以?如果這個詞在其它文檔中出現的次數都為0,那上面這個指標TF-IDF不就會出現分母為零的情況嗎?應該怎麼解決這個問題?為它們預先增加一個1?還是應該增加多少?

面對一個現實問題,或者當數學真正運用在其它領域時,其重點不在於哪個公式是對的。因為,每一個公式表徵的是每一種對現實的認知與偏見,它對應到一個數學模型。而所有模型,都必然是與你研究重點相關的一種近似和簡化。不存在正確的模型,只存在更好更優良的模型。數學所提供的,正是如同軟體一般的工具模塊。幫助你剖析問題,將你所關注的要點,以更加細密的方式展現出來。

不是說在模型中運用了微積分就比僅僅使用四則運算更高明。也不是說,你的模型中用到了現代數學或者集合論的抽象,就更加酷炫先進。這些都只是表,如同計算機的for循環和printf。重要的在於:運用了數學某個理論分支後,它所搭建的框架,是否將待解決的問題梳理得更清晰?在這樣的梳理之下,這些問題是不是得到了更好的表述和說明?在這樣的表述下,我關心的問題是不是更容易被解決?

正如關於世界地圖拼圖的故事所展現的:直接拼湊世界地圖是困難的,但如果它的反面恰好是一個人像,世界地圖將會因為背面人像的成功拼湊而得到更容易的實現。

那麼數學這個理論工具的作用便是如此。它為其它領域提供一種獨特的定量分析視角,將問題的細緻末節挖掘得更深,考察得更仔細。一旦將一個東西被納入到數學框架中做考慮,它就會像自然光被三稜鏡分解一樣,被數學框架做最精細的剖析。數學框架將每一個邏輯點分門別類地擺放好,以便更加清晰地凸顯出事物內在邏輯的自洽性。這個工具本身不是用來評判或者增加原有材料的價值,而是作為一個客觀的觀察工具(好比三稜鏡、好比望遠鏡),將事物內部複雜而隱秘的邏輯脈絡完整呈現。這是這個工具真正厲害的地方。

越是理論、抽象的東西,越不容易看出應用方式的困難解決問題的困難之間的區別。前者是一個宏觀的方向性的東西,後者是一個深入的執行性的東西。而境界差距,就體現在對前者的把控和後者的適當運用。

為什麼這個地方要用除法,為什麼這個地方要取對數?

對深陷理論的人來說,ta只會從一種角度去尋找答案:如何根據上下文,運用嚴密的邏輯,推導出一個答案。從未嘗試考慮:是不是因為我想要在這裡發揮一個平均的作用;想要給它一個相反的用力效果;又或是計算太複雜,不如取個對數讓它簡單些的外部理由。而只是鑽入到更深奧的理論中,看這個問題是否在其它理論中有個說法。

這其實體現了一種知識上的奴性。你只是不斷地在尋找paper、尋找已有理論,去佐證一個模型或公式。而從來不會根據自己的實際需求,從你對業務的理解、對所要解決問題的認識,去評判模型的優劣,評價公式恰當與否。

數學的歷史早已向我們說明,實踐是先於理論的。微積分先是在工業中得到熟練運用,然後才是在很長的時間後被數學家們完善,成為一套牢固的理論。為什麼數學的歷史、科學的歷史會這樣發生?因為數學的職能是為了將一個問題剖析得更清晰而存在的,是以實際問題為驅動為導向。如果沒有要解決的問題,你空拿屠龍寶刀有何用?龍都沒有了,到哪裡去運用你的屠龍之術?如果你服務的對象需要的是對家畜的屠宰之術,你絢爛的屠龍之術又於事何補?

所以,不能僅僅是從數學的內部去考慮問題,要多從外部去做宏觀的思考:為什麼我要做這個假設,為什麼我要這麼去構建一個公式,換一種方式行不行。沒有這樣的素養,面對新的未被開坑的領域, 沒有任何教科書和現成公式作借鑒,你只能茫然無措。

數學的理論成果,正是一個個的建築基石——building block。它們好比是設計師手中積累的素材。總是累計素材或者考量素材的製作方式是不夠的。最後的臨門一腳,需要將這些素材通過嘗試和實驗,巧妙地連接起來。

面對一個個數學building block,你可以真正地把它們當做樂高積木。用它們去做各種拼湊與嘗試,看你組合出來的成果是否有利於你問題的解決和闡述。沒有人知道哪種組合方式是恰當的。你需要做的是根據直覺、業務的理解,挑選出一些block,搭建好雛形,然後開始試驗。根據試驗所反饋的結果,來修正自己積木的搭建方式。如此往複,不斷地打磨自己建造的數學模型,從而構建出適於解決當下問題的順手工具。

近期回顧

《如何運用GitHub來提高生產效率》

《打造讓用戶為自己尖叫的產品》

《2017年10月寫字總結》

如果你喜歡我的文章或分享,請長按下面的二維碼關注我的微信公眾號,謝謝!

VIP讚賞專區


推薦閱讀:

容易自我感動的偽牛x
她為我講故事
如何運用GitHub來提高生產效率

TAG:原创文章 |