數學模型——數學與人類文明的橋樑
序言
數統治著宇宙。――Pythagoras
數學一詞在西方源於古希臘語μάθημα,意思是通過學習獲得知識,顯然,早期數學涵蓋的範圍比我們今天要廣得多。人類科學發展至今,衍生出生物科學、資訊科學、金融學、電腦科學等不勝列舉的領域與分支。而數學模型正是數學應用到各個領域的橋樑,數學模型的作用幾乎滲透到現代科學的每一個角落,本文並非枯燥乏味的學術論文(並非貶低枯燥卻嚴謹的學術論文,只是不同的表現形式),而通過科學史上真實的例子,讓讀者感受數學模型在科學發展中的強大力量。這些例子,包括時間跨度很大的天文學研究,也包括時下熱點領域人工智慧,試圖讓讀者從中窺見數學模型設計的一些基本原則與數學思想,而這些原則與數學思想,往往非常簡單又極具普適價值,希望能讓各個領域的讀者獲得一點點思路上的啟迪。
特別鳴謝
本文的一些例子(托勒密的例子,Adwait Ratnaparkhi的例子,華爾街的例子)參考了著名學者、投資人、人工智慧與語音識別專家吳軍博士所著的《數學之美》(第三版,人民郵電出版社)一書,很多思想也備受該書的啟迪,謹向吳軍博士以及為該書的出版工作做出貢獻的人們表示誠摯的敬意。
數學模型的重要性——從“地心說”談起
在天文學中,地心學說1的起源很早,最初由米利都學派形成初步理念,後由古希臘學者歐多克斯提出,經亞里士多德完善,又由托勒密進一步完善成為“地心說”。本文關心的並非地心說的起源,而把時間刻度的側重放在托勒密的完善以及之後的發展過程,因為正是從托勒密開始,人們才開始嘗試使用數學模型,對地心說進行定量計算與完善。
克羅狄斯·托勒密(Claudius Ptolemaeus)“地心說”的集大成者,公元90年生於埃及,父母都是希臘人。他是著名的天文學家和數學家,幾何學上著名的“托勒密定理”也是以他的名字命名。之於地心說,托勒密的偉大之處是用40-60個在大圓上套小圓的方法,精確地計算出行星的運算軌跡。他繼承了畢達哥拉斯的一些思想,認為圓是最完美的幾何圖形(幫助,還是桎梏?),因此用圓來描述行星運動的軌跡,如下圖。
托勒密模型的精度之高,讓後來的科學家們(當然是指地心說時期的科學家)驚歎不已,以此為基礎,凱撒制定了儒略曆2,即每年365天,每四年增加一個閏年,多一天。1500年來,人們根據他的計算決定農時,但是經過1500年,托勒密模型的累計誤差,已經超過了10天,由於這個差距,歐洲農民從事農業生產的時間差出了一個節氣,很影響農業發展。1582年,教皇格里高利十三世在儒略曆的基礎上刪除了10天,然後將每世紀最後一年的閏年改為平年,然後每400年再補回一個閏年,這就是我們今天用的日曆3,小時候就曾背過的口訣“4年一閏,100年不閏,400年又閏”說的就正是這個規則,這個日曆幾乎沒有誤差。
但是想一想,40-60個套在一起的圓的模型,用今天的計算機也很難求解;對於模型的內在原理,當然就更沒有人能給出解釋(恐怕包括托勒密自己,從現代的觀點來看,地心學說本就是無法解釋的)。雖然格里高利十三世“湊”出了相對準確的演算法,但他並沒有從理論上找出原因,因為這種湊的做法很難舉一反三。糾正地心說錯誤不能只靠在40幾個圓的模型上再多套幾個圓,而要進一步探索真理。波蘭天文學家哥白尼發現如果以太陽為中心,只需要8-10個圓,因此他提出了日心說4,然而遺憾的是,哥白尼正確的假設並沒有得到比托勒密模型更好的結果,相反,他的模型誤差要大不少。哥白尼生前害怕惹怒教會,遲遲不敢發表自己的學說,直到臨終前才發表;同時由於準確性的原因,這個正確的模型在當時又很難被人接受,甚至被當作“邪說”。
想讓日心說被人們心悅誠服地接受,需要用它準確地描述行星行動,完成這一使命的是約翰內斯-開普勒。在所有一流天文學家中,開普勒資質較差,一生犯了無數錯誤,但他有兩樣別人沒有的東西:從老師第谷手中繼承的大量精確的觀測資料,和運氣(有時候,運氣也是科學研究實力的一部分)。開普勒很幸運地發現了行星圍繞太陽運轉的軌道實際上是橢圓形的,這樣不需要用多個小圓套大圓,只要一個橢圓就能將運動規律描述清楚了。(從現代的視角回望,托勒密繼承了畢達哥拉斯“圓為至美”的思想,獲得了思維上的引導,或許也帶來了持續千年的桎梏。)由此,開普勒提出了三大行星運動定律5,大部分高中生就能從高中課本中學到,形式非常簡單,不過開普勒的知識水平還不足以解釋為什麼行星的軌跡是橢圓形的。這一行星運動軌跡為什麼是橢圓形這個偉大而艱鉅的任務,最後由牛頓用萬有引力解釋得清清楚楚。
許多年後,日心說的故事又起了小的波瀾,1821年法國天文學家瓦布林發現,天王星的實際軌跡與藉助橢圓模型算出來的不太符合。當然,偷懶的辦法是藉助小圓套大圓的方法修正,但不少嚴肅的科學家卻努力尋找真正的原因。不久,天文學家們發現了吸引天王星偏離軌道的海王星,這正是好的數學模型應用於天文發現的優秀例證。
從這個天文學的例子中,可以總結出關於建立數學模型的以下幾個結論:
1.一個正確的數學模型,在形式上應當是簡單的。這一點在邏輯學上有一個專門的表述——“奧卡姆剃刀原理”:這個原理可簡單表述為“如無必要,勿增實體”,或者說如果一個事情有多種解釋,那麼最可能的正確的解釋就是最簡單的那個,即假設更少的那個。這一點在很多自然學科中是得以印證的,物理學家很早就形成了共識:越是簡單的物理公式,越有可能接近真相。自然的規律本就是以簡單為美,“簡單性”也為後面的結論提供了理論基礎。
2.一個正確的模型可能一開始還不如一個精雕細琢過的錯誤模型來的準確,我們如果認為一個模型的大方向是對的,就應該堅持下去。(“精雕細琢過的錯誤模型”是不是違背了結論1中“簡單性”的原則呢?所以它很有可能是錯誤的。)
3.正確的模型也可能受到噪聲干擾而顯得不夠準確,這時不應該用湊合的修正方法加以彌補,而要找到噪聲的根源,或許能通往更大的發現。(參考海王星的發現,如果只是用小圓套大圓繼續修正,是不是就錯過了發現的機會?反覆的修正,是否也違背了結論1“簡單性”的原則呢?)
4.大量的資料對研發很重要。
上面的4個結論是從天文學的發展中總結出的,卻在自然科學中極具普適性。在本文後面的部分中會多次印證這些結論(尤其是第一條)在科學研究中對建立數學模型的指導意義。
“不要把雞蛋放在一個籃子裡”——最大熵模型
數學模型的應用在各個領域數不勝數,這裡我想談談在經濟學以及機器學習領域應用廣泛的最大熵模型。
知名投資人、人工智慧與語音識別專家吳軍博士在AT&T實驗室作關於最大熵模型的報告時,拿出一個骰子,問聽眾“每個面向上的概率是多少”,所有人都說是等概率,每個面六分之一。他問聽眾們為什麼,得到的回答都是:對於“一無所知的骰子”,假設它每個面向上的概率是均等的是最安全的做法。接著,吳軍博士又告訴聽眾,他對這個骰子做過特殊處理,使得四點朝上的概率是三分之一,然後又問聽眾“在這種情況下,其它各面朝上的概率又是多少”。這次,大部分人認為其他五個面的概率均為剩下2/3的五分之一,也就是2/15,也就是說除去已知的條件必須滿足,而對其餘各點的概率無從知道,只好認為它們相等。在猜測上述兩種不同情況的概率分佈時,大家都沒有新增任何主觀假設(比如骰子是韋小寶的灌了鉛的骰子,或者4點的背面一定是3點,等等)。這種基於直覺的猜測之所以正確,正是因為最大熵原理。
最大熵原理指出,對一個隨機事件的概率分佈進行預測時,我們的預測應該滿足所有的已知條件,而對未知的情況不作任何主觀假設。在這種情況下,概率分佈最均勻,預測的風險最小。我們常說“不要把雞蛋放在一個籃子裡”,也正是這個原理的一個樸素的提法。
顯然,前面的定義對於投資人或者神經網路的工程師來說,已經很具有指導意義,但是對於一個十分重視邏輯嚴謹性的數學研究者,前面的定義是不可接受的(什麼叫“主觀假設”?什麼是“預測的風險”?)。甚至,什麼是“熵”,也還沒有一個明確的定義。熵(entropy),是從熱力學中的概念, 由香濃引入到資訊理論中。在高中物理熱力學這一章節,老師可能說過:熵是用來衡量分子運動混亂程度的物理量。熵之所以重要,因為它總結了宇宙的基本發展規律:宇宙中的事務都有向著混亂髮展的趨勢,也就是熵增原理(比如我的寢室,我的書桌) 。在資訊理論和概率統計中,擴充套件了熵的內涵,用來表示隨機變數不確定性的度量。這樣的描述顯然還是不能滿足數學家的要求,概率統計中對熵有如下的定義:
可以看出,H(x)依賴於X的分佈,而與X的具體值無關。H(X)越大,表示X的不確定性越大。在此基礎上,又擴充套件出條件熵:
現在已經對熵的定義有了初步的認識,但還是遠遠不夠的。最大熵原理具有相對複雜和深奧的定義基礎和推導過程(如拉格朗日乘子,貝葉斯定理,特徵函式等),限於本人的水平和本文的篇幅,只能對其作大致的解釋,詳細的講述可參考文末列出的參考資料6。這裡僅直接給出最大熵模型的定義:對於給定的資料集T, 特徵函式 f i (x,y),i=1,…,n ,最大熵模型就是求解模型集合C中條件熵最大的模型。
匈牙利著名數學家,資訊理論最高獎夏農獎得主I.Csiszar證明,對任何一組不自相矛盾的資訊,最大熵模型總是存在且是唯一的。此外它們還具有一個非常簡單的形式——指數函式。最大熵模型在形式上具有的簡單和優美,使得其在自然語言處理(多義詞的理解)和金融領域(對衝基金,風險預測)大展拳腳。很多之前的問題,科學家們通過複雜的引數補丁(類比前面的大圓套小圓)都很難有效解決,卻被最大熵模型完美地解決了,這一點,也再一次體現了自然規律中“簡單即是美”的特點。下面列舉自然語言處理和金融領域各一例來例證最大熵模型的應用場景。
(1)原微軟研究員Adwait Ratnaparkhi在研究詞性標註和句法分析等自然語言處理問題時,將上下文資訊、詞性,以及主謂賓等句子成分,通過最大熵模型結合起來,做出了當時世界最好的詞性標識系統和句法分析器,這一模型至今仍是使用單一方法的系統中效果最好的。
(2)華爾街的金融巨鱷們向來喜歡用新技術提高他們的收益(對於他們來說,幾個百分點的期望提升收益或許都將是不可想象的),證券交易需要考慮非常多的複雜模型,之前僅依靠權重引數的方法收益率貌似已經到達了瓶頸,因此,在最大熵模型提出之後,很多對衝基金開始使用最大熵模型,並且取得了很好的成果。
總結來說,最大熵模型將各種資訊整合到一個統一的模型中,它有很多良好的特性:形式簡單,非常優美;能滿足各個資訊源的限制又保持平滑。因此其應用範圍極廣。而這個模型的靈感源泉,或許正是“不要把雞蛋放到一個籃子裡”這樣一個簡單樸素的生活經驗。
能“思考”的機器——人工神經網路
淺談神經網路
在科幻小說中,我們的未來有時被描繪成這樣的烏托邦:機器助手能只需要一句指示就能為主人完成各種工作;自動駕駛汽車在道路甚至是半空中快速飛馳,而絲毫不出差錯;智慧機器人能夠勝任大部分工作,人們只需享受輕鬆的生活。有時這一未來又被渲染成恐怖的場景:高度智慧化的機器人不受人類的控制,擁有獨立思考的能力,最終統治、甚至毀滅人類。科幻小說難免有誇張的成分,但還是足以證明人工智慧的發展對於人類世界的重大影響力。尤其是20世紀80年代人工神經網路技術興起以來,基於神經網路的深度學習技術發展迅速,尤其是近年來,深度學習、神經網路的研究已然掀起了又一波熱潮,吸引著大量的人才和資金投資;而且統計資料表明,深度學習目前似乎還正處於科學發展S型曲線的前半部分7,在不久的將來可能還將大有發展。如今,人工神經網路已經在自動控制、生物、醫學、經濟等等領域都大有作為。
如今(2020年)的機器學習或深度學習大多是基於人工神經網路進行的,本文將側重點放在人工神經網路體現出的數學模型和數學方法上。人工神經網路這個詞乍一聽是用人工的辦法模擬人腦,似乎是仿生學或者認知科學的問題,讓人感覺十分神祕,畢竟到目前為止,人腦的工作方式還沒有被人類完全搞懂(甚至可以說一無所知?而這會不會是神經網路的極限所在呢?)。然而,其實除了借用一些生物學的名詞,做了一些形象的比喻以外,目前的人工神經網路和人腦沒有半點關係,其本質上是一種分層的數學模型,最終目標是通過一系列簡單的數學變換(層)實現從輸入到目標的對映,而這種資料變換的方式是通過觀察示例學習得到的。神經網路每層對輸入資料的操作儲存在該層的權重引數中,而“深度學習”中,”深度“的意思正是指的神經網路模型"分層"的這一特點;”學習“,指的正是通過示例修正這些引數的過程(簡稱調參,一些智慧科學研究人員喜歡形象地稱之為”煉丹“)。下圖是一個三層的神經網路。
神經網路模型在數學上實際就是一種特殊的有向圖,其節點被稱之為”神經元“,而前面所說的權重引數由邊權來表示。除此之外,神經網路模型還有一些基本的要求:
(1)所有的節點都是分層的,每一層節點可以通過有向弧指向其下一層,不能躍層連線,同一層的節點之間也沒有弧相連。
(2)每一條弧有一個邊權,表示弧尾節點之於弧頭節點的權重,根據這些值,可以用一個簡單的公式計算下一層節點的值,更詳細地講,從前一層計算後一層的公式應該滿足(粗體表示向量或張量):Y = f(XW)的形式,即Y由前一層X做一次線性變換,然後使用一個啟用函式f得到。這麼做是為了保持模型每一層的簡單性——一次線性變換+一次對映,利於大規模訓練時的分散式計算。
神經網路訓練
對於一個具體的深度學習任務,還有一點是必不可少的,那就是定義損失函式。損失函式用來衡量網路預測值與真實目標值的差距。在訓練過程中,往往會根據損失函式的值來代表模型預測與期望的差距,對前面的權重引數進行修正(通過梯度下降,反式微分的方式)。本文探討的重點不是具體的計算,而是如何選擇一個好的神經網路模型,當然這是一個很複雜的問題,沒有一個確定的答案,我們能做的是從大的方向上概述模型選擇的原則。我們將使用一個具體的例子:有一份1000個樣本的新聞資料集,我們希望得到一個新聞分類器:輸入一篇文章,分類器將新聞分為”時政“、”娛樂“、”金融“三類之一。(當然現實中會有更多種類,但是作為一個例子,三類已經足夠了。)我們希望使用關鍵詞(最常出現的20個)是否出現作為特徵,也就是輸入向量是一個二進位制的序列[x1,x2……x20], xi = 1代表第i個關鍵詞出現在本文中,xi = 0代表並未出現。最終輸出的應該是一個取值1~3的數字,代表分類結果。那麼我們需要做以下幾步工作:
(1)將資料集分為訓練集和測試集,分別用來訓練模型和測試最終的模型正確率。我們例子中假定樣本是帶標註的,即每一篇文章都已經對應好一種預期的分類。
(2)對樣本進行預處理,即處理資料集中的文章,變為前述20維0/1向量的輸入形式。
(3)設計模型。主要包括:模型的層數,每一層的初始引數和啟用函式,損失函式,以及每一輪迭代過後對引數的修正幅度(梯度下降法中的步長)。同時還要確定訓練過程的迭代輪數。
(4)在訓練集上訓練。
(5)根據效果修正模型反覆訓練。
(6)在測試集上測試。
模型設計的原則
我們重點關注的是第三步——設計模型。在模型的設計中,有以下幾點需要說明:
(1)如何設定模型的層數和引數數量。
是越多越好嗎?答案顯然是否定的,一個顯而易見的原因就是算力資源,越多的層數和引數勢必會帶來更大的計算複雜度,這也是上世紀機器學習發展緩慢的原因之一。在不考慮算力資源的情況下,層數和引數越多模型的正確率就一定會越高嗎?答案也是否定的。這一點可能會有些違揹人的第一感覺,一些人可能會覺得引數變多,勢必能在數學上獲得更好的擬合效果,模型也就更加”準確“。但值得注意的是,這個準確是在訓練集上的,而我們訓練模型的最終目的顯然不是為了讓其只能應用於訓練集中,而是任意的類似問題。實際上模型的層數和引數數量設計的關鍵不是數量,而是提取的特徵是否是真正有用的資訊。舉一個極端的例子,在前面的分類模型中,我們如果將輸入引數的維度設定為1,也就是一個數字,使得其取值範圍為1900,正好對應900個訓練樣本,那麼是不是隻需要一個1900到數集{1,2,3}的對映,就可以正確率100%的解決訓練集上的分類?但這個模型顯然對於任何新的文字是沒有效果的。或者,如果一味加大中間層的引數數量,這個模型就可能會學到只適用於訓練集中的模式,比如”姓王的記者報導的是娛樂新聞“,這種看起來無厘頭但是訓練集中又恰巧出現的模式。
這正體現了深度學習過程中優化與泛化的矛盾性,機器學習的目的是獲得良好的泛化,而我們無法調整泛化,只能基於訓練資料調整模型。過度的優化是不是又很想文章開頭”地心說“例子中大圓套小圓的做法?這又一次體現了簡單性在模型設計中的指導意義。
(2)啟用函式和損失函式的選擇
這與本文的主旨關係不大,但又是十分重要的一部分,啟用函式和損失函式往往具有平滑曲線或是歸一化的作用,常用的有sigmoid函式、softmax函式等。
(3)迭代的次數是越多越好嗎?
答案是否定的。這個問題和前面的增加層數和引數數量有很大的相似性。在訓練過程中有一個很常見的現象就是過擬合,在迭代的初期,隨著迭代次數的增加,在測試集(實際上應該是驗證集)和訓練集的損失都在下降,此時是欠擬合狀態,可以理解為模型還在識別對於目標任務有用的模式資訊;隨著迭代的進行,測試集的損失值會到達一個下限,之後,隨著迭代次數的增加,在訓練集上的損失還會下降,但是在測試集上的損失會逐漸上升(如下圖)。為什麼會逐漸上升?答案正是發生了過擬合,模型自動識別了訓練集上特有的模式,就比如前面的”姓王的記者報導的是娛樂新聞“,而這在測試集上很可能是沒有的。
為什麼有多餘的模式就會帶來更大的損失呢?這一點恰恰可以由前面的最大熵原理來解釋:最大熵原理指出,對一個隨機事件的概率分佈進行預測時,我們的預測應該滿足所有的已知條件,而對未知的情況不作任何主觀假設。顯然,多餘的模式違背了對未知情況不作主觀假設這一要求,因此在測試集上效能顯著下降。考慮之前天文學中通過打補丁的方式修正模型,最終獲得的模型勢必在其它的星系也不會獲得理想的收穫。
神經網路模型的建立是複雜的過程,需要大量的經驗和嘗試,本文只是管中窺豹,試圖從神經網路模型中尋找其蘊含的數學哲理,以及數學模型的一些法則——比如”簡單性“與”普適性“。我的水平十分有限,從大處著眼泛泛地講述了神經網路模型,希望能傳播這樣一個道理:即使像神經網路這樣聽起來很”高大上“且抽象的現代技術,其本質上也是通過非常樸素的數學模型設計和建立,正如高斯所言”數學,科學的皇后;算術,數學的皇后“,掌握數學模型的原則和方法,將會使各行各業的研究人員從中獲益匪淺。
結語
本文從地心學說的興廢、最大熵模型的應用、人工神經網路模型三個很貼近應用領域的例子出發,淺談了數學模型在其中發揮的至關重要的作用,以及一些基本設計原則。一方面希望給各個領域的科學工作者們一點點思路的啟迪;另一方面也希望能讓更多的科學工作者看到數學在科技發展中的不可忽視的重要作用,激勵更多的研究者沉心靜氣,做一些底層的、或許與時下應用無關的、更接近數學本質的工作。
地心學說的主要觀點以“地球位於宇宙中心靜止不動”為基礎。 ↩︎
根據天文學家索西琴尼的計算。 ↩︎
為了紀念他,這種曆法也叫“格里高利日曆” ↩︎
相對於“地心說”,日心說的主要觀點以“太陽為宇宙中心”為基礎。 ↩︎
①橢圓定律:所有行星繞太陽的軌道都是橢圓,太陽在橢圓的一個焦點上。②面積定律:行星和太陽的連線在相等的時間間隔內掃過的面積相等。③調和定律:所有行星繞太陽一週的恆星時間的平方與它們軌道半長軸的立方成比例 ↩︎
關於最大熵模型,可參考:李航 《統計學習方法[M]》 清華大學出版社; 概述網址:https://zhuanlan.zhihu.com/p/29978153 ↩︎
科學發展的S型曲線:科技發展常會呈現出S形曲線。開始增長緩慢,直到引爆點突然加速,然後逐漸減速被新的技術替代。 ↩︎
相關文章
- 報表工具分類-數學模型模型
- 漢羅塔問題java數學模型(從數學原型到數學模型)Java模型原型
- 二維碼生成器,連線物理與數字世界的橋樑
- 元學習:人類與大模型比較建模大模型
- WebViewJavascriptBridge 原始碼中 Get 到的“橋樑美學”WebViewJavaScript原始碼
- Callback 與 Promise 間的橋樑 —— promisifyPromise
- 數學處理類
- 數學專業的數學與計算機專業的數學的比較計算機
- 讀天才與演算法:人腦與AI的數學思維筆記19_深度數學演算法AI筆記
- DDD聚合的數學模型 -Thomas Ploch模型
- 讀天才與演算法:人腦與AI的數學思維筆記12_數學的藝術演算法AI筆記
- 數學與生活
- 淺析 Flutter 與 iOS 的檢視橋樑FlutteriOS
- 數學類筆試題筆試
- 讀天才與演算法:人腦與AI的數學思維筆記15_聲響的數學之旅演算法AI筆記
- 讀天才與演算法:人腦與AI的數學思維筆記20_數學圖靈測試演算法AI筆記圖靈
- Flutter與webview通訊橋樑開發FlutterWebView
- SQL與NoSQL,資料橋樑SqoopSQLOOP
- GraphQL-前端開發的利劍與橋樑前端
- 音樂與數學
- 【演算法學習】數學專題 有理數類别範本演算法
- 橋樑模式簡介模式
- 機器學習引數模型與非引數模型/生成模型與判別模型機器學習模型
- Goja—Go 和 JavaScript 的橋樑GoJavaScript
- 引數匹配模型——Python學習之引數(二)模型Python
- 高考數學常用數學思想:函式與方程思想,在數列中的應用函式
- 嘗試討論線性方程組相關數學原理、機器學習模型引數求解的數學本質機器學習模型
- 【原創】開源Math.NET基礎數學類庫使用(07)常用的數學物理常數
- 統計學家用數學模型預測《冰與火之歌》的未來模型
- 【數學】組合數學 - 卡特蘭數
- nofile引數的學習與整理
- 數論學習筆記 (3):因數與倍數筆記
- 程式設計是更像數學還是人類語言?- MIT News程式設計MIT
- 重返數學史的黃金時代,由數學推動誕生的人工智慧,一部人類智慧形成的歷史...人工智慧
- 帶你學習BFS最小步數模型模型
- 和大家談談數學模型之美模型
- 深度學習(模型引數直方圖)深度學習模型直方圖
- 讀天才與演算法:人腦與AI的數學思維筆記07_數字繪畫演算法AI筆記