【数字智能三篇】之三: 一页纸说清楚“什么是深度学习?”
按:【數字智能三篇】 目前“大數據”、“推薦系統”、“深度學習”是數字智能領域的熱點研究方向,相關的書籍也很火熱,比如“大數據”僅這兩年就出版了很多本,讓一般人看的眼花繚亂。
本系列共分三篇,力求僅以一頁紙的篇幅來系統完整地介紹以上這三個方向,深入淺出。以下內容摘自2014年新出版的《3D打印:三維智能數字化創造》一書,有刪節,完整內容及目錄詳見鏈接:http://www.sigvc.org/why/book/3dp/index.htm?
【數字智能三篇】之一: 一頁紙說清楚“什么是大數據”:http://blog.sciencenet.cn/blog-4099-781642.html
【數字智能三篇】之二: 一頁紙說清楚“什么是推薦系統?”:http://blog.sciencenet.cn/blog-4099-783271.html
-----------------------
深度學習:像人腦一樣深層次地思考
從上一篇我們可以看出,個性化推薦系統確實很會“察言觀色”,針對不同的用戶,主動推送不同的3D打印內容。但如果你認為它真正有了“人工智能”,那你就錯了。其實,這些推薦系統背后的運行原理主要基于概率統計、矩陣或圖模型,計算機對這些數值運算確實很擅長,但由于采用的只是“經驗主義”的實用方法(也即管用就行),而非以“理性主義”的原則真正探求智能產生的原理,所以距離真正的人工智能還很遠。AI(Artificial Intelligence),也就是人工智能,就像長生不老和星際漫游一樣,是人類最美好的夢想之一。雖然計算機技術已經取得了長足的進步,但是到目前為止,還沒有一臺計算機能產生“自我”的意識。
提示:圖靈測試(Turing Testing),是計算機是否真正具有人工智能的試金石?!坝嬎銠C科學之父”及“人工智能之父”英國數學家阿蘭·圖靈(1912—1954)在1950年的一篇著名論文《機器會思考嗎?》里,提出圖靈測試的設想。即把一個人和一臺計算機分別隔離在兩間屋子,然后讓屋外的一個提問者對兩者進行問答測試。如果提問者無法判斷哪邊是人,哪邊是機器,那就證明計算機已具備人的智能。
直到深度學習(Deep Learning)的出現,讓人們看到了一絲曙光,至少,(表象意義下的)圖靈測試已不再是那么遙不可及了。2013年4月,《麻省理工學院技術評論》雜志將深度學習列為2013年十大突破性技術(Breakthrough Technology)之首。有了深度學習,推薦系統可以更加深度地挖掘你內心的需求,并從海量的3D模型庫中挑選出最合適的供你打印。
讓我們先來看看人類的大腦是如何工作的。1981年的諾貝爾醫學獎,頒發給了David Hubel和Torsten Wiesel,以及Roger Sperry。前兩位的主要貢獻是,發現了人的視覺系統的信息處理是分級的。如圖4-45所示,從視網膜(Retina)出發,經過低級的V1區提取邊緣特征,到V2區的基本形狀或目標的局部,再到高層的整個目標(如判定為一張人臉),以及到更高層的PFC(前額葉皮層)進行分類判斷等。也就是說高層的特征是低層特征的組合,從低層到高層的特征表達越來越抽象和概念化,也即越來越能表現語義或者意圖。
圖4-45 ?人腦的視覺處理系統 (圖片來源:Simon Thorpe)
這個發現激發了人們對于神經系統的進一步思考。大腦的工作過程,或許是一個不斷迭代、不斷抽象概念化的過程,如圖4-46所示。例如,從原始信號攝入開始(瞳孔攝入像素),接著做初步處理(大腦皮層某些細胞發現邊緣和方向),然后抽象(大腦判定眼前物體的形狀,比如是橢圓形的),然后進一步抽象(大腦進一步判定該物體是張人臉),最后識別眼前的這個人──正是大明星劉德華。這個過程其實和我們的常識是相吻合的,因為復雜的圖形,往往就是由一些基本結構組合而成的。同時我們還可以看出:大腦是一個深度架構,認知過程也是深度的。
圖4-46 ?視覺的分層處理結構 (圖片來源:Stanford)
而深度學習(Deep Learning),恰恰就是通過組合低層特征形成更加抽象的高層特征(或屬性類別)。例如,在計算機視覺領域,深度學習算法從原始圖像去學習得到一個低層次表達,例如邊緣檢測器、小波濾波器等,然后在這些低層次表達的基礎上,通過線性或者非線性組合,來獲得一個高層次的表達。此外,不僅圖像存在這個規律,聲音也是類似的。比如,研究人員從某個聲音庫中通過算法自動發現了20種基本的聲音結構,其余的聲音都可以由這20種基本結構來合成!
在進一步闡述深度學習之前,我們需要了解什么是機器學習(Machine Learning)。機器學習是人工智能的一個分支,而在很多時候,幾乎成為人工智能的代名詞。簡單來說,機器學習就是通過算法,使得機器能從大量歷史數據中學習規律,從而對新的樣本做智能識別或對未來做預測。
而深度學習又是機器學習研究中的一個新的領域,其動機在于建立可以模擬人腦進行分析學習的神經網絡,它模仿人腦的機制來解釋數據,例如,圖像、聲音和文本。深度學習之所以被稱為“深度”,是因為之前的機器學習方法都是淺層學習。深度學習可以簡單理解為傳統神經網絡(Neural Network)的發展。大約二三十年前,神經網絡曾經是機器學習領域特別熱門的一個方向,這種基于統計的機器學習方法比起過去基于人工規則的專家系統,在很多方面顯示出優越性。如圖4-47所示,深度學習與傳統的神經網絡之間有相同的地方,采用了與神經網絡相似的分層結構:系統是一個包括輸入層、隱層(可單層、可多層)、輸出層的多層網絡,只有相鄰層節點(單元)之間有連接,而同一層以及跨層節點之間相互無連接。這種分層結構,比較接近人類大腦的結構(但不得不說,實際上相差還是很遠的,考慮到人腦是個異常復雜的結構,很多機理我們目前都是未知的)。
圖4-47 ?傳統的神經網絡與深度神經網絡
提示:人類大腦由千億個神經元組成,同時每個神經元平均連接到其它幾千個神經元,這樣形成一個龐大的神經元網絡。通過這種連接方式,神經元可以收發不同數量的能量,但它們對能量的接受并不是立即作出響應,而是先累加起來,只有當累加的總和達到某個臨界閾值時才把能量發送給其它的神經元。而人工神經網絡(Artificial Neural Networks, ANN)將人類神經網絡作了數學上的抽象,如圖4-47所示,將其抽象為輸入層、輸出層以及中間的若干隱層(Hidden Layer,用于層次化地對內在特征進行降維和抽象表達,相當于特征檢測器),其中每層都有若干結點及連接這些點的邊,通過在訓練數據集上學習出邊的權重(Weight)來建立模型。邊所表征的函數(通常為非線性函數)的不同,對應于不同的神經網絡。例如,第6章6.4.1節所介紹的感知機就是一種最簡單的、不含任何隱層的前向(Feedforward)人工神經網絡,其中的函數被稱為傳遞函數(Transfer Function)、而門限截止函數則被用作激活函數(Activation Function)。在上世紀七八十年代,這種在人工智能領域被稱為聯結主義學派(Connectionism)的方法曾盛極一時。
但是后來,因為理論分析的難度,加上訓練方法需要很多經驗和技巧,以及巨大的計算量和優化求解難度,神經網絡慢慢淡出了科研領域的主流方向。值得指出的是,神經網絡(如采用誤差反向傳播算法:Back Propagation,簡稱BP算法,通過梯度下降方法在訓練過程中修正權重使得網絡誤差最小)在層次深的情況下性能變得很不理想(傳播時容易出現所謂的梯度彌散Gradient Diffusion或稱之為梯度消失,根源在于非凸目標代價函數導致求解陷入局部最優,且這種情況隨著網絡層數的增加而更加嚴重,即隨著梯度的逐層不斷消散導致其對網絡權重調整的作用越來越小),所以只能轉而處理淺層結構(小于等于3),從而限制了性能。于是,20世紀90年代,有更多各式各樣的淺層模型相繼被提出,比如只有一層隱層節點的支撐向量機(SVM,Support Vector Machine)和Boosting,以及沒有隱層節點的最大熵方法(例如LR,Logistic Regression)等,在很多應用領域取代了傳統的神經網絡。
顯然,這些淺層結構算法有很多局限性:在有限樣本和計算單元情況下對復雜函數的表示能力有限,針對復雜分類問題其泛化能力受到一定的制約。更重要的是,淺層模型有一個特點,就是需要依靠人工來抽取樣本的特征。然而,手工地選取特征是一件非常費力的事情,能不能選取好很大程度上靠經驗和運氣。既然手工選取特征不太好,那么能不能自動地學習一些特征呢?
提示:實際生活中,人們為了實現對象的分類,首先必須做的事情是如何來表達一個對象,即必須抽取一些特征來表示一個對象。例如,區分人和猴子的一個重要特征是是否有尾巴。特征選取的好壞對最終結果的影響非常大。
此外,我們希望提取到的特征能代表輸入數據的最重要部分,就像PCA(Principal Component Analysis,主成分分析,請參見第6章的6.2.2節)那樣,找到可以代表原信息的主要成分。以自動編碼器(AutoEncoder)為例,這是一種盡可能復現輸入信號的神經網絡:即輸出要盡可能與輸入相同,表示為。我們可通過訓練調整這個神經網絡的參數,來得到每一層中的權值系數,這樣就可得到輸入的一個層次化的表示。這個可代表原信息主要成分的表示就是所謂的特征。
進一步地,我們還可用來表示輸出,其中稱為字典。類似于PCA,可理解為基,可理解為系數。同時,我們不僅希望將信號表示為一組層次化基的線性組合,而且要求只需較少的幾個基就可以將信號表示出來,這就是所謂的稀疏編碼(Sparse Coding)?!跋∈栊浴倍x為:只有很少的幾個非零元素或只有很少的幾個遠大于零的元素。也即,我們希望求得一組最佳的系數,滿足:
? ? ? ? ? ? ? ?
注意上式右邊對系數采用了L1范式/正則化/約束以滿足稀疏性,上式實際上是對Lasso(The Least Absolute Shrinkage and Selectionator operator)估計的求解。
之所以希望“稀疏性”是科學依據的,因為絕大多數的感官數據,比如自然圖像,都可以被表示成“少量”基本元素的疊加,比如基本線/面的疊加。稀疏編碼算法是一種無監督學習方法,它用來尋找一組“超完備”基向量(基向量的個數比輸入向量的維數要大)以更高效地表示樣本數據,以找出隱含在輸入數據內部的結構與模式。
答案是能!深度學習框架將特征和分類器結合到一個框架中,自動地從海量大數據中去學習特征,在使用中減少了手工設計特征的巨大工作量??此囊粋€別名:無監督特征學習(Unsupervised Feature Learning),就可以顧名思義了。無監督(Unsupervised)學習的意思就是不需要通過人工方式進行樣本類別的標注來完成學習。因此,深度學習是一種可以自動地學習特征的方法。
提示:準確地說,深度學習首先利用無監督學習對每一層進行逐層預訓練(Layerwise Pre-Training)去學習特征;每次單獨訓練一層,并將訓練結果作為更高一層的輸入;然后到最上層改用監督學習從上到下進行微調(Fine-Tune)去學習模型。
深度學習通過學習一種深層非線性網絡結構,只需簡單的網絡結構即可實現復雜函數的逼近,并展現了強大的從大量無標注樣本集中學習數據集本質特征的能力。深度學習能夠獲得可更好地表示數據的特征,同時由于模型的層次深(通常有5層、6層,甚至10多層的隱層節點,“深”的好處是可以控制隱層節點的數目為輸入節點數目的多項式倍而非多達指數倍)、表達能力強,因此有能力表示大規模數據。對于圖像、語音這種特征不明顯(需要手工設計且很多沒有直觀的物理含義)的問題,深度模型能夠在大規模訓練數據上取得更好的效果。尤其是在語音識別方面,深度學習使得錯誤率下降了大約30%,取得了顯著的進步。相比于傳統的神經網絡,深度神經網絡作出了重大的改進,在訓練上的難度(如梯度彌散問題)可以通過“逐層預訓練”來有效降低。注意,深度學習不是萬金油,像很多其他方法一樣,它需要結合特定領域的先驗知識,需要和其他模型結合才能得到最好的結果。當然,還少不了需要針對自己的項目去仔細地調參數,這也往往令人詬病。此外,類似于神經網絡,深度學習的另一局限性是可解釋性不強,像個“黑箱子”一樣不知為什么能取得好的效果,以及不知如何有針對性地去具體改進,而這有可能成為產品升級過程中的阻礙。
深度學習通過很多數學和工程技巧增加(堆棧疊加:Stack)隱層的層數,如果隱層足夠多(也就是深),選擇適當的連接函數和架構,就能獲得很強的表達能力。深度學習的一個主要優勢在于可以利用海量訓練數據(即大數據),但是常用的模型訓練算法反向傳播(Back Propagation)仍然對計算量有很高的要求。而近年來,得益于計算機速度的提升、基于MapReduce的大規模集群技術的興起、GPU的應用以及眾多優化算法的出現,耗時數月的訓練過程可縮短為數天甚至數小時,深度學習才在實踐中有了用武之地。
值得一提的是,深度學習的誕生并非一帆風順。雖然Yahn Lecun在1993年提出的卷積神經網絡(Convolutional Neural Network:CNN)是第一個真正成功訓練多層網絡結構的學習算法,但應用效果一直欠佳。直到2006年,Geoffrey Hinton基于深度置信網(Deep Belief Net:DBN)——其由一系列受限波爾茲曼機(Restricted Boltzmann Machine:RBM)組成,提出非監督貪心逐層訓練(Layerwise Pre-Training)算法,應用效果才取得突破性進展,其與之后Ruslan Salakhutdinov提出的深度波爾茲曼機(Deep Boltzmann Machine:DBM)重新點燃了人工智能領域對于神經網絡(Neural Network)和波爾茲曼機(Boltzmann Machine)的熱情,才由此掀起了深度學習的浪潮。從目前的最新研究進展來看,只要數據足夠大、隱層足夠深,即便不加“Pre-Training”預處理,深度學習也可以取得很好的結果,反映了大數據和深度學習相輔相成的內在聯系。此外,雖說非監督(如DBM方法)是深度學習的一個優勢,深度學習當然也可用于帶監督的情況(也即給予了用戶手動標注的機會),實際上帶監督的CNN方法目前就應用得越來越多,乃至正在超越DBM。
提示:與前向神經網絡不同,RBM(受限波爾茲曼機)中的可見層和隱含層之間的連接是無方向性且全連接的。對比差異無監督訓練是RBM的一個重要算法,包含了正向過程、反向過程和權值更新三個步驟,主要目標是使生成的數據與原數據盡可能相似,并通過對比兩者的差異來調整權值更新:
? ? ? ? ? ? ? ? ? ??
其中,是學習速率。這樣的網絡可具備感知對輸入數據表達程度的能力,而且嘗試通過這個感知能力重建數據。如果重建出來的數據與原數據差異很大,那么進行調整并再次重建。
2012年6月,《紐約時報》披露了Google Brain項目,吸引了公眾的廣泛關注。這個項目是由著名的斯坦福大學的機器學習教授Andrew Ng和在大規模計算機系統方面的世界頂尖專家Jeff Dean共同主導,用16,000個CPU Core的并行計算平臺去訓練含有10億個節點的深度神經網絡(DNN,Deep Neural Networks),使其能夠自我訓練,對2萬個不同物體的1,400萬張圖片進行辨識。在開始分析數據前,并不需要向系統手工輸入任何諸如“臉、肢體、貓的長相是什么樣子”這類特征。Jeff Dean說:“我們在訓練的時候從來不會告訴機器:‘這是一只貓’(即無標注樣本)。系統其實是自己發明或領悟了‘貓’的概念?!?/span>
2014年3月,同樣也是基于深度學習方法,Facebook的?DeepFace?項目使得人臉識別技術的識別率已經達到了?97.25%,只比人類識別?97.5%?的正確率略低那么一點點,準確率幾乎可媲美人類。該項目利用了?9?層的神經網絡來獲得臉部表征,神經網絡處理的參數高達?1.2億。
最后我們再回到大數據這個時代背景上來。當坐擁海量的大數據,我們無論是做推薦系統還是3D模型檢索(見第6章的6.4節“眾里尋她千百度──海量3D模型的檢索”),以前用簡單的線性數學模型,一般也能獲得還不錯的結果。因此我們沾沾自喜起來,認為還是大數據更重要,而智能算法用簡單直接的就OK了,不需要也沒必要弄得很復雜。而當深度學習出現后,它的一系列輝煌戰績讓我們意識到:也許是時候該“鳥槍換炮”了。簡而言之,在大數據情況下,也許只有比較復雜的模型,或者說表達能力強的模型,才能充分發掘海量數據中蘊藏的有價值信息。更重要的是,深度學習可以自動學習特征,而不必像以前那樣還要請專家手工構造特征,極大地推進了智能自動化。
深度學習(即所謂“深度”)應大數據(即所謂“廣度”)而生,給大數據提供了一個深度思考的大腦,而3D打印(即所謂“力度”)給了智能數字化一個強健的軀體,三者共同引發了“大數據+深度模型+3D打印”浪潮的來臨。
from:?http://blog.sciencenet.cn/blog-4099-785174.html
總結
以上是生活随笔為你收集整理的【数字智能三篇】之三: 一页纸说清楚“什么是深度学习?”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数字智能三篇】之二: 一页纸说清楚“什
- 下一篇: 局部图像特征描述概述