魏忠
1903年,30歲的羅素講了一個理發師的故事,瞬間讓當時的數學家小伙伴們驚呆了。羅素說,一位理發師宣稱要為本城市所有不給自己刮臉的人刮臉,結果這位理發師非常困惑,他要不要為自己刮臉呢?羅素提出的這個悖論,成為有史以來數學最大的三個悖論之一,動搖了當時的數學大廈的基石。
羅素所代表的這種作為科學的數學,似乎中國人一直沒有發明出來。著名數學家吳文俊說,中國人似乎一直不在乎,與西方數學相比,中國人一直在乎的是算法數學,也就是我們所談到的計算機數學。在數學領域,與當今計算機最適合、最現代化的數學,就是本文的主題——數學工程。
三國時期,曹魏有一個小官劉徽,按照木工經常制作圓的原理,把一個正圓按照正六邊形開始計算,正12邊形、正24邊形,最后算到了正2072邊形。劉徽與中國古代的工匠一樣,永遠不會糾結西方從古希臘就開始的數學哲學問題,而是從最接近圓的計算多邊形不斷接近正確答案,這就是遠遠領先的圓周率:3.1416。劉徽所采用的極限方法以及以后幾百年中國古代數學家所發明的子程序、迭代、差分方程、方程組等,是對世界數學的巨大貢獻;所采用的數學機械化和計算數學,深深影響了后面的數學,成為今天計算機數學的重要支柱。
圖1 馮康通過“劉家峽計算”進而發展出了有限元方法
1964年,在中國黃河修一個很復雜的水電站:劉家峽水電站。這個地質水文復雜、湍流復雜的電站的形狀,不僅是不規則的,而且是中空的。按照完全簡化的矩形來計算,根本不能準確計算出水電站所受的力,工期因此嚴重推遲。
這個時候,中科院計算所的馮康出馬了,他將復雜形狀的電站切分成成千上萬個小塊,就像2000年前劉徽計算圓周率那樣,不過這次馮康不僅是遇到把形狀切小的問題,還要同時處理每個小塊的受力和傳導。與劉徽一模一樣的思路,切的塊越小,越接近真實。好在1964年,中國已經獨立發明了原始的計算機,馮康按照當時的計算能力,把塊切得盡量小。等到計算完成的時候,受力也就計算出來了。完成這個工程后,馮康把這種計算方法進行總結,在世界上第一次發明了有限元的方法。
今天,有限元成為計算機數據受力計算的基礎方法,所代表的數字機械化路徑已經成為工程數學的基石。今天我們買到很便宜、簡單的宜家家具,承重較差的材料經過簡單的連接就能承載很重的壓力,這要感謝工程數學的模擬計算。
工程數學,讓實踐有了更多的創新的可能,科學家們的研究不都需要從閱讀別人的論文開始,也不用等到科學原理的突破,就可以從工程或物理原理出發,取得巨大的突破。斯坦福大學的人工智能教授李飛飛,就是這樣做到的。
深度學習理論,是在神經網絡基礎上發展起來的一門人工智能學科,發展到今天,已經在視頻、圖像和聲音識別方面有了很成熟的應用。然而,在算法上改進,難度很大,效果也很不好。
例如,讓一個機器識別一條毯子上臥著的一只貓,并寫下這個句子甚至文章,是很難的。李飛飛經過對兒童認識貓的過程進行分析,發現小孩子從來不需要學習關于貓的概念和理論知識,而是見貓和狗的次數多了,試錯試出來的。于是,李飛飛模擬小孩子的學習過程,通過重酬籌集了167個國家的5萬人、 6萬只貓、10億張圖片、2400萬個節點、1億4千萬個參數、150億個連接,訓練計算機不斷認出貓。順便說一句,李飛飛采用的連接數,是盡可能逼近人類大腦的腦細胞數量了。如果說西方的概念圖示是先描繪貓的概念,然后再認識貓,李飛飛采用的就是東方的數據工程方法,采用大數據方法讓機器自己學會什么是貓,最后計算機寫出了“一只貓臥在毯子上”這個句子。
圖2 李飛飛的計算機根據圖片寫出了“一只貓臥在毯子上”
數據工程之所以越來越重要,是和信息技術的發展密切相關的。早期軟件采用的是機器語言,后來發展成為獨立于硬件的邏輯符號語言;隨著軟件應用的發展,后來數據庫又獨立出來。在軟件發展的前30年,軟件和管理信息系統應用效率受制于需求和開發效率,軟件工程應運而生?;诨ヂ摼W的軟件開發,逐漸誕生了一種嶄新的開發方法——MVC,通俗地講,這是將業務邏輯、數據、界面顯示分離的方法組織代碼。這種方法又遇到像小米和微信那樣快速迭代以適應互聯網客戶需求的開發,再加上物聯網、互聯網大量數據的產生,也使得數據科學和數據工程越來越重要。在IT產業中,數據科學家和數據工程師成為關鍵性的崗位和獨立的專業,數據工程過程本身也逐漸獨立于軟件開發,成為大數據和數據科學應用的基礎。用這個理解去簡要分析一下李飛飛的計算機認識貓的邏輯:貓的圖像的輸入輸出界面和展示效果、用什么最新的算法去認識一只貓、動物圖片庫和數據組織和更新方式,可以由完全不同的三撥人來完成,而數據科學家和數據工程師重點解決第三種數據工程的問題。
吳文俊院士生前曾預見,中國人的數學思維模式傳統,更適合未來計算機迭代和機械化的數據工程時代,讓我們拭目以待吧。
不過我要說的是,既然教計算機也得使用讓計算機自主學習的模式,我們的教師教學生的時候,為什么還把從概念開始當作唯一的方式呢?