?
深度學(xué)習(xí)的概念源于人工
神經(jīng)網(wǎng)絡(luò)的研究。含多隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。
?
深度學(xué)習(xí)的概念由Hinton等人于2006年提出。基于深度置信
網(wǎng)絡(luò)(DBN)提出非監(jiān)督貪心逐層訓(xùn)練
算法,為解決深層結(jié)構(gòu)相關(guān)的優(yōu)化難題帶來希望,隨后提出多層自動(dòng)編碼器深層結(jié)構(gòu)。此外Lecun等人提出的卷積神經(jīng)網(wǎng)絡(luò)是第一個(gè)真正多層結(jié)構(gòu)學(xué)習(xí)算法,它利用空間相對(duì)關(guān)系減少
參數(shù)數(shù)目以提高訓(xùn)練性能。 [1]
?
深度學(xué)習(xí)是
機(jī)器學(xué)習(xí)中一種基于對(duì)數(shù)據(jù)進(jìn)行表征學(xué)習(xí)的方法。觀測值(例如一幅圖像)可以使用多種方式來表示,如每個(gè)像素強(qiáng)度值的向量,或者更抽象地表示成一系列邊、特定形狀的區(qū)域等。而使用某些特定的表示方法更容易從實(shí)例中學(xué)習(xí)任務(wù)(例如,人臉識(shí)別或面部表情識(shí)別)。深度學(xué)習(xí)的好處是用非監(jiān)督式或半監(jiān)督式的特征學(xué)習(xí)和分層特征提取高效算法來替代手工獲取特征。
?
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究中的一個(gè)新的領(lǐng)域,其動(dòng)機(jī)在于建立、
模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它模仿人腦的機(jī)制來解釋數(shù)據(jù),例如圖像,聲音和文本。 [2]
?
同機(jī)器學(xué)習(xí)方法一樣,深度機(jī)器學(xué)習(xí)方法也有監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)之分.不同的學(xué)習(xí)框架下建立的學(xué)習(xí)模型很是不同.例如,卷積神經(jīng)網(wǎng)絡(luò)(Convolu
tional neural netw
orks,簡稱CNNs)就是一種深度的監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型,而深度置信網(wǎng)(Deep Belief Nets,簡稱DBNs)就是一種無監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型。
?
假設(shè)我們有一個(gè)系統(tǒng)S,它有n層(S1,…Sn),它的輸入是I,輸出是O,形象地表示為: I =》S1=》S2=》…。.=》Sn =》 O,如果輸出O等于輸入I,即輸入I經(jīng)過這個(gè)系統(tǒng)變化之后沒有任何的
信息損失,設(shè)處理a信息得到b,再對(duì)b處理得到c,那么可以證明:a和c的互信息不會(huì)超過a和b的互信息。這表明信息處理不會(huì)增加信息,大部分處理會(huì)丟失信息。保持了不變,這意味著輸入I經(jīng)過每一層Si都沒有任何的信息損失,即在任何一層Si,它都是原有信息(即輸入I)的另外一種表示。現(xiàn)在回到主題Deep Learning,需要自動(dòng)地學(xué)習(xí)特征,假設(shè)我們有一堆輸入I(如一堆圖像或者文本),假設(shè)設(shè)計(jì)了一個(gè)系統(tǒng)S(有n層),通過調(diào)整系統(tǒng)中參數(shù),使得它的輸出仍然是輸入I,那么就可以自動(dòng)地獲取得到輸入I的一系列層次特征,即S1,…, Sn。 [3]
?
對(duì)于深度學(xué)習(xí)來說,其思想就是對(duì)堆疊多個(gè)層,也就是說這一層的輸出作為下一層的輸入。通過這種方式,就可以實(shí)現(xiàn)對(duì)輸入信息進(jìn)行分級(jí)表達(dá)了。 [3]
?
另外,前面是假設(shè)輸出嚴(yán)格地等于輸入,這個(gè)限制太嚴(yán)格,可以略微地放松這個(gè)限制,例如只要使得輸入與輸出的差別盡可能地小即可,這個(gè)放松會(huì)導(dǎo)致另外一類不同的Deep Learning方法。上述就是Deep Learning的基本思想。 [3]
?
把學(xué)習(xí)結(jié)構(gòu)看作一個(gè)網(wǎng)絡(luò),則深度學(xué)習(xí)的核心思路如下:
?
①無監(jiān)督學(xué)習(xí)用于每一層網(wǎng)絡(luò)的pre-tr
ain;
?
②每次用無監(jiān)督學(xué)習(xí)只訓(xùn)練一層,將其訓(xùn)練結(jié)果作為其高一層的輸入;
?
③用自頂而下的監(jiān)督算法去調(diào)整所有層
?
主要技術(shù)
?
?
欠擬合、過擬合、正則化
?
最大似然估計(jì)和貝葉斯統(tǒng)計(jì)
?
隨機(jī)梯度下降
?
監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)
?
深度前饋網(wǎng)絡(luò)、代價(jià)函數(shù)和反向傳播
?
正則化、稀疏編碼和dropout
?
自適應(yīng)學(xué)習(xí)算法
?
卷積神經(jīng)網(wǎng)絡(luò)
?
循環(huán)神經(jīng)網(wǎng)絡(luò)
?
遞歸神經(jīng)網(wǎng)絡(luò)
?
深度神經(jīng)網(wǎng)絡(luò)和深度堆疊網(wǎng)絡(luò)
?
LSTM長短時(shí)記憶
?
主成分分析
?
正則自動(dòng)編碼器
?
表征學(xué)習(xí)
?
蒙特卡洛
?
受限波茲曼機(jī)
?
深度置信網(wǎng)絡(luò)
?
softmax回歸、決策樹和聚類算法
?
KNN和SVM
?
生成對(duì)抗網(wǎng)絡(luò)和有向生成網(wǎng)絡(luò)
?
?
自然語言處理
?
?
有限馬爾科夫
?
動(dòng)態(tài)規(guī)劃
?
梯度策略算法
?
增強(qiáng)學(xué)習(xí)(Q-learning)
?
轉(zhuǎn)折點(diǎn)
?
2006年前,嘗試訓(xùn)練深度架構(gòu)都失敗了:訓(xùn)練一個(gè)深度有監(jiān)督前饋神經(jīng)網(wǎng)絡(luò)趨向于產(chǎn)生壞的結(jié)果(同時(shí)在訓(xùn)練和測試誤差中),然后將其變淺為1(1或者2個(gè)隱層)。
?
2006年的3篇論文改變了這種狀況,由Hinton的革命性的在深度信念網(wǎng)(Deep Belief Networks, DBNs)上的工作所引領(lǐng):
?
Hinton, G. E., Osindero, S. and
Teh, Y.,A fast learning algorithm for deep belief nets.Neural Computation 18:1527-1554, 2006
?
Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle,Greedy LayerWise Training of Deep Networks, in J. Platt et al. (Eds),
Advances in Neural Information Processing Systems 19 (NIPS 2006), pp. 153-160, MIT Press, 2007
?
Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun Eff
icient Learning of Sparse Representations with an Energy-Based Model, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press, 2007
?
在這三篇論文中以下主要原理被發(fā)現(xiàn):
?
表示的無監(jiān)督學(xué)習(xí)被用于(預(yù))訓(xùn)練每一層;
?
在一個(gè)時(shí)間里的一個(gè)層次的無監(jiān)督訓(xùn)練,接著之前訓(xùn)練的層次。在每一層學(xué)習(xí)到的表示作為下一層的輸入;
?
用有監(jiān)督訓(xùn)練來調(diào)整所有層(加上一個(gè)或者更多的用于產(chǎn)生預(yù)測的附加層);
?
DBNs在每一層中利用用于表示的無監(jiān)督學(xué)習(xí)RBMs。Bengio et al paper 探討和對(duì)比了RBMs和auto-encode
rs(通過一個(gè)表示的瓶頸內(nèi)在層預(yù)測輸入的神經(jīng)網(wǎng)絡(luò))。Ranzato et al paper在一個(gè)convolutional架構(gòu)的上下文中使用稀疏auto-encoders(類似于稀疏編碼)。Auto-encoders和convolutional架構(gòu)將在以后的課程中講解。
?
從2006年以來,大量的關(guān)于深度學(xué)習(xí)的論文被發(fā)表。
為什么要有深度學(xué)習(xí)?
深度學(xué)習(xí)可以用更多的數(shù)據(jù)或是更好的算法來提高學(xué)習(xí)算法的結(jié)果。對(duì)于某些應(yīng)用而言,深度學(xué)習(xí)在大數(shù)據(jù)集上的表現(xiàn)比其他機(jī)器學(xué)習(xí)(ML)方法都要好。
性能表現(xiàn)方面,深度學(xué)習(xí)探索了神經(jīng)網(wǎng)絡(luò)的概率空間,與其他工具相比,深度學(xué)習(xí)算法更適合無監(jiān)督和半監(jiān)督學(xué)習(xí),更適合強(qiáng)特征提取,也更適合于圖像識(shí)別領(lǐng)域、文本識(shí)別領(lǐng)域、語音識(shí)別領(lǐng)域等。
為什么深度學(xué)習(xí)會(huì)如此被熱衷,因?yàn)樗灰匀魏螕p失函數(shù)為特征,也不會(huì)被特定公式所限制,這使得該算法對(duì)科學(xué)家們更為開放,它能以比其他傳統(tǒng)機(jī)器學(xué)習(xí)工具更好的方式進(jìn)行使用和擴(kuò)展。
進(jìn)一步地說,引用 《Deep Learning Book MIT》(免費(fèi)電子書:http://www.deeplearningbook.org/)這本書上的某個(gè)觀點(diǎn),或許能進(jìn)一步給出為什么要從機(jī)器學(xué)習(xí)到深度學(xué)習(xí),
1960年后,線性分類器的局限性開始被認(rèn)識(shí)到,它只能將輸入空間切分為非常簡單的區(qū)域,即由一個(gè)超平面分離的兩個(gè)半?yún)^(qū)間。對(duì)于像圖像和語音識(shí)別這類問題,需要輸入-輸出函數(shù)對(duì)輸入的非相關(guān)變化(位置的變化,方向變化,光照變化,語音的高音和低音變化)不敏感,而對(duì)類別敏感(如白狼和薩摩耶犬)。
在像素級(jí)別,兩張不同的姿態(tài),不同環(huán)境下薩摩耶犬的照片會(huì)有極大的不同,而同樣的背景,同樣位置的薩摩耶犬和白狼的照片可能非常相似。對(duì)直接操作圖像像素的線性分類器或者其他“淺層”分類器可能不容易區(qū)分后兩張照片,同時(shí)將前兩張放在同一類。這就是為什么淺層分類器需要好的特征提取器—有選擇地產(chǎn)生圖片中重要類別信息的表示,同時(shí)對(duì)無關(guān)信息如姿態(tài)具有不變性—-以解決選擇無關(guān)的困境。
為了讓分類器更強(qiáng)大,可以使用廣義非線性特征以及核函數(shù)方法。但廣義特征(如高斯核函數(shù))泛華能力差,常規(guī)的方法是手動(dòng)設(shè)計(jì)好的特征提取器,而這需要大量工程經(jīng)驗(yàn)和領(lǐng)域?qū)<也拍芡瓿伞H绻玫奶卣骺梢允褂猛ㄟ^學(xué)習(xí)的方法自動(dòng)學(xué)習(xí)得到,上述問題就可以避免,這是深度學(xué)習(xí)的核心優(yōu)勢。
由此可見,深度學(xué)習(xí)有它強(qiáng)于傳統(tǒng)的機(jī)器學(xué)習(xí)算法的地方,并且有時(shí)候只能用深度學(xué)習(xí)借助訓(xùn)練神經(jīng)網(wǎng)絡(luò)來完成某些識(shí)別任務(wù)。
深度學(xué)習(xí)系統(tǒng)學(xué)習(xí)清單
有了對(duì)ML算法的基本認(rèn)識(shí)后,有助于對(duì)深度學(xué)習(xí)的快速理解,根據(jù) playground.tensorflow.org 給出的一本免費(fèi)深度學(xué)習(xí)電子書,再結(jié)合相關(guān)的paper,可以快速了解其中的理論和算法,包括廣泛使用的幾套神經(jīng)網(wǎng)絡(luò)模型,先對(duì)這些內(nèi)容做一個(gè)提綱,接下來再有重點(diǎn)的總結(jié)。
這本書的組織思路如下:
1. Perceptrons感知器,這是最簡單的神經(jīng)網(wǎng)絡(luò)
2. Sigmoid neurons
3. The architecture of neural networks
4 A simple network to classify handwritten digits 手寫字分類
對(duì)手寫字分類任務(wù)中,涉及到深度學(xué)習(xí)非常重要的參數(shù)求解方法:梯度下降學(xué)習(xí)權(quán)重參數(shù);書中給出了源碼實(shí)現(xiàn)。
5 反向傳播算法(BP)
6 提升神經(jīng)元學(xué)習(xí)的方法
7 可視化地證明:神經(jīng)網(wǎng)絡(luò)可以表示任何函數(shù)
8 為什么深度神經(jīng)網(wǎng)絡(luò)難以訓(xùn)練,包括常見的梯度消失問題。
再分析總結(jié)幾套常用的神經(jīng)網(wǎng)絡(luò):
DNN,深度神經(jīng)網(wǎng)絡(luò)
特指全連接的神經(jīng)元結(jié)構(gòu),并不包含卷積單元或是時(shí)間上的關(guān)聯(lián)。
RNN,循環(huán)神經(jīng)網(wǎng)絡(luò)
訓(xùn)練樣本輸入是連續(xù)的序列,且序列的長短不一,比如基于時(shí)間的序列:一段連續(xù)的語音,一段連續(xù)的手寫文字。這些序列比較長,且長度不一,比較難直接的拆分成一個(gè)個(gè)獨(dú)立的樣本來通過DNN/CNN進(jìn)行訓(xùn)練。
但是 RNN有致命的缺陷,只能知道記憶短暫的信息,對(duì)于距離相距很遠(yuǎn)的信息記憶能力差。比如我們做完型填空時(shí),可能需要整合全文來填某一個(gè)句子,比如 I grew up in China…。此處省略一萬字。。.。.I speak fluent _____ 。 如果 RNN 只知道鄰近的幾個(gè)單詞,可能它會(huì)知道此處需要填寫一門語言,但至于應(yīng)該填什么,就需要找到更遠(yuǎn)前的信息,直到 找到 China 才行。這種需要尋找相距很遠(yuǎn)信息的情況,實(shí)際上非常常見。
LSTM
它是 RNN 的一種特殊形式,它被廣泛應(yīng)用在語音識(shí)別、語言建模、機(jī)器翻譯、為圖像起標(biāo)題。
CNN,卷積神經(jīng)網(wǎng)絡(luò)
是深度學(xué)習(xí)算法在圖像處理領(lǐng)域的一個(gè)應(yīng)用。CNN主要用來識(shí)別位移、縮放及其他形式扭曲不變性的二維圖形。
評(píng)論