一html
2016 年一月底,人工智能的研究領域,發生了兩件大事。react
先是一月二十四號,MIT 的教授,人工智能研究的先驅者,Marvin Minsky 去世,享年89 歲。git
三天以後,谷歌在天然雜誌上正式公開發表論文,宣佈其以深度學習技術爲基礎的電腦程序 AlphaGo, 在 2015年 十月,連續五局擊敗歐洲冠軍、職業二段樊輝。 算法
這是第一次機器擊敗職業圍棋選手。距離 97年IBM 電腦擊敗國際象棋世界冠軍,一晃近二十年了。數據庫
極具諷刺意義的是,Minsky 教授,一直不看好深度學習的概念。他曾在 1969年 出版了 Perceptron (感知器) 一書,指出了神經網絡技術 (就是深度學習的前身) 的侷限性。這本書直接致使了神經網絡研究的將近二十年的長期低潮。編程
神經網絡研究的歷史,是怎樣的?網絡
深度學習有多深?學了究竟有幾分?架構
二分佈式
人工智能研究的方向之一,是以所謂 "專家系統" 爲表明的,用大量 "若是-就" (If - Then) 規則定義的,自上而下的思路。函數
人工神經網絡 ( Artifical Neural Network),標誌着另一種自下而上的思路。
神經網絡沒有一個嚴格的正式定義。它的基本特色,是試圖模仿大腦的神經元之間傳遞,處理信息的模式。
一個計算模型,要劃分爲神經網絡,一般須要大量彼此鏈接的節點 (也稱 '神經元'),而且具有兩個特性:
在此基礎上,神經網絡的計算模型,依靠大量的數據來訓練,還須要:
用小明、小紅和隔壁老王們均可以聽懂的語言來解釋,神經網絡算法的核心就是:計算、鏈接、評估、糾錯、瘋狂培訓。
隨着神經網絡研究的不斷變遷,其計算特色和傳統的生物神經元的鏈接模型漸漸脫鉤。
可是它保留的精髓是:非線性、分佈式、並行計算、自適應、自組織。
三
神經網絡做爲一個計算模型的理論,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),把噪音當作有效信號。
一
1992 年筆者在紐約州的羅切斯特大學選修計算機課的時候,學到這樣一句話,印象極爲深入。
When in doubt, use brute force.
"若是遇到困惑 (的問題), 就使用蠻力. "
此話出自當年 UNIX 系統的發明人之一 Ken Thompson。他的本意是,程序設計中,簡單粗暴的計算方法,雖然可能計算量大,可是便於實現和維護,長期看,仍是優於一些精巧可是複雜的計算手段。
這句話常令我遐想起,1943年 七月蘇聯和德國在庫爾斯克的坦克大決戰。蘇軍八千多輛傻大黑粗的 T-34 坦克,以損失三倍於對手的慘重代價,最終挫敗德軍三千多輛質量精良的虎式坦克集羣。
有哲人對蠻力有另一個詮釋:「 Quantity is Quality 」。
數量就是質量。向數量要質量。
九十年代,一個簡單的神經網絡數據培訓的計算每每至少要花幾天、甚至幾周的時間。
這對於算法的改進調整和應用開發,都是一個巨大的瓶頸。
神經網絡的研究,呼喚着蠻力,呼喚着來自計算速度、網絡速度、內存容量、數據規模各個方面的、更強大的、指數增加的蠻力。
二
這個蠻力的基礎,其實在 1993年 就埋下了種子。
黃仁勳,1963年 出生於臺灣。1993年 從斯坦福大學碩士畢業後不久,創立了 Nvidia。
Nvidia 起家時,作的是圖像處理的芯片,主要面對電腦遊戲市場。1999 年Nvidia 推銷本身的 Geforce 256 芯片時,發明了 GPU (Graphics Processing Unit, 圖像處理器) 這個名詞。
GPU 的主要任務,是要在最短期內顯示上百萬、千萬甚至更多的像素。這在電腦遊戲中是最核心的需求。這個計算工做的核心特色,是要同時並行處理海量的數據。
GPU 在芯片層面的設計時,專門優化系統,用於處理大規模並行計算。
傳統的 CPU (中央處理器) 芯片架構,關注點不在並行處理,一次只能同時作一兩個加減法運算。 而 GPU 在最底層的算術邏輯單元 (ALU, Arithmetic Logic Unit),是基於所謂的 Single Instruction Multiple Data ( 單指令多數據流) 的架構,擅長對於大批量數據並行處理。
打個最簡單的比方,若是有 1, 2, 3, .. 32 個數字,你須要對它們進行計算處理。傳統的 CPU,32 個數字要一個個按順序依次計算。
可是 GPU 在最低層的 ALU,容許同時對 32 個數字作批量處理。
一個 GPU,每每包含幾百個 ALU, 並行計算能力極高。因此儘管 GPU 內核的時鐘速度每每比 CPU 的還要慢,但對大規模並行處理的計算工做,速度比 CPU 快許多。
而神經網絡的計算工做,本質上就是大量的矩陣計算的操做,所以特別適合於使用 GPU。
三
這個速度有多快呢?Nvidia 480 GPU, 2010年 的時候,一秒鐘能夠顯示十六億個三角形,一秒鐘計算速度達 1.3 TFLOPS (萬億次浮點計算)。
而 2015年 出品的 Nvidia Titan X GPU, 一秒鐘能夠達到 6.1 TFLOPS , 接近 2010年 的五倍。其二手貨的市價不到一千美圓。
做爲參照,人類的超級計算機,真正第一次突破一個 TFLOPS 的計算速度,實際上也就是 1996年 底,但其價格是幾百萬美圓量級的。
2007年 Nvidia 推出名叫 CUDA 的並行計算軟件開發接口,使開發者能夠更方便的使用其 GPU 開發應用軟件。多家大學的研究者撰文表示,對於特定工做,NVIDIA GPU 帶來的相對於 Intel 的 CPU 的計算速度提升,達到 100-300 倍。
Intel 技術人員 2010年 專門發表文章駁斥,大意是 Nvidia 實際上只比 intel 快 14 倍,而不是傳說中的 100 倍。
Nvidia 的 Andy Keane 評論: 「老夫在芯片行業混了 26年 了,從沒見過一個競爭對手,在重要的行業會議上站起來宣佈,你的技術 *** 只是 *** 比他們快 14 倍」。
一個蠻力,一個來自 GPU 的計算蠻力,要在深度學習的應用中爆發了。
一
九十年代末,神經網絡研究遇到的困境,除了慢,仍是慢。
拋開計算速度的因素,傳統神經網絡的反向傳播算法,捉蟲時極爲困難,一個根本的問題叫作所謂 vanishing gradient problem (梯度消失問題)。
這個問題在 1991年,被德國學者 Sepp Hochreiter 第一次清晰提出和闡明緣由。
簡單的說, 就是成本函數 (cost function) 從輸出層反向傳播時, 每通過一層,梯度衰減速度極快, 學習速度變得極慢,神經網絡很容易停滯於局部最優解而沒法自拔。
這就像原始部落的小混混,山中無老虎時,在本地稱王稱霸很舒服。 但任何關於"外面的世界很精彩"的信息,在落後的層層傳播機制中被噪音混淆淹沒了。
小混混一生很開心, 沒有意識到外面的世界有多大, 也從未想出去多看看。
二
支持向量機 (SVM) 技術在圖像和語音識別方面的成功,使得神經網絡的研究從新陷入低潮。
SVM 理論上更加嚴謹完備,結果重複性好, 上手簡單, 獲得主流學術界的追捧。
學術界的共識是: 多層神經網絡的計算模型,實踐效果很差,徹底沒有前途。 這是個死衚衕。
這個狀況到本世紀初,變得如此糟糕, 以致於任何論文送到學術期刊時,研究者都不敢用 「神經網絡」 幾個字,省得被粗暴拒絕。
2003年,Geoffrey Hinton, 還在多倫多大學,在神經網絡的領域苦苦堅守。
一個五十六歲的窮教授, 搞了三十多年沒有前途的研究,要四處絞盡腦汁,化緣申請研究經費。他不是盧瑟 (loser) , 誰仍是盧瑟?
2003年 在溫哥華大都會酒店,以 Hinton 爲首的十五名來自各地的不一樣專業的科學家,和加拿大先進研究院 (Canadan Institue oF Advanced Research, 簡稱 CIFAR) 的基金管理負責人,Melvin Silverman 交談。
Silverman 問你們,爲何 CIFAR 要支持他們的研究項目。
計算神經科學研究者,Sebastian Sung (現爲普林斯頓大學教授),回答道,「喔,由於咱們有點古怪。若是 CIFAR 要跳出本身的溫馨區,尋找一個高風險,極具探索性的團體,就應當資助咱們了!」
最終 CIFAR 贊成從 2004年 開始資助這個團體十年,總額一千萬加元。CIFAR 成爲當時,世界上惟一支持神經網絡研究的機構。
不誇張地說,若是沒有 2004年 CIFAR 的資金支持,人類在人工智能的研究上可能還會在黑暗中多摸索幾年。
Hinton 拿到資金支持不久,作的第一件事,就是先換個牌坊。
兩千多年前的劉三, 改了名換了姓,叫什麼 "漢高祖"。鑑於"神經網絡"口碑很差,也被 Hinton 改了名,換了姓,叫 "深度學習" (Deep Learning) 了。
Hinton 的同事,此後時不時會聽到他忽然在辦公室大叫,"我知道人腦是如何工做的了!"。
三
2006年,Hinton 和合做者發表論文,"A fast algorithm for deep belief nets" (深信度網絡的一種快速算法)。
在這篇論文裏,Hinton 在算法上的核心,是借用了統計力學裏的"玻爾茲曼分佈"的概念 (一個微粒在某個狀態的概率,和那個狀態的能量的指數成反比,和它的溫度的倒數之指數成反比),使用所謂的"限制玻爾茲曼機" (RBM) 來學習。
RBM 引入了統計力學經常使用的機率工具。而在七十年代,機率和不肯定性偏偏是主流的人工智能的研究者極爲痛恨的。
RBM 至關於一個兩層網絡,同一層神經元之間不可鏈接 (因此叫 "限制"),能夠對神經網絡實現 「沒有監督的訓練」(unsupervised training)。深信度網絡就是幾層 RBM 疊加在一塊兒。
略掉技術細節,RBM 能夠從輸入數據中進行預先訓練,本身尋找發現重要的特徵,對神經網絡鏈接的權重進行有效的初始化。這屬於一種叫作特徵提取器 (feature extractor)的神經網絡,也稱自動編碼器 (autoencoder)。
通過 RBM 預先訓練初始化後的神經網絡,再用反向傳播算法微調,效果就好多了。
Hinton 後來指出,深度學習的突破,除了計算蠻力的大幅度提升之外聰明有效地對網絡連接權重的初始化也是一個重要緣由。
Hinton 的論文裏,通過六萬個 MNIST 數據庫的圖像培訓後,對於一萬個測試圖像的識別錯誤率最低降到了只有 1.25%。
雖然這還不足以讓主流學術界改變觀點,但深度學習的發展已經見到一絲曙光。
1、
主流學術界的研究者,大多注重於在算法上的漸進式提升, 而輕視計算速度和用於訓練的數據規模的重要性。
孔丘老師早在兩千多年前,就高瞻遠矚的爲深度學習指明瞭方向:「學而不思則罔, 思而不學則殆」。
用深度學習的語言來講,就是,「光有大數據,算得不快,則仍是迷惘;光算得快,而沒有大量的數據來訓練,則仍是疲倦無所得」。
2007年 以前, 用 GPU 編程,缺少一個簡單的軟件接口。 編程繁瑣,捉蟲困難。這在 07年 Nvidia 推出 CUDA 的 GPU 軟件接口後才真正改善。
2009年 六月, 斯坦福大學的 Rajat Raina 和吳恩達合做發表論文,「用 GPU 大規模無監督深度學習」(「Large-scale Deep Unsupervised Learning using Graphic Processors)。
論文模型裏的參數總數 (就是各層不一樣神經元之間連接的總數),達到一億,與之相比,Hinton 2006年 的論文裏用到的參數數目,只有一百七十萬。
論文結果顯示,使用 GPU 運行速度和用傳統雙核 CPU 相比, 最快時要快近七十倍。在一個四層,一億個參數的深信度網絡上,使用 GPU 把程序運行時間從幾周降到一天。
2、
2010年 瑞士學者 Dan Ciresan 和合做者發表論文,「又深又大又簡單的神經網絡在手寫數字識別上表現出色」。(「Deep Big Simple Neural Nets Excel on Handwritten Digit Recognition」)
這篇論文裏, 使用的仍是是八十年代的反向傳播計算方法,可是計算搬移到 Nivida GTX280 GPU 上實現。在反向傳播計算時,速度比傳統 CPU 快了 40 倍。
另外一個關鍵點是:
把訓練神經網絡的圖像,刻意經過旋轉, 放大縮小和彈性形變等方式進行改變。這樣用於訓練的圖像數目大大增長。使用 GPU 後,改變六萬張訓練圖像的計算速度從 93 秒降到了 9 秒鐘, 快了十倍。不斷用計算變形實現的圖像, 等價於一個數量無限的訓練數據庫。
論文結果顯示,一個六層,擁有一千兩百萬個參數的神經網絡模型,通過兩個小時的訓練後,在測試圖像上的錯誤率就降到 1%。 通過 114 個小時訓練後,模型的測試錯誤率更是降到了 0.35%。
3、
2012 年還在斯坦福大學作研究生的黎越國同窗 (Quoc Viet Le) 領銜, 和他的導師吳恩達,以及衆多谷歌的科學家聯合發表論文,「用大規模無監督學習建造高層次特徵」(Building High-level Features Using Large Scale Unsupervised Learning)。
黎越國的文章中, 使用了九層神經網絡,網絡的參數數量高達十億,是 Ciresan 2010年 論文中的模型的一百倍,是 2009年Raina 論文模型的十倍。
做爲參照,按照丹麥學者 Bente Pakkenberg 2003年 的估算,人的腦皮層 (Neocortex) 內就有接近一百五十萬億個神經元突觸(Synapse,是鏈接神經元傳遞信號的結構), 是黎同窗的模型參數數量的十萬倍。
用於訓練這個神經網絡的圖像, 都是從谷歌的錄像網站 youtube 上截屏得到。 一千萬個原始錄像,每一個錄像只截取一張圖片, 每張圖片有四萬個像素, 與之相比,先前大部分論文使用的訓練圖像,原始圖像的數目大多在十萬如下,圖片的像素大多不到一千。
黎越國的計算模型分佈式地在一千臺機器 (每臺機器有 16 個 CPU 內核) 上運行,花了三天三夜才完成培訓。
通過培訓的神經網絡,在一個名叫 ImageNet 的共享圖像數據庫裏,面對兩萬兩千個不一樣類別,一千四百萬個圖像中, 分類識別的正確率達到了 15.8%。 而在此以前最好的公開發表的模型,正確率只有 9.3%。
深度學習的研究進步在加速,但要說服更多的主流的人工智能研究者加入,須要的是更多的, 可直接對比的,大幅領先的,無可辯駁的計算結果。
1、
計算速度和數據規模的大幅度提升,也引導出更多算法上的改進。
在網絡構架上,一些算法更多地借鑑人腦認知的成功經驗: 多提升效率, 少作無用功。多閉目養神,少亂說亂動。 多關注主要矛盾,少關心細枝末節。
2003年 紐約大學神經科學中心的 Peter Lennie 在論文中指出,人腦的神經元,通常最多 1-4%的比例, 能夠同時處於激活狀態。比例更高時,大腦則沒法提供相應的能量需求。
神經網絡的模型中,經過所謂激勵函數(activation function), 根據上一層神經元輸入值來計算輸出值。
最典型的傳統激勵函數,sigmoid function,輸出值在 0 和 1 之間,也就意味着神經元平均下來,每時每刻都在使用一半的力量。
這種高強度能量需求,對於普通生物體而言,是沒法持續的。
一個有意思的比方是鱷魚。真實生活中的鱷魚,和動物世界的紀錄片中縱身一躍,兇猛捕食的形象截然不同。
鱷魚 90%的時間是一動不動的,(一個近距離觀察者常會把它誤認爲是石雕)剩下 5%的時間用於求偶交配,5%的時間用於覓食。
鱷魚的低能耗綠色生活方式,使它成爲兩棲動物界的壽星。雖然野生鱷魚的平均壽命缺少嚴格科學的統計,可是被捕獲後人工飼養的鱷魚中,有很多個體,記錄在案的壽命超過了七十歲。
2、
2011 年,加拿大的蒙特利爾大學學者 Xavier Glorot 和 Yoshua Bengio 發表論文,「Deep Sparse Rectifier Neural Networks」。(深而稀疏的修正神經網絡).
論文的算法中使用一種稱爲 「修正線性單元」(REctified Linear Unit,又稱 RELU)的激勵函數。用數學公式表達:rectifier (x) = max (0, x ).
對於 RELU 而言,若是輸入爲負值,輸出爲零。不然輸入和輸出相等。
換而言之,對於特定的輸入,統計上有一半神經元是沒有反應,保持沉默的。
使用 RELU 的含有三個隱層的神經網絡模型,被用來測試於四個不一樣的經典的圖像識別問題。和使用別的激勵函數的模型相比,RELU 不只識別錯誤率廣泛更低,並且其有效性,對於神經網絡是否進行 「預先訓練」 過並不敏感。
RELU 的優點還有下面三點:
傳統的激勵函數,計算時要用指數或者三角函數,計算量要比簡單的 RELU 至少高兩個數量級.
RELU 的導數是常數, 非零即一, 不存在傳統激勵函數在反向傳播計算中的"梯度消失問題".
因爲統計上,約一半的神經元在計算過程當中輸出爲零,使用 RELU 的模型計算效率更高,並且天然而然的造成了所謂 "稀疏表徵" (sparse representation), 用少許的神經元能夠高效, 靈活,穩健地表達抽象複雜的概念.
1、
神經網絡計算,另外一個常爲人詬病的問題,是過分擬合(overfitting)。
一個擁有大量自由參數的模型,很容易經過調試,和訓練數據吻合。但這並不意味着,這就是個好模型。
美國數學家馮紐曼(John Von Neumann)曾說, 「給我四個參數,個人模型能夠擬合一個大象。給我五個參數, 我可讓它扭動它的鼻子。」
神經網絡模型的自由參數,如今每每超過一億。若是說四個參數能夠擬合一個大象的話,對於全世界總數不到一百萬的大象來講,實在是遊刃有餘。
一個模型好壞的試金石,不在於和現有數據的擬合度, 而在於它是否能夠在全新的狀況和數據面前,作出正確的判斷和預測。
金融界的人常會看到各類交易模型,許多模型面對歷史數據的測試時,表現很是好,勝率極高。可是若是投資者天真地覺得找到了致富的捷徑,把模型用於實際交易時,結果每每差強人意。
另一個典型的過分擬合的例子,能夠在小孩教育上看到。許多家長把孩子從小就送到奧數、鋼琴、小提琴等各種才藝和競賽的培訓班,惟恐孩子學得不夠,之後上不了好大學,找不到好工做。
這實際上就是根據社會現有的經濟結構作出的一種過分擬合的訓練。
當時代迅速發展,之前吃香的技能,職業忽然被淘汰,孩子必須面對社會變化和學校教育體系的巨大落差而沒法迅速隨機應變時,悲劇將很難避免。
2、
解決這個問題的算法上的革新,啓迪又是來自生物界,來自有性繁殖和無性繁殖的對比。
愛爾蘭著名哲學家和詩人,奧斯卡*王爾德 (Oscar Wilde) 先生曾有名言,"世界上全部東西都是關於性。 除了性自己" (Everything in the world is about sex,Except sex)。
直覺上,有性繁殖是爲了生物進化,適應環境。可是若是一個已經很是健康的個體,爲何還要經過有性繁殖,拋棄掉本身一半的優秀基因去和另一個個體合做製造下一代呢?
無性生殖的優勢是節能省時,無須浪費時間求偶交配。但致命的弱點是,基因沒有任何變化,遺傳病很容易被傳播到下一代,進而下降生存的機率。
加州大學伯克利分校學者 Adi Livnat 在 2007年 的論文, "關於性在進化中的角色的混合能力理論 "(A mixability theory of the role of sex in evolution ) 中經過模擬計算得出下述結論:
性在生物進化中的目的,不是製造適合某個單一環境的,最優秀的個體基因,而是爲了製造最容易和其它多種基因合做的基因,這樣在多變的外界環境下,總有一款能夠生存延續下來。
優秀個體在有性繁殖中,雖然損失了一半的基因,短時間內看上去不是好事。可是長期看,生物組織總體的存活能力,更加穩健強大。
有性繁殖,在金融投資上的一個類比是: 把財富分散到不一樣種類的資產上,按期從新調整再平衡。 這樣作的缺點是,某個表現特別好的資產可能會被過早的賣掉。 但優勢在於,讓投資組合不過度依賴於某個單一資產,在金融風暴中得以生存下來。
歌舞昇平的年代,人們老是互相攀比投資回報、沒有以爲生存、保本是個問題。當金融黑天鵝降臨時,才幡然醒悟,資本和生命的保全,而不是尋歡做樂,纔是真正最重要的。
3、
2012年 七月, Hinton 教授發表論文, "經過阻止特徵檢測器的共同做用來改進神經網絡" (Improving neural networks by preventing co-adaptation of feature detectors)。
論文中爲了解決過分擬合的問題,採用了一種新的稱爲"丟棄" (Dropout)的算法。
丟棄算法的具體實施,是在每次培訓中,給每一個神經元必定的概率(好比 50%),僞裝它不存在,計算中忽略不計。
從一個角度看,丟棄算法,每次訓練時使用的是不一樣架構的神經網絡(由於每次都有部分神經元裝死),最後訓練出來的東西,至關於不一樣架構的神經網絡模型的平均值。
從生物的有性繁殖角度看,丟棄算法,試圖訓練不一樣的小部分神經元,經過多種可能的交配組合,得到接近理想值的答案。
使用丟棄算法的神經網絡,被強迫用不一樣的、獨立的、神經元的子集來接受學習訓練。 這樣網絡更強健,避免了過分擬合的死衚衕,不會由於外在輸入的很小變化,致使輸出質量的很大差別。
論文結果顯示,使用丟棄算法後,在諸如 MINST、 TIMID、 CIFAR-10 等多個經典語音和圖像識別的問題中, 神經網絡在測試數據中的錯誤率。 相對於經典的深度學習算法,都得到了可觀的進步 (錯誤率降低了 10% 到 30% 不等)。
4、
2012年 的夏天, 距離 Hinton 教授 1970年 開始攻讀博士學位, 距離 Rosenblatt 1971年 溺水身亡, 一晃四十多年過去了。
深度學習的技術,此時有了
條件已經成熟, 該用實驗結果,證實本身相對別的技術,無可辯駁的優越性了。
有詩爲證:
"鴻鵠高飛,一舉千里。
羽翼已就,橫絕四海。
橫絕四海,當可奈何!
雖有繒繳,尚安所施! "
整理自: