丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能 正文
發(fā)私信給陳圳
發(fā)送

3

?大牛的《深度學習》筆記,Deep Learning速成教程

本文作者: 陳圳 2016-08-03 17:35
導語:大牛的《深度學習》筆記,60分鐘帶你學會Deep Learning。

雷鋒網(wǎng)按:本文由Zouxy責編,全面介紹了深度學習的發(fā)展歷史及其在各個領域的應用,并解釋了深度學習的基本思想,深度與淺度學習的區(qū)別和深度學習與神經(jīng)網(wǎng)絡之間的關系。

深度學習,即Deep Learning,是一種學習算法(Learning algorithm),亦是人工智能領域的一個重要分支。從快速發(fā)展到實際應用,短短幾年時間里,深度學習顛覆了語音識別、圖像分類、文本理解等眾多領域的算法設計思路,漸漸形成了一種從訓練數(shù)據(jù)出發(fā),經(jīng)過一個端到端(end-to-end)的模型,然后直接輸出得到最終結果的一種新模式。那么,深度學習有多深?學了究竟有幾分?本文將帶你領略深度學習高端范兒背后的方法與過程。

一、概述
二、背景
三、人腦視覺機理
四、關于特征
       4.1、特征表示的粒度
       4.2、初級(淺層)特征表示
       4.3、結構性特征表示
       4.4、需要有多少個特征?
五、Deep Learning的基本思想
六、淺層學習(Shallow Learning)和深度學習(Deep Learning)
七、Deep learning與Neural Network
八、Deep learning訓練過程
       8.1、傳統(tǒng)神經(jīng)網(wǎng)絡的訓練方法
       8.2、deep learning訓練過程
九、Deep Learning的常用模型或者方法
       9.1、AutoEncoder自動編碼器
       9.2、Sparse Coding稀疏編碼
       9.3、Restricted Boltzmann Machine(RBM)限制波爾茲曼機
       9.4、Deep BeliefNetworks深信度網(wǎng)絡
       9.5、Convolutional Neural Networks卷積神經(jīng)網(wǎng)絡
十、總結與展望


|一、概述

Artificial Intelligence,也就是人   工智能,就像長生不老和星際漫游一樣,是人類最美好的夢想之一。雖然計算機技術已經(jīng)取得了長足的進步,但是到目前為止,還沒有一臺電腦能產(chǎn)生“自我”的意識。是的,在人類和大量現(xiàn)成數(shù)據(jù)的幫助下,電腦可以表現(xiàn)的十分強大,但是離開了這兩者,它甚至都不能分辨一個喵星人和一個汪星人。

圖靈(圖靈,大家都知道吧。計算機和人工智能的鼻祖,分別對應于其著名的“圖靈機”和“圖靈測試”)在 1950 年的論文里,提出圖靈試驗的設想,即,隔墻對話,你將不知道與你談話的,是人還是電腦。這無疑給計算機,尤其是人工智能,預設了一個很高的期望值。但是半個世紀過去了,人工智能的進展,遠遠沒有達到圖靈試驗的標準。這不僅讓多年翹首以待的人們,心灰意冷,認為人工智能是忽悠,相關領域是“偽科學”。

但是自 2006 年以來,機器學習領域,取得了突破性的進展。圖靈試驗,至少不是那么可望而不可及了。至于技術手段,不僅僅依賴于云計算對大數(shù)據(jù)的并行處理能力,而且依賴于算法。這個算法就是,Deep Learning。借助于 Deep Learning 算法,人類終于找到了如何處理“抽象概念”這個亙古難題的方法。

?大牛的《深度學習》筆記,Deep Learning速成教程


2012年6月,《紐約時報》披露了Google Brain項目,吸引了公眾的廣泛關注。這個項目是由著名的斯坦福大學的機器學習教授Andrew Ng和在大規(guī)模計算機系統(tǒng)方面的世界頂尖專家JeffDean共同主導,用16000個CPU Core的并行計算平臺訓練一種稱為“深度神經(jīng)網(wǎng)絡”(DNN,Deep Neural Networks)的機器學習模型(內部共有10億個節(jié)點。這一網(wǎng)絡自然是不能跟人類的神經(jīng)網(wǎng)絡相提并論的。要知道,人腦中可是有150多億個神經(jīng)元,互相連接的節(jié)點也就是突觸數(shù)更是如銀河沙數(shù)。曾經(jīng)有人估算過,如果將一個人的大腦中所有神經(jīng)細胞的軸突和樹突依次連接起來,并拉成一根直線,可從地球連到月亮,再從月亮返回地球),在語音識別和圖像識別等領域獲得了巨大的成功。

項目負責人之一Andrew稱:“我們沒有像通常做的那樣自己框定邊界,而是直接把海量數(shù)據(jù)投放到算法中,讓數(shù)據(jù)自己說話,系統(tǒng)會自動從數(shù)據(jù)中學習?!绷硗庖幻撠熑薐eff則說:“我們在訓練的時候從來不會告訴機器說:‘這是一只貓?!到y(tǒng)其實是自己發(fā)明或者領悟了“貓”的概念?!?/p>

?大牛的《深度學習》筆記,Deep Learning速成教程

2012年11月,微軟在中國天津的一次活動上公開演示了一個全自動的同聲傳譯系統(tǒng),講演者用英文演講,后臺的計算機一氣呵成自動完成語音識別、英中機器翻譯和中文語音合成,效果非常流暢。據(jù)報道,后面支撐的關鍵技術也是DNN,或者深度學習(DL,DeepLearning)。

2013年1月,在百度年會上,創(chuàng)始人兼CEO李彥宏高調宣布要成立百度研究院,其中第一個成立的就是“深度學習研究所”(IDL,Institue of Deep Learning)。

?大牛的《深度學習》筆記,Deep Learning速成教程


為什么擁有大數(shù)據(jù)的互聯(lián)網(wǎng)公司爭相投入大量資源研發(fā)深度學習技術。聽起來感覺deeplearning很牛那樣。那什么是deep learning?為什么有deep learning?它是怎么來的?又能干什么呢?目前存在哪些困難呢?這些問題的簡答都需要慢慢來。咱們先來了解下機器學習(人工智能的核心)的背景。

|二、背景

機器學習(Machine Learning)是一門專門研究計算機怎樣模擬或實現(xiàn)人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能的學科。機器能否像人類一樣能具有學習能力呢?1959年美國的塞繆爾(Samuel)設計了一個下棋程序,這個程序具有學習能力,它可以在不斷的對弈中改善自己的棋藝。4年后,這個程序戰(zhàn)勝了設計者本人。又過了3年,這個程序戰(zhàn)勝了美國一個保持8年之久的常勝不敗的冠軍。這個程序向人們展示了機器學習的能力,提出了許多令人深思的社會問題與哲學問題(呵呵,人工智能正常的軌道沒有很大的發(fā)展,這些什么哲學倫理啊倒發(fā)展的挺快。什么未來機器越來越像人,人越來越像機器啊。什么機器會反人類啊,ATM是開第一槍的啊等等。人類的思維無窮啊)。

機器學習雖然發(fā)展了幾十年,但還是存在很多沒有良好解決的問題:

?大牛的《深度學習》筆記,Deep Learning速成教程


例如圖像識別、語音識別、自然語言理解、天氣預測、基因表達、內容推薦等等。目前我們通過機器學習去解決這些問題的思路都是這樣的(以視覺感知為例子):

?大牛的《深度學習》筆記,Deep Learning速成教程

從開始的通過傳感器(例如CMOS)來獲得數(shù)據(jù)。然后經(jīng)過預處理、特征提取、特征選擇,再到推理、預測或者識別。最后一個部分,也就是機器學習的部分,絕大部分的工作是在這方面做的,也存在很多的paper和研究。

而中間的三部分,概括起來就是特征表達。良好的特征表達,對最終算法的準確性起了非常關鍵的作用,而且系統(tǒng)主要的計算和測試工作都耗在這一大部分。但,這塊實際中一般都是人工完成的??咳斯ぬ崛√卣鳌?/p>

?大牛的《深度學習》筆記,Deep Learning速成教程

截止現(xiàn)在,也出現(xiàn)了不少NB的特征(好的特征應具有不變性(大小、尺度和旋轉等)和可區(qū)分性):例如Sift的出現(xiàn),是局部圖像特征描述子研究領域一項里程碑式的工作。由于SIFT對尺度、旋轉以及一定視角和光照變化等圖像變化都具有不變性,并且SIFT具有很強的可區(qū)分性,的確讓很多問題的解決變?yōu)榭赡?。但它也不是萬能的。

?大牛的《深度學習》筆記,Deep Learning速成教程

然而,手工地選取特征是一件非常費力、啟發(fā)式(需要專業(yè)知識)的方法,能不能選取好很大程度上靠經(jīng)驗和運氣,而且它的調節(jié)需要大量的時間。既然手工選取特征不太好,那么能不能自動地學習一些特征呢?答案是能!Deep Learning就是用來干這個事情的,看它的一個別名UnsupervisedFeature Learning,就可以顧名思義了,Unsupervised的意思就是不要人參與特征的選取過程。

那它是怎么學習的呢?怎么知道哪些特征好哪些不好呢?我們說機器學習是一門專門研究計算機怎樣模擬或實現(xiàn)人類的學習行為的學科。好,那我們人的視覺系統(tǒng)是怎么工作的呢?為什么在茫茫人海,蕓蕓眾生,滾滾紅塵中我們都可以找到另一個她(因為,你存在我深深的腦海里,我的夢里 我的心里 我的歌聲里……)。人腦那么NB,我們能不能參考人腦,模擬人腦呢?(好像和人腦扯上點關系的特征啊,算法啊,都不錯,但不知道是不是人為強加的,為了使自己的作品變得神圣和高雅。) 近幾十年以來,認知神經(jīng)科學、生物學等等學科的發(fā)展,讓我們對自己這個神秘的而又神奇的大腦不再那么的陌生。也給人工智能的發(fā)展推波助瀾。

|三、人腦視覺機理

1981 年的諾貝爾醫(yī)學獎,頒發(fā)給了 David Hubel(出生于加拿大的美國神經(jīng)生物學家) 和TorstenWiesel,以及 Roger Sperry。前兩位的主要貢獻,是“發(fā)現(xiàn)了視覺系統(tǒng)的信息處理”:可視皮層是分級的:

?大牛的《深度學習》筆記,Deep Learning速成教程

我們看看他們做了什么。1958 年,DavidHubel 和Torsten Wiesel 在 JohnHopkins University,研究瞳孔區(qū)域與大腦皮層神經(jīng)元的對應關系。他們在貓的后腦頭骨上,開了一個3 毫米的小洞,向洞里插入電極,測量神經(jīng)元的活躍程度。

然后,他們在小貓的眼前,展現(xiàn)各種形狀、各種亮度的物體。并且,在展現(xiàn)每一件物體時,還改變物體放置的位置和角度。他們期望通過這個辦法,讓小貓瞳孔感受不同類型、不同強弱的刺激。

之所以做這個試驗,目的是去證明一個猜測。位于后腦皮層的不同視覺神經(jīng)元,與瞳孔所受刺激之間,存在某種對應關系。一旦瞳孔受到某一種刺激,后腦皮層的某一部分神經(jīng)元就會活躍。經(jīng)歷了很多天反復的枯燥的試驗,同時犧牲了若干只可憐的小貓,David Hubel 和Torsten Wiesel 發(fā)現(xiàn)了一種被稱為“方向選擇性細胞(Orientation Selective Cell)”的神經(jīng)元細胞。當瞳孔發(fā)現(xiàn)了眼前的物體的邊緣,而且這個邊緣指向某個方向時,這種神經(jīng)元細胞就會活躍。

這個發(fā)現(xiàn)激發(fā)了人們對于神經(jīng)系統(tǒng)的進一步思考。神經(jīng)-中樞-大腦的工作過程,或許是一個不斷迭代、不斷抽象的過程。這里的關鍵詞有兩個,一個是抽象,一個是迭代。從原始信號,做低級抽象,逐漸向高級抽象迭代。人類的邏輯思維,經(jīng)常使用高度抽象的概念。

例如,從原始信號攝入開始(瞳孔攝入像素 Pixels),接著做初步處理(大腦皮層某些細胞發(fā)現(xiàn)邊緣和方向),然后抽象(大腦判定,眼前的物體的形狀,是圓形的),然后進一步抽象(大腦進一步判定該物體是只氣球)。

?大牛的《深度學習》筆記,Deep Learning速成教程

這個生理學的發(fā)現(xiàn),促成了計算機人工智能,在四十年后的突破性發(fā)展。

總的來說,人的視覺系統(tǒng)的信息處理是分級的。從低級的V1區(qū)提取邊緣特征,再到V2區(qū)的形狀或者目標的部分等,再到更高層,整個目標、目標的行為等。也就是說高層的特征是低層特征的組合,從低層到高層的特征表示越來越抽象,越來越能表現(xiàn)語義或者意圖。而抽象層面越高,存在的可能猜測就越少,就越利于分類。例如,單詞集合和句子的對應是多對一的,句子和語義的對應又是多對一的,語義和意圖的對應還是多對一的,這是個層級體系。

敏感的人注意到關鍵詞了:分層。而Deep learning的deep是不是就表示我存在多少層,也就是多深呢?沒錯。那Deep learning是如何借鑒這個過程的呢?畢竟是歸于計算機來處理,面對的一個問題就是怎么對這個過程建模?

因為我們要學習的是特征的表達,那么關于特征,或者說關于這個層級特征,我們需要了解地更深入點。所以在說Deep Learning之前,我們有必要再啰嗦下特征(呵呵,實際上是看到那么好的對特征的解釋,不放在這里有點可惜,所以就塞到這了)。

|四、關于特征

特征是機器學習系統(tǒng)的原材料,對最終模型的影響是毋庸置疑的。如果數(shù)據(jù)被很好的表達成了特征,通常線性模型就能達到滿意的精度。那對于特征,我們需要考慮什么呢?

4.1、特征表示的粒度

學習算法在一個什么粒度上的特征表示,才有能發(fā)揮作用-?就一個圖片來說,像素級的特征根本沒有價值。例如下面的摩托車,從像素級別,根本得不到任何信息,其無法進行摩托車和非摩托車的區(qū)分。而如果特征是一個具有結構性(或者說有含義)的時候,比如是否具有車把手(handle),是否具有車輪(wheel),就很容易把摩托車和非摩托車區(qū)分,學習算法才能發(fā)揮作用。

?大牛的《深度學習》筆記,Deep Learning速成教程

4.2、初級(淺層)特征表示

既然像素級的特征表示方法沒有作用,那怎樣的表示才有用呢?

1995 年前后,Bruno Olshausen和 David Field 兩位學者任職 Cornell University,他們試圖同時用生理學和計算機的手段,雙管齊下,研究視覺問題。 他們收集了很多黑白風景照片,從這些照片中,提取出400個小碎片,每個照片碎片的尺寸均為 16x16 像素,不妨把這400個碎片標記為 S[i], i = 0,.. 399。接下來,再從這些黑白風景照片中,隨機提取另一個碎片,尺寸也是 16x16 像素,不妨把這個碎片標記為 T。

他們提出的問題是,如何從這400個碎片中,選取一組碎片,S[k], 通過疊加的辦法,合成出一個新的碎片,而這個新的碎片,應當與隨機選擇的目標碎片 T,盡可能相似,同時,S[k] 的數(shù)量盡可能少。用數(shù)學的語言來描述,就是:

        Sum_k (a[k] * S[k]) --> T,     其中 a[k] 是在疊加碎片 S[k] 時的權重系數(shù)。

        為解決這個問題,Bruno Olshausen和 David Field 發(fā)明了一個算法,稀疏編碼(Sparse Coding)。

稀疏編碼是一個重復迭代的過程,每次迭代分兩步:

1)選擇一組 S[k],然后調整 a[k],使得Sum_k (a[k] * S[k]) 最接近 T。

2)固定住 a[k],在 400 個碎片中,選擇其它更合適的碎片S’[k],替代原先的 S[k],使得Sum_k (a[k] * S’[k]) 最接近 T。

 經(jīng)過幾次迭代后,最佳的 S[k] 組合,被遴選出來了。令人驚奇的是,被選中的 S[k],基本上都是照片上不同物體的邊緣線,這些線段形狀相似,區(qū)別在于方向。

Bruno Olshausen和 David Field 的算法結果,與 David Hubel 和Torsten Wiesel 的生理發(fā)現(xiàn),不謀而合!

也就是說,復雜圖形,往往由一些基本結構組成。比如下圖:一個圖可以通過用64種正交的edges(可以理解成正交的基本結構)來線性表示。比如樣例的x可以用1-64個edges中的三個按照0.8,0.3,0.5的權重調和而成。而其他基本edge沒有貢獻,因此均為0 。

?大牛的《深度學習》筆記,Deep Learning速成教程

另外,大牛們還發(fā)現(xiàn),不僅圖像存在這個規(guī)律,聲音也存在。他們從未標注的聲音中發(fā)現(xiàn)了20種基本的聲音結構,其余的聲音可以由這20種基本結構合成。

?大牛的《深度學習》筆記,Deep Learning速成教程

4.3、結構性特征表示

小塊的圖形可以由基本edge構成,更結構化,更復雜的,具有概念性的圖形如何表示呢?這就需要更高層次的特征表示,比如V2,V4。因此V1看像素級是像素級。V2看V1是像素級,這個是層次遞進的,高層表達由底層表達的組合而成。專業(yè)點說就是基basis。V1取提出的basis是邊緣,然后V2層是V1層這些basis的組合,這時候V2區(qū)得到的又是高一層的basis。即上一層的basis組合的結果,上上層又是上一層的組合basis……(所以有大牛說Deep learning就是“搞基”,因為難聽,所以美其名曰Deep learning或者Unsupervised Feature Learning)

?大牛的《深度學習》筆記,Deep Learning速成教程

 直觀上說,就是找到make sense的小patch再將其進行combine,就得到了上一層的feature,遞歸地向上learning feature。

在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就會completely different了(那咱們分辨car或者face是不是容易多了):

?大牛的《深度學習》筆記,Deep Learning速成教程

從文本來說,一個doc表示什么意思?我們描述一件事情,用什么來表示比較合適?用一個一個字嘛,我看不是,字就是像素級別了,起碼應該是term,換句話說每個doc都由term構成,但這樣表示概念的能力就夠了嘛,可能也不夠,需要再上一步,達到topic級,有了topic,再到doc就合理。但每個層次的數(shù)量差距很大,比如doc表示的概念->topic(千-萬量級)->term(10萬量級)->word(百萬量級)。

一個人在看一個doc的時候,眼睛看到的是word,由這些word在大腦里自動切詞形成term,在按照概念組織的方式,先驗的學習,得到topic,然后再進行高層次的learning。

4.4、需要有多少個特征?

我們知道需要層次的特征構建,由淺入深,但每一層該有多少個特征呢?

任何一種方法,特征越多,給出的參考信息就越多,準確性會得到提升。但特征多意味著計算復雜,探索的空間大,可以用來訓練的數(shù)據(jù)在每個特征上就會稀疏,都會帶來各種問題,并不一定特征越多越好。

?大牛的《深度學習》筆記,Deep Learning速成教程


好了,到了這一步,終于可以聊到Deep learning了。上面我們聊到為什么會有Deep learning(讓機器自動學習良好的特征,而免去人工選取過程。還有參考人的分層視覺處理系統(tǒng)),我們得到一個結論就是Deep learning需要多層來獲得更抽象的特征表達。那么多少層才合適呢?用什么架構來建模呢?怎么進行非監(jiān)督訓練呢?

|五、Deep Learning的基本思想

假設我們有一個系統(tǒng)S,它有n層(S1,…Sn),它的輸入是I,輸出是O,形象地表示為: I =>S1=>S2=>…..=>Sn => O,如果輸出O等于輸入I,即輸入I經(jīng)過這個系統(tǒng)變化之后沒有任何的信息損失(呵呵,大牛說,這是不可能的。信息論中有個“信息逐層丟失”的說法(信息處理不等式),設處理a信息得到b,再對b處理得到c,那么可以證明:a和c的互信息不會超過a和b的互信息。這表明信息處理不會增加信息,大部分處理會丟失信息。當然了,如果丟掉的是沒用的信息那多好啊),保持了不變,這意味著輸入I經(jīng)過每一層Si都沒有任何的信息損失,即在任何一層Si,它都是原有信息(即輸入I)的另外一種表示?,F(xiàn)在回到我們的主題Deep Learning,我們需要自動地學習特征,假設我們有一堆輸入I(如一堆圖像或者文本),假設我們設計了一個系統(tǒng)S(有n層),我們通過調整系統(tǒng)中參數(shù),使得它的輸出仍然是輸入I,那么我們就可以自動地獲取得到輸入I的一系列層次特征,即S1,…, Sn。

對于深度學習來說,其思想就是對堆疊多個層,也就是說這一層的輸出作為下一層的輸入。通過這種方式,就可以實現(xiàn)對輸入信息進行分級表達了。

另外,前面是假設輸出嚴格地等于輸入,這個限制太嚴格,我們可以略微地放松這個限制,例如我們只要使得輸入與輸出的差別盡可能地小即可,這個放松會導致另外一類不同的Deep Learning方法。上述就是Deep Learning的基本思想。

|六、淺層學習(Shallow Learning)和深度學習(Deep Learning)

淺層學習是機器學習的第一次浪潮。

20世紀80年代末期,用于人工神經(jīng)網(wǎng)絡的反向傳播算法(也叫Back Propagation算法或者BP算法)的發(fā)明,給機器學習帶來了希望,掀起了基于統(tǒng)計模型的機器學習熱潮。這個熱潮一直持續(xù)到今天。人們發(fā)現(xiàn),利用BP算法可以讓一個人工神經(jīng)網(wǎng)絡模型從大量訓練樣本中學習統(tǒng)計規(guī)律,從而對未知事件做預測。這種基于統(tǒng)計的機器學習方法比起過去基于人工規(guī)則的系統(tǒng),在很多方面顯出優(yōu)越性。這個時候的人工神經(jīng)網(wǎng)絡,雖也被稱作多層感知機(Multi-layer Perceptron),但實際是種只含有一層隱層節(jié)點的淺層模型。

20世紀90年代,各種各樣的淺層機器學習模型相繼被提出,例如支撐向量機(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。這些模型的結構基本上可以看成帶有一層隱層節(jié)點(如SVM、Boosting),或沒有隱層節(jié)點(如LR)。這些模型無論是在理論分析還是應用中都獲得了巨大的成功。相比之下,由于理論分析的難度大,訓練方法又需要很多經(jīng)驗和技巧,這個時期淺層人工神經(jīng)網(wǎng)絡反而相對沉寂。

 深度學習是機器學習的第二次浪潮。

2006年,加拿大多倫多大學教授、機器學習領域的泰斗Geoffrey Hinton和他的學生RuslanSalakhutdinov在《科學》上發(fā)表了一篇文章,開啟了深度學習在學術界和工業(yè)界的浪潮。這篇文章有兩個主要觀點:1)多隱層的人工神經(jīng)網(wǎng)絡具有優(yōu)異的特征學習能力,學習得到的特征對數(shù)據(jù)有更本質的刻畫,從而有利于可視化或分類;2)深度神經(jīng)網(wǎng)絡在訓練上的難度,可以通過“逐層初始化”(layer-wise pre-training)來有效克服,在這篇文章中,逐層初始化是通過無監(jiān)督學習實現(xiàn)的。

當前多數(shù)分類、回歸等學習方法為淺層結構算法,其局限性在于有限樣本和計算單元情況下對復雜函數(shù)的表示能力有限,針對復雜分類問題其泛化能力受到一定制約。深度學習可通過學習一種深層非線性網(wǎng)絡結構,實現(xiàn)復雜函數(shù)逼近,表征輸入數(shù)據(jù)分布式表示,并展現(xiàn)了強大的從少數(shù)樣本集中學習數(shù)據(jù)集本質特征的能力。(多層的好處是可以用較少的參數(shù)表示復雜的函數(shù))

?大牛的《深度學習》筆記,Deep Learning速成教程

深度學習的實質,是通過構建具有很多隱層的機器學習模型和海量的訓練數(shù)據(jù),來學習更有用的特征,從而最終提升分類或預測的準確性。因此,“深度模型”是手段,“特征學習”是目的。區(qū)別于傳統(tǒng)的淺層學習,深度學習的不同在于:1)強調了模型結構的深度,通常有5層、6層,甚至10多層的隱層節(jié)點;2)明確突出了特征學習的重要性,也就是說,通過逐層特征變換,將樣本在原空間的特征表示變換到一個新特征空間,從而使分類或預測更加容易。與人工規(guī)則構造特征的方法相比,利用大數(shù)據(jù)來學習特征,更能夠刻畫數(shù)據(jù)的豐富內在信息。

|七、Deep learning與Neural Network

深度學習是機器學習研究中的一個新的領域,其動機在于建立、模擬人腦進行分析學習的神經(jīng)網(wǎng)絡,它模仿人腦的機制來解釋數(shù)據(jù),例如圖像,聲音和文本。深度學習是無監(jiān)督學習的一種。

深度學習的概念源于人工神經(jīng)網(wǎng)絡的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。

Deep learning本身算是machine learning的一個分支,簡單可以理解為neural network的發(fā)展。大約二三十年前,neural network曾經(jīng)是ML領域特別火熱的一個方向,但是后來確慢慢淡出了,原因包括以下幾個方面:

1)比較容易過擬合,參數(shù)比較難tune,而且需要不少trick;

2)訓練速度比較慢,在層次比較少(小于等于3)的情況下效果并不比其它方法更優(yōu);

所以中間有大約20多年的時間,神經(jīng)網(wǎng)絡被關注很少,這段時間基本上是SVM和boosting算法的天下。但是,一個癡心的老先生Hinton,他堅持了下來,并最終(和其它人一起B(yǎng)engio、Yann.lecun等)提成了一個實際可行的deep learning框架。

Deep learning與傳統(tǒng)的神經(jīng)網(wǎng)絡之間有相同的地方也有很多不同。

二者的相同在于deep learning采用了神經(jīng)網(wǎng)絡相似的分層結構,系統(tǒng)由包括輸入層、隱層(多層)、輸出層組成的多層網(wǎng)絡,只有相鄰層節(jié)點之間有連接,同一層以及跨層節(jié)點之間相互無連接,每一層可以看作是一個logistic regression模型;這種分層結構,是比較接近人類大腦的結構的。

?大牛的《深度學習》筆記,Deep Learning速成教程


而為了克服神經(jīng)網(wǎng)絡訓練中的問題,DL采用了與神經(jīng)網(wǎng)絡很不同的訓練機制。傳統(tǒng)神經(jīng)網(wǎng)絡中,采用的是back propagation的方式進行,簡單來講就是采用迭代的算法來訓練整個網(wǎng)絡,隨機設定初值,計算當前網(wǎng)絡的輸出,然后根據(jù)當前輸出和label之間的差去改變前面各層的參數(shù),直到收斂(整體是一個梯度下降法)。而deep learning整體上是一個layer-wise的訓練機制。這樣做的原因是因為,如果采用back propagation的機制,對于一個deep network(7層以上),殘差傳播到最前面的層已經(jīng)變得太小,出現(xiàn)所謂的gradient diffusion(梯度擴散)。這個問題我們接下來討論。

|八、Deep learning訓練過程

8.1、傳統(tǒng)神經(jīng)網(wǎng)絡的訓練方法為什么不能用在深度神經(jīng)網(wǎng)絡

BP算法作為傳統(tǒng)訓練多層網(wǎng)絡的典型算法,實際上對僅含幾層網(wǎng)絡,該訓練方法就已經(jīng)很不理想。深度結構(涉及多個非線性處理單元層)非凸目標代價函數(shù)中普遍存在的局部最小是訓練困難的主要來源。

BP算法存在的問題:

(1)梯度越來越稀疏:從頂層越往下,誤差校正信號越來越?。?/span>

(2)收斂到局部最小值:尤其是從遠離最優(yōu)區(qū)域開始的時候(隨機值初始化會導致這種情況的發(fā)生);

(3)一般,我們只能用有標簽的數(shù)據(jù)來訓練:但大部分的數(shù)據(jù)是沒標簽的,而大腦可以從沒有標簽的的數(shù)據(jù)中學習;

8.2、deep learning訓練過程

如果對所有層同時訓練,時間復雜度會太高;如果每次訓練一層,偏差就會逐層傳遞。這會面臨跟上面監(jiān)督學習中相反的問題,會嚴重欠擬合(因為深度網(wǎng)絡的神經(jīng)元和參數(shù)太多了)。

2006年,hinton提出了在非監(jiān)督數(shù)據(jù)上建立多層神經(jīng)網(wǎng)絡的一個有效方法,簡單的說,分為兩步,一是每次訓練一層網(wǎng)絡,二是調優(yōu),使原始表示x向上生成的高級表示r和該高級表示r向下生成的x'盡可能一致。方法是:

1)首先逐層構建單層神經(jīng)元,這樣每次都是訓練一個單層網(wǎng)絡。

2)當所有層訓練完后,Hinton使用wake-sleep算法進行調優(yōu)。

將除最頂層的其它層間的權重變?yōu)殡p向的,這樣最頂層仍然是一個單層神經(jīng)網(wǎng)絡,而其它層則變?yōu)榱藞D模型。向上的權重用于“認知”,向下的權重用于“生成”。然后使用Wake-Sleep算法調整所有的權重。讓認知和生成達成一致,也就是保證生成的最頂層表示能夠盡可能正確的復原底層的結點。比如頂層的一個結點表示人臉,那么所有人臉的圖像應該激活這個結點,并且這個結果向下生成的圖像應該能夠表現(xiàn)為一個大概的人臉圖像。Wake-Sleep算法分為醒(wake)和睡(sleep)兩個部分。

1)wake階段:認知過程,通過外界的特征和向上的權重(認知權重)產(chǎn)生每一層的抽象表示(結點狀態(tài)),并且使用梯度下降修改層間的下行權重(生成權重)。也就是“如果現(xiàn)實跟我想象的不一樣,改變我的權重使得我想象的東西就是這樣的”。

2)sleep階段:生成過程,通過頂層表示(醒時學得的概念)和向下權重,生成底層的狀態(tài),同時修改層間向上的權重。也就是“如果夢中的景象不是我腦中的相應概念,改變我的認知權重使得這種景象在我看來就是這個概念”。

deep learning訓練過程具體如下:

1)使用自下上升非監(jiān)督學習(就是從底層開始,一層一層的往頂層訓練):

采用無標定數(shù)據(jù)(有標定數(shù)據(jù)也可)分層訓練各層參數(shù),這一步可以看作是一個無監(jiān)督訓練過程,是和傳統(tǒng)神經(jīng)網(wǎng)絡區(qū)別最大的部分(這個過程可以看作是feature learning過程)

具體的,先用無標定數(shù)據(jù)訓練第一層,訓練時先學習第一層的參數(shù)(這一層可以看作是得到一個使得輸出和輸入差別最小的三層神經(jīng)網(wǎng)絡的隱層),由于模型capacity的限制以及稀疏性約束,使得得到的模型能夠學習到數(shù)據(jù)本身的結構,從而得到比輸入更具有表示能力的特征;在學習得到第n-1層后,將n-1層的輸出作為第n層的輸入,訓練第n層,由此分別得到各層的參數(shù);

2)自頂向下的監(jiān)督學習(就是通過帶標簽的數(shù)據(jù)去訓練,誤差自頂向下傳輸,對網(wǎng)絡進行微調):

基于第一步得到的各層參數(shù)進一步fine-tune整個多層模型的參數(shù),這一步是一個有監(jiān)督訓練過程;第一步類似神經(jīng)網(wǎng)絡的隨機初始化初值過程,由于DL的第一步不是隨機初始化,而是通過學習輸入數(shù)據(jù)的結構得到的,因而這個初值更接近全局最優(yōu),從而能夠取得更好的效果;所以deep learning效果好很大程度上歸功于第一步的feature learning過程。

|九、Deep Learning的常用模型或者方法

9.1、AutoEncoder自動編碼器

Deep Learning最簡單的一種方法是利用人工神經(jīng)網(wǎng)絡的特點,人工神經(jīng)網(wǎng)絡(ANN)本身就是具有層次結構的系統(tǒng),如果給定一個神經(jīng)網(wǎng)絡,我們假設其輸出與輸入是相同的,然后訓練調整其參數(shù),得到每一層中的權重。自然地,我們就得到了輸入I的幾種不同表示(每一層代表一種表示),這些表示就是特征。自動編碼器就是一種盡可能復現(xiàn)輸入信號的神經(jīng)網(wǎng)絡。為了實現(xiàn)這種復現(xiàn),自動編碼器就必須捕捉可以代表輸入數(shù)據(jù)的最重要的因素,就像PCA那樣,找到可以代表原信息的主要成分。

具體過程簡單的說明如下:

1)給定無標簽數(shù)據(jù),用非監(jiān)督學習學習特征:

?大牛的《深度學習》筆記,Deep Learning速成教程


在我們之前的神經(jīng)網(wǎng)絡中,如第一個圖,我們輸入的樣本是有標簽的,即(input, target),這樣我們根據(jù)當前輸出和target(label)之間的差去改變前面各層的參數(shù),直到收斂。但現(xiàn)在我們只有無標簽數(shù)據(jù),也就是右邊的圖。那么這個誤差怎么得到呢?

?大牛的《深度學習》筆記,Deep Learning速成教程


如上圖,我們將input輸入一個encoder編碼器,就會得到一個code,這個code也就是輸入的一個表示,那么我們怎么知道這個code表示的就是input呢?我們加一個decoder解碼器,這時候decoder就會輸出一個信息,那么如果輸出的這個信息和一開始的輸入信號input是很像的(理想情況下就是一樣的),那很明顯,我們就有理由相信這個code是靠譜的。所以,我們就通過調整encoder和decoder的參數(shù),使得重構誤差最小,這時候我們就得到了輸入input信號的第一個表示了,也就是編碼code了。因為是無標簽數(shù)據(jù),所以誤差的來源就是直接重構后與原輸入相比得到。

?大牛的《深度學習》筆記,Deep Learning速成教程

2)通過編碼器產(chǎn)生特征,然后訓練下一層。這樣逐層訓練:

那上面我們就得到第一層的code,我們的重構誤差最小讓我們相信這個code就是原輸入信號的良好表達了,或者牽強點說,它和原信號是一模一樣的(表達不一樣,反映的是一個東西)。那第二層和第一層的訓練方式就沒有差別了,我們將第一層輸出的code當成第二層的輸入信號,同樣最小化重構誤差,就會得到第二層的參數(shù),并且得到第二層輸入的code,也就是原輸入信息的第二個表達了。其他層就同樣的方法炮制就行了(訓練這一層,前面層的參數(shù)都是固定的,并且他們的decoder已經(jīng)沒用了,都不需要了)。

?大牛的《深度學習》筆記,Deep Learning速成教程

3)有監(jiān)督微調:

經(jīng)過上面的方法,我們就可以得到很多層了。至于需要多少層(或者深度需要多少,這個目前本身就沒有一個科學的評價方法)需要自己試驗調了。每一層都會得到原始輸入的不同的表達。當然了,我們覺得它是越抽象越好了,就像人的視覺系統(tǒng)一樣。

到這里,這個AutoEncoder還不能用來分類數(shù)據(jù),因為它還沒有學習如何去連結一個輸入和一個類。它只是學會了如何去重構或者復現(xiàn)它的輸入而已?;蛘哒f,它只是學習獲得了一個可以良好代表輸入的特征,這個特征可以最大程度上代表原輸入信號。那么,為了實現(xiàn)分類,我們就可以在AutoEncoder的最頂?shù)木幋a層添加一個分類器(例如羅杰斯特回歸、SVM等),然后通過標準的多層神經(jīng)網(wǎng)絡的監(jiān)督訓練方法(梯度下降法)去訓練。

也就是說,這時候,我們需要將最后層的特征code輸入到最后的分類器,通過有標簽樣本,通過監(jiān)督學習進行微調,這也分兩種,一個是只調整分類器(黑色部分):

?大牛的《深度學習》筆記,Deep Learning速成教程

另一種:通過有標簽樣本,微調整個系統(tǒng):(如果有足夠多的數(shù)據(jù),這個是最好的。end-to-end learning端對端學習)

?大牛的《深度學習》筆記,Deep Learning速成教程

一旦監(jiān)督訓練完成,這個網(wǎng)絡就可以用來分類了。神經(jīng)網(wǎng)絡的最頂層可以作為一個線性分類器,然后我們可以用一個更好性能的分類器去取代它。在研究中可以發(fā)現(xiàn),如果在原有的特征中加入這些自動學習得到的特征可以大大提高精確度,甚至在分類問題中比目前最好的分類算法效果還要好!

AutoEncoder存在一些變體,這里簡要介紹下兩個:

Sparse AutoEncoder稀疏自動編碼器:

當然,我們還可以繼續(xù)加上一些約束條件得到新的Deep Learning方法,如:如果在AutoEncoder的基礎上加上L1的Regularity限制(L1主要是約束每一層中的節(jié)點中大部分都要為0,只有少數(shù)不為0,這就是Sparse名字的來源),我們就可以得到Sparse AutoEncoder法。

?大牛的《深度學習》筆記,Deep Learning速成教程

如上圖,其實就是限制每次得到的表達code盡量稀疏。因為稀疏的表達往往比其他的表達要有效(人腦好像也是這樣的,某個輸入只是刺激某些神經(jīng)元,其他的大部分的神經(jīng)元是受到抑制的)。

Denoising AutoEncoders降噪自動編碼器:

降噪自動編碼器DA是在自動編碼器的基礎上,訓練數(shù)據(jù)加入噪聲,所以自動編碼器必須學習去去除這種噪聲而獲得真正的沒有被噪聲污染過的輸入。因此,這就迫使編碼器去學習輸入信號的更加魯棒的表達,這也是它的泛化能力比一般編碼器強的原因。DA可以通過梯度下降算法去訓練。

?大牛的《深度學習》筆記,Deep Learning速成教程

9.2、Sparse Coding稀疏編碼

如果我們把輸出必須和輸入相等的限制放松,同時利用線性代數(shù)中基的概念,即O = a1*Φ1 + a2*Φ2+….+ an*Φn, Φi是基,ai是系數(shù),我們可以得到這樣一個優(yōu)化問題:

Min |I – O|,其中I表示輸入,O表示輸出。

通過求解這個最優(yōu)化式子,我們可以求得系數(shù)ai和基Φi,這些系數(shù)和基就是輸入的另外一種近似表達。

?大牛的《深度學習》筆記,Deep Learning速成教程


因此,它們可以用來表達輸入I,這個過程也是自動學習得到的。如果我們在上述式子上加上L1的Regularity限制,得到:

Min |I – O| + u*(|a1| + |a2| + … + |an |)

這種方法被稱為Sparse Coding。通俗的說,就是將一個信號表示為一組基的線性組合,而且要求只需要較少的幾個基就可以將信號表示出來。“稀疏性”定義為:只有很少的幾個非零元素或只有很少的幾個遠大于零的元素。要求系數(shù) ai 是稀疏的意思就是說:對于一組輸入向量,我們只想有盡可能少的幾個系數(shù)遠大于零。選擇使用具有稀疏性的分量來表示我們的輸入數(shù)據(jù)是有原因的,因為絕大多數(shù)的感官數(shù)據(jù),比如自然圖像,可以被表示成少量基本元素的疊加,在圖像中這些基本元素可以是面或者線。同時,比如與初級視覺皮層的類比過程也因此得到了提升(人腦有大量的神經(jīng)元,但對于某些圖像或者邊緣只有很少的神經(jīng)元興奮,其他都處于抑制狀態(tài))。

稀疏編碼算法是一種無監(jiān)督學習方法,它用來尋找一組“超完備”基向量來更高效地表示樣本數(shù)據(jù)。雖然形如主成分分析技術(PCA)能使我們方便地找到一組“完備”基向量,但是這里我們想要做的是找到一組“超完備”基向量來表示輸入向量(也就是說,基向量的個數(shù)比輸入向量的維數(shù)要大)。超完備基的好處是它們能更有效地找出隱含在輸入數(shù)據(jù)內部的結構與模式。然而,對于超完備基來說,系數(shù)ai不再由輸入向量唯一確定。因此,在稀疏編碼算法中,我們另加了一個評判標準“稀疏性”來解決因超完備而導致的退化(degeneracy)問題。

?大牛的《深度學習》筆記,Deep Learning速成教程

比如在圖像的Feature Extraction的最底層要做Edge Detector的生成,那么這里的工作就是從Natural Images中randomly選取一些小patch,通過這些patch生成能夠描述他們的“基”,也就是右邊的8*8=64個basis組成的basis,然后給定一個test patch, 我們可以按照上面的式子通過basis的線性組合得到,而sparse matrix就是a,下圖中的a中有64個維度,其中非零項只有3個,故稱“sparse”。

這里可能大家會有疑問,為什么把底層作為Edge Detector呢?上層又是什么呢?這里做個簡單解釋大家就會明白,之所以是Edge Detector是因為不同方向的Edge就能夠描述出整幅圖像,所以不同方向的Edge自然就是圖像的basis了……而上一層的basis組合的結果,上上層又是上一層的組合basis……(就是上面第四部分的時候咱們說的那樣)

Sparse coding分為兩個部分:

1)Training階段:給定一系列的樣本圖片[x1, x 2, …],我們需要學習得到一組基[Φ1, Φ2, …],也就是字典。

稀疏編碼是k-means算法的變體,其訓練過程也差不多(EM算法的思想:如果要優(yōu)化的目標函數(shù)包含兩個變量,如L(W, B),那么我們可以先固定W,調整B使得L最小,然后再固定B,調整W使L最小,這樣迭代交替,不斷將L推向最小值。

訓練過程就是一個重復迭代的過程,按上面所說,我們交替的更改a和Φ使得下面這個目標函數(shù)最小。

?大牛的《深度學習》筆記,Deep Learning速成教程

每次迭代分兩步:

a)固定字典Φ[k],然后調整a[k],使得上式,即目標函數(shù)最?。唇釲ASSO問題)。

b)然后固定住a [k],調整Φ [k],使得上式,即目標函數(shù)最?。唇馔筈P問題)。

不斷迭代,直至收斂。這樣就可以得到一組可以良好表示這一系列x的基,也就是字典。

2)Coding階段:給定一個新的圖片x,由上面得到的字典,通過解一個LASSO問題得到稀疏向量a。這個稀疏向量就是這個輸入向量x的一個稀疏表達了。

?大牛的《深度學習》筆記,Deep Learning速成教程

例如:

?大牛的《深度學習》筆記,Deep Learning速成教程

9.3、Restricted Boltzmann Machine (RBM)限制波爾茲曼機

假設有一個二部圖,每一層的節(jié)點之間沒有鏈接,一層是可視層,即輸入數(shù)據(jù)層(v),一層是隱藏層(h),如果假設所有的節(jié)點都是隨機二值變量節(jié)點(只能取0或者1值),同時假設全概率分布p(v,h)滿足Boltzmann 分布,我們稱這個模型是Restricted BoltzmannMachine (RBM)。

?大牛的《深度學習》筆記,Deep Learning速成教程

下面我們來看看為什么它是Deep Learning方法。首先,這個模型因為是二部圖,所以在已知v的情況下,所有的隱藏節(jié)點之間是條件獨立的(因為節(jié)點之間不存在連接),即p(h|v)=p(h1|v)…p(hn|v)。同理,在已知隱藏層h的情況下,所有的可視節(jié)點都是條件獨立的。同時又由于所有的v和h滿足Boltzmann 分布,因此,當輸入v的時候,通過p(h|v) 可以得到隱藏層h,而得到隱藏層h之后,通過p(v|h)又能得到可視層,通過調整參數(shù),我們就是要使得從隱藏層得到的可視層v1與原來的可視層v如果一樣,那么得到的隱藏層就是可視層另外一種表達,因此隱藏層可以作為可視層輸入數(shù)據(jù)的特征,所以它就是一種Deep Learning方法。

?大牛的《深度學習》筆記,Deep Learning速成教程

如何訓練呢?也就是可視層節(jié)點和隱節(jié)點間的權值怎么確定呢?我們需要做一些數(shù)學分析。也就是模型了。

?大牛的《深度學習》筆記,Deep Learning速成教程

聯(lián)合組態(tài)(jointconfiguration)的能量可以表示為:

?大牛的《深度學習》筆記,Deep Learning速成教程

而某個組態(tài)的聯(lián)合概率分布可以通過Boltzmann 分布(和這個組態(tài)的能量)來確定:

?大牛的《深度學習》筆記,Deep Learning速成教程

因為隱藏節(jié)點之間是條件獨立的(因為節(jié)點之間不存在連接),即:

?大牛的《深度學習》筆記,Deep Learning速成教程

然后我們可以比較容易(對上式進行因子分解Factorizes)得到在給定可視層v的基礎上,隱層第j個節(jié)點為1或者為0的概率:

?大牛的《深度學習》筆記,Deep Learning速成教程

同理,在給定隱層h的基礎上,可視層第i個節(jié)點為1或者為0的概率也可以容易得到:

?大牛的《深度學習》筆記,Deep Learning速成教程

給定一個滿足獨立同分布的樣本集:D={v(1), v(2),…, v(N)},我們需要學習參數(shù)θ={W,a,b}。

我們最大化以下對數(shù)似然函數(shù)(最大似然估計:對于某個概率模型,我們需要選擇一個參數(shù),讓我們當前的觀測樣本的概率最大):

?大牛的《深度學習》筆記,Deep Learning速成教程

也就是對最大對數(shù)似然函數(shù)求導,就可以得到L最大時對應的參數(shù)W了。

?大牛的《深度學習》筆記,Deep Learning速成教程

 如果,我們把隱藏層的層數(shù)增加,我們可以得到Deep Boltzmann Machine(DBM);如果我們在靠近可視層的部分使用貝葉斯信念網(wǎng)絡(即有向圖模型,當然這里依然限制層中節(jié)點之間沒有鏈接),而在最遠離可視層的部分使用Restricted Boltzmann Machine,我們可以得到DeepBelief Net(DBN)。

?大牛的《深度學習》筆記,Deep Learning速成教程

9.4、Deep Belief Networks深信度網(wǎng)絡

DBNs是一個概率生成模型,與傳統(tǒng)的判別模型的神經(jīng)網(wǎng)絡相對,生成模型是建立一個觀察數(shù)據(jù)和標簽之間的聯(lián)合分布,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅而已評估了后者,也就是P(Label|Observation)。對于在深度神經(jīng)網(wǎng)絡應用傳統(tǒng)的BP算法的時候,DBNs遇到了以下問題:

(1)需要為訓練提供一個有標簽的樣本集;

(2)學習過程較慢;

(3)不適當?shù)膮?shù)選擇會導致學習收斂于局部最優(yōu)解。

?大牛的《深度學習》筆記,Deep Learning速成教程

DBNs由多個限制玻爾茲曼機(Restricted Boltzmann Machines)層組成,一個典型的神經(jīng)網(wǎng)絡類型如圖三所示。這些網(wǎng)絡被“限制”為一個可視層和一個隱層,層間存在連接,但層內的單元間不存在連接。隱層單元被訓練去捕捉在可視層表現(xiàn)出來的高階數(shù)據(jù)的相關性。

首先,先不考慮最頂構成一個聯(lián)想記憶(associative memory)的兩層,一個DBN的連接是通過自頂向下的生成權值來指導確定的,RBMs就像一個建筑塊一樣,相比傳統(tǒng)和深度分層的sigmoid信念網(wǎng)絡,它能易于連接權值的學習。

最開始的時候,通過一個非監(jiān)督貪婪逐層方法去預訓練獲得生成模型的權值,非監(jiān)督貪婪逐層方法被Hinton證明是有效的,并被其稱為對比分歧(contrastive divergence)。

在這個訓練階段,在可視層會產(chǎn)生一個向量v,通過它將值傳遞到隱層。反過來,可視層的輸入會被隨機的選擇,以嘗試去重構原始的輸入信號。最后,這些新的可視的神經(jīng)元激活單元將前向傳遞重構隱層激活單元,獲得h(在訓練過程中,首先將可視向量值映射給隱單元;然后可視單元由隱層單元重建;這些新可視單元再次映射給隱單元,這樣就獲取新的隱單元。執(zhí)行這種反復步驟叫做吉布斯采樣)。這些后退和前進的步驟就是我們熟悉的Gibbs采樣,而隱層激活單元和可視層輸入之間的相關性差別就作為權值更新的主要依據(jù)。

訓練時間會顯著的減少,因為只需要單個步驟就可以接近最大似然學習。增加進網(wǎng)絡的每一層都會改進訓練數(shù)據(jù)的對數(shù)概率,我們可以理解為越來越接近能量的真實表達。這個有意義的拓展,和無標簽數(shù)據(jù)的使用,是任何一個深度學習應用的決定性的因素。

?大牛的《深度學習》筆記,Deep Learning速成教程

在最高兩層,權值被連接到一起,這樣更低層的輸出將會提供一個參考的線索或者關聯(lián)給頂層,這樣頂層就會將其聯(lián)系到它的記憶內容。而我們最關心的,最后想得到的就是判別性能,例如分類任務里面。

在預訓練后,DBN可以通過利用帶標簽數(shù)據(jù)用BP算法去對判別性能做調整。在這里,一個標簽集將被附加到頂層(推廣聯(lián)想記憶),通過一個自下向上的,學習到的識別權值獲得一個網(wǎng)絡的分類面。這個性能會比單純的BP算法訓練的網(wǎng)絡好。這可以很直觀的解釋,DBNs的BP算法只需要對權值參數(shù)空間進行一個局部的搜索,這相比前向神經(jīng)網(wǎng)絡來說,訓練是要快的,而且收斂的時間也少。

DBNs的靈活性使得它的拓展比較容易。一個拓展就是卷積DBNs(Convolutional Deep Belief Networks(CDBNs))。DBNs并沒有考慮到圖像的2維結構信息,因為輸入是簡單的從一個圖像矩陣一維向量化的。而CDBNs就是考慮到了這個問題,它利用鄰域像素的空域關系,通過一個稱為卷積RBMs的模型區(qū)達到生成模型的變換不變性,而且可以容易得變換到高維圖像。DBNs并沒有明確地處理對觀察變量的時間聯(lián)系的學習上,雖然目前已經(jīng)有這方面的研究,例如堆疊時間RBMs,以此為推廣,有序列學習的dubbed temporal convolutionmachines,這種序列學習的應用,給語音信號處理問題帶來了一個讓人激動的未來研究方向。

目前,和DBNs有關的研究包括堆疊自動編碼器,它是通過用堆疊自動編碼器來替換傳統(tǒng)DBNs里面的RBMs。這就使得可以通過同樣的規(guī)則來訓練產(chǎn)生深度多層神經(jīng)網(wǎng)絡架構,但它缺少層的參數(shù)化的嚴格要求。與DBNs不同,自動編碼器使用判別模型,這樣這個結構就很難采樣輸入采樣空間,這就使得網(wǎng)絡更難捕捉它的內部表達。但是,降噪自動編碼器卻能很好的避免這個問題,并且比傳統(tǒng)的DBNs更優(yōu)。它通過在訓練過程添加隨機的污染并堆疊產(chǎn)生場泛化性能。訓練單一的降噪自動編碼器的過程和RBMs訓練生成模型的過程一樣。

|十、總結與展望

1)Deep learning總結

深度學習是關于自動學習要建模的數(shù)據(jù)的潛在(隱含)分布的多層(復雜)表達的算法。換句話來說,深度學習算法自動的提取分類需要的低層次或者高層次特征。高層次特征,一是指該特征可以分級(層次)地依賴其他特征,例如:對于機器視覺,深度學習算法從原始圖像去學習得到它的一個低層次表達,例如邊緣檢測器,小波濾波器等,然后在這些低層次表達的基礎上再建立表達,例如這些低層次表達的線性或者非線性組合,然后重復這個過程,最后得到一個高層次的表達。

Deep learning能夠得到更好地表示數(shù)據(jù)的feature,同時由于模型的層次、參數(shù)很多,capacity足夠,因此,模型有能力表示大規(guī)模數(shù)據(jù),所以對于圖像、語音這種特征不明顯(需要手工設計且很多沒有直觀物理含義)的問題,能夠在大規(guī)模訓練數(shù)據(jù)上取得更好的效果。此外,從模式識別特征和分類器的角度,deep learning框架將feature和分類器結合到一個框架中,用數(shù)據(jù)去學習feature,在使用中減少了手工設計feature的巨大工作量(這是目前工業(yè)界工程師付出努力最多的方面),因此,不僅僅效果可以更好,而且,使用起來也有很多方便之處,因此,是十分值得關注的一套框架,每個做ML的人都應該關注了解一下。

當然,deep learning本身也不是完美的,也不是解決世間任何ML問題的利器,不應該被放大到一個無所不能的程度。

2)Deep learning未來

深度學習目前仍有大量工作需要研究。目前的關注點還是從機器學習的領域借鑒一些可以在深度學習使用的方法特別是降維領域。例如:目前一個工作就是稀疏編碼,通過壓縮感知理論對高維數(shù)據(jù)進行降維,使得非常少的元素的向量就可以精確的代表原來的高維信號。另一個例子就是半監(jiān)督流行學習,通過測量訓練樣本的相似性,將高維數(shù)據(jù)的這種相似性投影到低維空間。另外一個比較鼓舞人心的方向就是evolutionary programming approaches(遺傳編程方法),它可以通過最小化工程能量去進行概念性自適應學習和改變核心架構。

Deep learning還有很多核心的問題需要解決:

(1)對于一個特定的框架,對于多少維的輸入它可以表現(xiàn)得較優(yōu)(如果是圖像,可能是上百萬維)?

(2)對捕捉短時或者長時間的時間依賴,哪種架構才是有效的?

(3)如何對于一個給定的深度學習架構,融合多種感知的信息?

(4)有什么正確的機理可以去增強一個給定的深度學習架構,以改進其魯棒性和對扭曲和數(shù)據(jù)丟失的不變性?

(5)模型方面是否有其他更為有效且有理論依據(jù)的深度模型學習算法?

探索新的特征提取模型是值得深入研究的內容。此外有效的可并行訓練算法也是值得研究的一個方向。當前基于最小批處理的隨機梯度優(yōu)化算法很難在多計算機中進行并行訓練。通常辦法是利用圖形處理單元加速學習過程。然而單個機器GPU對大規(guī)模數(shù)據(jù)識別或相似任務數(shù)據(jù)集并不適用。在深度學習應用拓展方面,如何合理充分利用深度學習在增強傳統(tǒng)學習算法的性能仍是目前各領域的研究重點。

雷峰網(wǎng)版權文章,未經(jīng)授權禁止轉載。詳情見轉載須知。

?大牛的《深度學習》筆記,Deep Learning速成教程

分享:
相關文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說