人工智慧演算法中的哲學思想
萬物之始,大道至簡,衍化至繁
———老子《道德經》
隨著人工智慧的日益火爆,IT行業中好多人開始瘋狂的學習機器學習、深度學習,確切的說,深度學習也屬於機器學習,下面統稱機器學習,由於機器學習依賴於紮實的數學基礎、涉及諸多數學公式推演、涵蓋非常多的概念和思想,學習曲線非常陡峭!
隨著網際網路大資料的興起,機器學習已經在現實世界呈現了諸多應用,建模得當,機器學習演算法能夠奇妙的解決許多問題,有的甚至讓人拍案叫絕!演算法中蘊含著深刻的數學思想、甚至閃爍著許多哲學思想,本文對涉及哲學概念不加以解釋與展開,不懂的可以查閱哲學教科書,而是著重探索機器學習中的各種哲學思想,給初學者以啟發,從更高、更深的層面去理解原理、把握精髓。
現象與本質、變與不變、簡單與複雜
機器學習中最常見的過擬合問題來說,為什麼會出現過擬合問題?從根本原因來說,是資料量不足引起的,比如識別貓,如果我們能夠拿到全世界所有種類、各式形態貓的圖片,那麼拿出任意一隻貓,就可以準確識別出來,根本不存在泛化問題。這涉及哲學中的幾大主題,現象與本質、不變與變化、簡單與複雜。通過現象認識本質,但現象有欺騙性,在噪音是過擬合問題的重要的來源,噪音其實就是一種有欺騙性的樣本,容易偽裝成其他類別的樣本,如果我們的演算法不能夠識別噪音,就較易出現過擬合。
其次是變與不變的哲學問題了,古希臘有所謂“人不能兩次踏入同一條河流”的箴言,哲學中認為,唯一不變的是變化,變是永恆的,不變是不可能的。類別區分是機器學習中最重要的議題之一,然而,不同類別在變,就是同一類別也在變,所謂變,就是同一類別的不同個體有些特徵表現也是不一樣的,這就問題來了,如果機器學習不能夠從樣本集中提取決定類別屬性的關鍵特徵,而是提取變化的特徵,則容易抓不住主要特徵、顧此失彼、演化出錯。
事物的表象是複雜的,而本質很簡單。過擬合系統用過於複雜的模型來表徵事物的規律,這就違反了上述哲學規律,本質、規律一定是簡單的,可概括的、精煉的,我們回顧一下,物理學中經典定律的表述,都是很簡單的,甚至是富有美學的。所以,如果機器學習出來的模型過於複雜,那麼極有可能並沒有抓住事物的本質規律,出現過擬合是難免的。
真理的相對性
下面說說NFL定理(No Free Lunch Theorem),也就是著名的“沒有免費的午餐”定理,周志華老師在《機器學習》一書中提到:“NFL定理最重要的寓意,是讓我們清楚的認識到,脫離具體問題,空泛的談‘什麼學習演算法更好’毫無意義。”
在機器學習領域,NFL的意義在於告訴機器學習從業者:“假設所有資料的分佈可能性相等,當我們用任一分類做法來預測未觀測到的新資料時,對於誤分的預期是相同的。”
哲學告訴我們,任何真理是相對的、有條件的。真理只在一定的條件下滿足客觀規律,離開一定條件,可能就是謬誤,所以請那些過度迷信一些演算法的機器學習愛好者注意了,不管應用場景的不同而到處套用某一演算法,已經違反了哲學規律。在某個領域、特定假設下表現卓越的演算法不一定在另一個領域也能是“最強者”。
例如,現在很多人沉迷“深度學習”不可自拔,那是不是深度學習就比其他任何演算法都要好?在任何時候表現都更好呢?未必,我們必須要加深對於問題的理解,不能盲目的說某一個演算法可以包打天下。然而,從另一個角度說,我們對於要解決的問題往往不是一無所知,因此大部分情況下我們的確不知道什麼演算法可以得到較好的結果。
整體與部分統一的系統性原理
在深度學習中,深度卷積神經網路通過不斷增加層次數來提高神經網路識別圖片的準確率。今天深度學習已經取得了很多的成功。深度神經網路的發展,由AlexNet的8層到GoogLeNet的22層,再到ResNet的152層,隨著層數的增加,top5錯誤率越來越低,達到3.57%。這裡問題就來了,why deep?實際上在學術界大家一直沒有搞清楚這件事情,為什麼要用這麼深的模型?深度學習的理論基礎並不清楚,並不像SVM那樣有完備的數學理論依據。
一般認為,深度神經網路層次多、模型複雜,所以效果好,但扁平寬度神經網路也很複雜,也能做很多深層神經網路能做的事,但效果為什麼仍然沒有深度神經網路好?
這個理解應該首先從哲學中找到解答的根源。
哲學中,整體與部分的辯證關係,是辯證的統一,整體是由部分組成,部分又是由更小的部分組成的,互相依賴。拿最經典的影象識別來說,一個圖片是一個特定事物的原因,就是這個圖片的許多特徵指向這個事物。比如形狀、顏色、相互關係。這些具體的特徵就是部分,而一整圖片就是整體。當我們拿到一個影象的時候,我們如果把神經網路看作很多層,在最底層,是畫素這些東西。當我們一層一層往上的時候,慢慢的可能有邊緣,再往上可能有輪廓,甚至物件的部件,等等。總體上,當我們逐漸往上的時候,它確實是不斷在對物件進行抽象。而由現象到本質的抽象過程中,是需要很多階段、很多過程的,需要逐步去粗取精、逐步凸顯,才能最終完成。
層數為什麼要那麼多?從整體到部分抽取共同的、本質性的特徵,捨棄非本質的特徵。這過程本來就是一個逐漸抽象的過程,抽絲剝繭、層層萃取、逐漸清晰、統一彙總,層數少根本就抽取不出來。
同一層為什麼要不只一個卷積核?不同卷積核觀察事物的角度不一樣,從不同角度抽取特徵,便於全面、正確的辨識事物,避免“盲人摸象”;
為什麼要有池化層?抓住主要矛盾,忽略次要矛盾,在抽取特徵的過程中,要抓住圖片特徵中最關鍵的部分,放棄一些不重要、非決定性的小特徵;
為什麼最後一般是全連線層?每一層通過不同的卷積核進行特徵轉化,找到與類別關聯最緊的特徵,到最後就要把這些“觀察者”的觀點彙總起來,由部分再組成整體,統一得出結論。淺層時要分,深層時要合,整體、部分辯證的統一。
從哲學的觀點來重新審視我們的機器學習,好多難以理解的疑惑一掃而盡,更重要的,為我們設計新的演算法提供了方法論,機器學習、深度學習中的哲學觀點與思想還很多,感興趣的讀者可私信繼續交流。