一html
2016 年一月底,人工智能的研究領域,發生了兩件大事。算法
先是一月二十四號,MIT 的教授,人工智能研究的先驅者,Marvin Minsky 去世,享年89 歲。網絡
三天以後,谷歌在天然雜誌上正式公開發表論文,宣佈其以深度學習技術爲基礎的電腦程序 AlphaGo, 在 2015年 十月,連續五局擊敗歐洲冠軍、職業二段樊輝。分佈式
這是第一次機器擊敗職業圍棋選手。距離 97年IBM 電腦擊敗國際象棋世界冠軍,一晃近二十年了。函數
極具諷刺意義的是,Minsky 教授,一直不看好深度學習的概念。他曾在 1969年 出版了 Perceptron (感知器) 一書,指出了神經網絡技術 (就是深度學習的前身) 的侷限性。這本書直接致使了神經網絡研究的將近二十年的長期低潮。學習
神經網絡研究的歷史,是怎樣的?測試
深度學習有多深?學了究竟有幾分?優化
二ui
人工智能研究的方向之一,是以所謂 「專家系統」 爲表明的,用大量 「若是-就」 (If - Then) 規則定義的,自上而下的思路。編碼
人工神經網絡 ( Artifical Neural Network),標誌着另一種自下而上的思路。
神經網絡沒有一個嚴格的正式定義。它的基本特色,是試圖模仿大腦的神經元之間傳遞,處理信息的模式。
一個計算模型,要劃分爲神經網絡,一般須要大量彼此鏈接的節點 (也稱 ‘神經元’),而且具有兩個特性:
每一個神經元,經過某種特定的輸出函數 (也叫激勵函數 activation function),計算處理來自其它相鄰神經元的加權輸入值
神經元之間的信息傳遞的強度,用所謂加權值來定義,算法會不斷自我學習,調整這個加權值
在此基礎上,神經網絡的計算模型,依靠大量的數據來訓練,還須要:
成本函數 (cost function):用來定量評估根據特定輸入值, 計算出來的輸出結果,離正確值有多遠,結果有多靠譜
學習的算法 ( learning algorithm ):這是根據成本函數的結果, 自學, 糾錯, 最快地找到神經元之間最優化的加權值
用小明、小紅和隔壁老王們均可以聽懂的語言來解釋,神經網絡算法的核心就是:計算、鏈接、評估、糾錯、瘋狂培訓。
隨着神經網絡研究的不斷變遷,其計算特色和傳統的生物神經元的鏈接模型漸漸脫鉤。
可是它保留的精髓是:非線性、分佈式、並行計算、自適應、自組織。
三
神經網絡做爲一個計算模型的理論,1943年 最初由科學家 Warren McCulloch 和 Walter Pitts 提出。
康內爾大學教授 Frank Rosenblatt 1957年 提出的「感知器」 (Perceptron),是第一個用算法來精肯定義神經網絡,第一個具備自組織自學習能力的數學模型,是往後許多新的神經網絡模型的始祖。
Rosenblatt 樂觀地預測,感知器最終能夠 「學習、作決定、翻譯語言」。感知器的技術,六十年代一度走紅,美國海軍曾出資支持這個技術的研究,指望它 「之後能夠本身走、說話、看、讀、自我複製、甚至擁有自我意識」。
Rosenblatt 和 Minsky 其實是間隔一級的高中校友。可是六十年代,兩我的在感知器的問題上展開了長時間的激辯。Rosenblatt 認爲感應器將無所不能,Minsky 則認爲它應用有限。
1969 年,Marvin Minsky 和 Seymour Papert 出版了新書:「感知器:計算幾何簡介」。書中論證了感知器模型的兩個關鍵問題:
第一,單層的神經網絡沒法解決不可線性分割的問題,典型例子如異或門,XOR Circuit ( 通俗地說,異或門就是:兩個輸入若是是異性戀,輸出爲一。兩個輸入若是是同性戀,輸出爲零 )
第二,更致命的問題是,當時的電腦徹底沒有能力完成神經網絡模型所須要的超大的計算量。
此後的十幾年,以神經網絡爲基礎的人工智能研究進入低潮,相關項目長期沒法獲得政府經費支持,這段時間被稱爲業界的核冬天。
Rosenblatt 本身則沒有見證往後神經網絡研究的復興。1971年 他 43 歲生日時,不幸在海上開船時由於事故而喪生。
1970年,當神經網絡研究的第一個寒冬降臨時。在英國的愛丁堡大學,一位二十三歲的年輕人,Geoffrey Hinton,剛剛得到心理學的學士學位。
Hinton 六十年代仍是中學生時,就對腦科學着迷。當時一個同窗給他介紹關於大腦記憶的理論是:
大腦對於事物和概念的記憶,不是存儲在某個單一的地點,而是像全息照片同樣,分佈式地,存在於一個巨大的神經元的網絡裏。
分佈式表徵 (Distributed Representation),是神經網絡研究的一個核心思想。
它的意思是,當你表達一個概念的時候,不是用單個神經元一對一地存儲定義;概念和神經元是多對多的關係:一個概念能夠用多個神經元共同定義表達,同時一個神經元也能夠參與多個不一樣概念的表達。
舉個最簡單的例子。一輛 「大白卡車」,若是分佈式地表達,一個神經元表明大小,一個神經元表明顏色,第三個神經元表明車的類別。三個神經元同時激活時,就能夠準確描述咱們要表達的物體。
分佈式表徵和傳統的局部表徵 (localized representation) 相比,存儲效率高不少。線性增長的神經元數目,能夠表達指數級增長的大量不一樣概念。
分佈式表徵的另外一個優勢是,即便局部出現硬件故障,信息的表達不會受到根本性的破壞。
這個理念讓 Hinton 頓悟,使他四十多年來,一直在神經網絡研究的領域裏堅持下來沒有退縮。
本科畢業後,Hinton 選擇繼續在愛丁堡大學讀研,把人工智能做爲本身的博士研究方向。
周圍的一些朋友對此頗爲不解。「你瘋了嗎? 爲何浪費時間在這些東西上? 這 (神經網絡) 早就被證實是扯淡的東西了。」
Hinton 1978 年在愛丁堡得到博士學位後,來到美國繼續他的研究工做。
二
神經網絡當年被 Minsky 詬病的問題之一是巨大的計算量。
簡單說,傳統的感知器用所謂 「梯度降低」的算法糾錯時,耗費的計算量和神經元數目的平方成正比。當神經元數目增多,龐大的計算量是當時的硬件沒法勝任的。
1986年 七月,Hinton 和 David Rumelhart 合做在天然雜誌上發表論文, 「Learning Representations by Back-propagating errors」,第一次系統簡潔地闡述反向傳播算法在神經網絡模型上的應用。
反向傳播算法,把糾錯的運算量降低到只和神經元數目自己成正比。
反向傳播算法,經過在神經網絡裏增長一個所謂隱層 (hidden layer),同時也解決了感知器沒法解決異或門 (XOR gate) 的難題。
使用了反向傳播算法的神經網絡,在作諸如形狀識別之類的簡單工做時,效率比感知器大大提升。
八十年代末計算機的運行速度,也比二十年前高了幾個數量級。
神經網絡的研究開始復甦。
三
Yann Lecun (我給他取箇中文名叫 「嚴樂春」吧) 1960年 出生於巴黎。1987年 在法國得到博士學位後,他曾追隨 Hinton 教授到多倫多大學作了一年博士後的工做,隨後搬到新澤西州的貝爾實驗室繼續研究工做。
在貝爾實驗室,嚴樂春 1989年 發表了論文, 「反向傳播算法在手寫郵政編碼上的應用」。他用美國郵政系統提供的近萬個手寫數字的樣原本培訓神經網絡系統,培訓好的系統在獨立的測試樣本中, 錯誤率只有 5%。
嚴樂春進一步運用一種叫作「卷積神經網絡」 (Convoluted Neural Networks) 的技術,開發出商業軟件用於讀取銀行支票上的手寫數字,,這個支票識別系統在九十年代末佔據了美國接近 20%的市場。
此時就在貝爾實驗室,嚴樂春臨近辦公室的一個同事的工做,又把神經網絡的研究帶入第二個寒冬。
四
Vladmir Vapnik,1936年 出生於前蘇聯,90年 移民到美國,在貝爾實驗室作研究。
早在 1963年,Vapnik 就提出了 支持向量機 (Support Vector Machine) 的算法。支持向量機,是一種精巧的分類算法。
除了基本的線性分類外,在數據樣本線性不可分的時候,SVM 使用所謂 「核機制」 (kernel trick) 的非線性映射算法,將線性不可分的樣本轉化到高維特徵空間 (high-dimensional feature space),使其線性可分。
SVM,做爲一種分類算法,九十年代初開始,在圖像和語音識別上找到了普遍的用途。
在貝爾實驗室的走廊上,嚴樂春和 Vapnik 經常就 (深度) 神經網絡和 SVM 兩種技術的優缺點,展開熱烈的討論。
Vapnik 的觀點是:SVM,很是精巧地在 「容量調節」 (Capacity Control) 上 選擇一個合適的平衡點,而這是神經網絡不擅長的。
什麼是 「容量調節」? 舉個簡單的例子:若是算法容量太大,就像一個記憶力極爲精準的植物學家,當她看到一顆新的樹的時候,因爲這棵樹的葉子和她之前看到的樹的葉子數目不同,因此她判斷這不是樹;若是算法容量過小,就像一個懶惰的植物學家,只要看到綠色的東西都把它叫作樹。
嚴樂春的觀點是:用有限的計算能力,解決高度複雜的問題,比「容量調節」更重要。支持向量機,雖然算法精巧,但本質就是一個雙層神經網絡系統。它的最大的侷限性,在於其「核機制」的選擇。當圖像識別技術須要忽略一些噪音信號時,卷積神經網絡的技術,計算效率就比 SVM 高的多。
在手寫郵政編碼的識別問題上,SVM 的技術不斷進步,1998年 就把錯誤率降到低於 0.8%,2002年 最低達到了 0.56%,這遠遠超越同期傳統神經網絡算法的表現。
神經網絡的計算,在實踐中還有另外兩個主要問題:
第一,算法常常中止於局部最優解,而不是全球最優解。這比如「只見樹木,不見森林」。
第二,算法的培訓,時間過長時,會出現過分擬合 (overfit),把噪音當作有效信號。