深度學(xué)習(xí)(Deep learning)入門導(dǎo)讀
2016年Google人工智能程序阿爾法圍棋(AlphaGo)對(duì)戰(zhàn)世界圍棋選手李世石,最終以4:1的成績(jī)獲得勝利,這驚人的一幕將國(guó)內(nèi)外研究和學(xué)習(xí)人工智能的熱題推向了新的高潮。然而,何為深度學(xué)習(xí)?本文將揭開深度學(xué)習(xí)的面紗。
• 1 什么是深度學(xué)習(xí)及深度學(xué)習(xí)的基本思想?
• 2 人工智能是如何發(fā)展而來?
• 3 機(jī)器學(xué)習(xí)的相關(guān)技術(shù)有哪些?
• 4 Deeplearning與Neural Network的異同?
• 5 Deeplearning訓(xùn)練過程?
• 6 深度學(xué)習(xí)研究現(xiàn)狀、應(yīng)用領(lǐng)域和發(fā)展趨勢(shì)?
1 什么是深度學(xué)習(xí)及深度學(xué)習(xí)的基本思想?
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)新分支,以人工神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)模擬人腦的分析學(xué)習(xí)機(jī)制來進(jìn)行解釋圖像、聲音、文本等數(shù)據(jù)。人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,ANNs)是深度學(xué)習(xí)算法的基礎(chǔ),簡(jiǎn)稱為神經(jīng)網(wǎng)絡(luò)(NNs)。神經(jīng)網(wǎng)絡(luò)的思想是通過借鑒動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征進(jìn)行分布式并行處理信息的數(shù)學(xué)算法模型。深度學(xué)習(xí)是利用不斷地學(xué)習(xí)組合底層特征形成更加抽象的高層特征,來發(fā)現(xiàn)數(shù)據(jù)的分布式特征。在深度學(xué)習(xí)中,計(jì)算機(jī)可以自行觀測(cè)學(xué)習(xí)數(shù)據(jù)和結(jié)果來實(shí)現(xiàn)自動(dòng)解決問題。在深度學(xué)習(xí)算法的發(fā)展過程中,Caffe受到廣大研究和開發(fā)人員的歡迎,是一款優(yōu)秀的神經(jīng)網(wǎng)絡(luò)深度學(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)變化之后沒有任何的信息損失(呵呵,大牛說,這是不可能的。信息論中有個(gè)“信息逐層丟失”的說法(信息處理不等式),設(shè)處理a信息得到b,再對(duì)b處理得到c,那么可以證明:a和c的互信息不會(huì)超過a和b的互信息。這表明信息處理不會(huì)增加信息,大部分處理會(huì)丟失信息。當(dāng)然了,如果丟掉的是沒用的信息那多好?。?,保持了不變,這意味著輸入I經(jīng)過每一層Si都沒有任何的信息損失,即在任何一層Si,它都是原有信息(即輸入I)的另外一種表示?,F(xiàn)在回到我們的主題Deep Learning,我們需要自動(dòng)地學(xué)習(xí)特征,假設(shè)我們有一堆輸入I(如一堆圖像或者文本),假設(shè)我們?cè)O(shè)計(jì)了一個(gè)系統(tǒng)S(有n層),我們通過調(diào)整系統(tǒng)中參數(shù),使得它的輸出仍然是輸入I,那么我們就可以自動(dòng)地獲取得到輸入I的一系列層次特征,即S1,…, Sn。
對(duì)于深度學(xué)習(xí)來說,其思想就是堆疊多個(gè)層,也就是說這一層的輸出作為下一層的輸入。通過這種方式,就可以實(shí)現(xiàn)對(duì)輸入信息進(jìn)行分級(jí)表達(dá)了。
另外,前面是假設(shè)輸出嚴(yán)格地等于輸入,這個(gè)限制太嚴(yán)格,我們可以略微地放松這個(gè)限制,例如我們只要使得輸入與輸出的差別盡可能地小即可,這個(gè)放松會(huì)導(dǎo)致另外一類不同的Deep Learning方法。上述就是Deep Learning的基本思想。
2 人工智能是如何發(fā)展而來?
人工智能主要經(jīng)歷了由淺層學(xué)習(xí)(Shallow Learning)到深度學(xué)習(xí)(Deep Learning)的發(fā)展歷程。在1956年達(dá)特茅斯大學(xué)召開的會(huì)議上首次出現(xiàn)了“人工智能”(Artificial Intelligence, AI)這個(gè)術(shù)語,標(biāo)志著人工智能正式誕生。20世界60年代到70年代人工智能的應(yīng)用走向?qū)嵱没芯亢脱邪l(fā)和各種不同類型的專家系統(tǒng)。90年代隨著Internet的發(fā)展,多種淺層機(jī)器學(xué)習(xí)模型先后被提出,比如支撐向量機(jī)(Support Vector Machines, SVM)、Boosting、最大熵方法(Logistic Regression, LR)等,這個(gè)階段淺層學(xué)習(xí)是機(jī)器學(xué)習(xí)的第一次浪潮。當(dāng)下進(jìn)入大數(shù)據(jù)+深度模型階段,是機(jī)器學(xué)習(xí)的第二次浪潮。2006年,加拿大多倫多大學(xué)機(jī)器學(xué)習(xí)領(lǐng)域泰斗Geoffrey Hinton和他的學(xué)生在科學(xué)上發(fā)表的一篇文章,揭露和兩個(gè)主要的信息,一是多隱層的人工神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)得到的特征數(shù)據(jù)有利于可視化或分類,二是通過“逐層初始化”可有效克服深度神經(jīng)網(wǎng)絡(luò)在訓(xùn)練上的難點(diǎn)。
當(dāng)前多數(shù)分類、回歸等學(xué)習(xí)方法為淺層結(jié)構(gòu)算法,其局限性在于有限樣本和計(jì)算單元情況下對(duì)復(fù)雜函數(shù)的表示能力有限,針對(duì)復(fù)雜分類問題其泛化能力受到一定制約。深度學(xué)習(xí)可通過學(xué)習(xí)一種深層非線性網(wǎng)絡(luò)結(jié)構(gòu),實(shí)現(xiàn)復(fù)雜函數(shù)逼近,表征輸入數(shù)據(jù)分布式表示,并展現(xiàn)了強(qiáng)大的從少數(shù)樣本集中學(xué)習(xí)數(shù)據(jù)集本質(zhì)特征的能力。(多層的好處是可以用較少的參數(shù)表示復(fù)雜的函數(shù))
深度學(xué)習(xí)的實(shí)質(zhì),是通過構(gòu)建具有很多隱層的機(jī)器學(xué)習(xí)模型和海量的訓(xùn)練數(shù)據(jù),來學(xué)習(xí)更有用的特征,從而最終提升分類或預(yù)測(cè)的準(zhǔn)確性。因此,“深度模型”是手段,“特征學(xué)習(xí)”是目的。區(qū)別于傳統(tǒng)的淺層學(xué)習(xí),深度學(xué)習(xí)的不同在于:1)強(qiáng)調(diào)了模型結(jié)構(gòu)的深度,通常有5層、6層,甚至10多層的隱層節(jié)點(diǎn);2)明確突出了特征學(xué)習(xí)的重要性,也就是說,通過逐層特征變換,將樣本在原空間的特征表示變換到一個(gè)新特征空間,從而使分類或預(yù)測(cè)更加容易。與人工規(guī)則構(gòu)造特征的方法相比,利用大數(shù)據(jù)來學(xué)習(xí)特征,更能夠刻畫數(shù)據(jù)的豐富內(nèi)在信息。目前,深度神經(jīng)網(wǎng)絡(luò)(DNN)技術(shù)的應(yīng)用十分廣泛,大型知名互聯(lián)網(wǎng)公司競(jìng)相投入資源研究探索,具有重要的研究意義和價(jià)值。
3 機(jī)器學(xué)習(xí)的相關(guān)技術(shù)有哪些?
從學(xué)習(xí)形式上可以分為有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí),有監(jiān)督學(xué)習(xí)由一個(gè)輸入對(duì)象和一個(gè)期望的輸出值組成,是從標(biāo)記的訓(xùn)練數(shù)據(jù)來推斷一個(gè)功能的機(jī)器學(xué)習(xí)任務(wù),根據(jù)訓(xùn)練數(shù)據(jù)集學(xué)習(xí)得到一個(gè)函數(shù),輸入新數(shù)據(jù),通過這個(gè)函數(shù)預(yù)測(cè)結(jié)果。無監(jiān)督學(xué)習(xí)是從沒有標(biāo)記的訓(xùn)練數(shù)據(jù)中學(xué)習(xí)數(shù)據(jù)的信息或特征來發(fā)現(xiàn)訓(xùn)練樣本中的結(jié)構(gòu)性知識(shí),使用的許多方法是基于數(shù)據(jù)挖掘方法;從學(xué)習(xí)方法上可以分為經(jīng)驗(yàn)性歸納學(xué)習(xí)、分析學(xué)習(xí)、類比學(xué)習(xí)、遺傳算法、連接學(xué)習(xí)和增強(qiáng)學(xué)習(xí);其它相關(guān)的技術(shù)包括BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)-是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò)包括輸入層、隱含層和輸出層,隨機(jī)森林(Random Forests)、支持向量機(jī)(Support Vector Machine, SVM)-是一種監(jiān)督學(xué)習(xí)模型,關(guān)鍵是核函數(shù)、把輸入隱含映射成高維特征空間,有效進(jìn)行線性和非線性分類、深度學(xué)習(xí)(Deeping Learning)-典型神經(jīng)網(wǎng)絡(luò)采用大量的卷積層,利用空間相對(duì)關(guān)系來減少參數(shù)數(shù)目以提高訓(xùn)練性能。
4 Deep learning與Neural Network的異同?
深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究。含多隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。
Deep learning本身算是machine learning的一個(gè)分支,簡(jiǎn)單可以理解為neural network的發(fā)展。大約二三十年前,neural network曾經(jīng)是ML領(lǐng)域特別火熱的一個(gè)方向,但是后來確慢慢淡出了,原因包括以下幾個(gè)方面:
1)比較容易過擬合,參數(shù)比較難tune,而且需要不少trick;
2)訓(xùn)練速度比較慢,在層次比較少(小于等于3)的情況下效果并不比其它方法更優(yōu);
所以中間有大約20多年的時(shí)間,神經(jīng)網(wǎng)絡(luò)被關(guān)注很少,這段時(shí)間基本上是SVM和boosting算法的天下。但是,一個(gè)癡心的老先生Hinton,他堅(jiān)持了下來,并最終(和其它人一起B(yǎng)engio、Yann.lecun等)提成了一個(gè)實(shí)際可行的deep learning框架。
Deep
learning與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)之間有相同的地方也有很多不同。
二者的相同在于deep learning采用了神經(jīng)網(wǎng)絡(luò)相似的分層結(jié)構(gòu),系統(tǒng)由包括輸入層、隱層(多層)、輸出層組成的多層網(wǎng)絡(luò),如下圖所示。
上圖中每個(gè)圓圈都是一個(gè)神經(jīng)元,每條線表示神經(jīng)元之間的連接。我們可以看到,上面的神經(jīng)元被分成了多層,層與層之間的神經(jīng)元有連接,而層內(nèi)之間的神經(jīng)元沒有連接。最左邊的層叫做輸入層,這層負(fù)責(zé)接收輸入數(shù)據(jù);最右邊的層叫輸出層,我們可以從這層獲取神經(jīng)網(wǎng)絡(luò)輸出數(shù)據(jù)。輸入層和輸出層之間的層叫做隱藏層。每一層可以看作是一個(gè)logistic regression模型;這種分層結(jié)構(gòu),是比較接近人類大腦的結(jié)構(gòu)的。
而為了克服神經(jīng)網(wǎng)絡(luò)訓(xùn)練中的問題,DL采用了與神經(jīng)網(wǎng)絡(luò)很不同的訓(xùn)練機(jī)制。傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中,采用的是back propagation的方式進(jìn)行,簡(jiǎn)單來講就是采用迭代的算法來訓(xùn)練整個(gè)網(wǎng)絡(luò),隨機(jī)設(shè)定初值,計(jì)算當(dāng)前網(wǎng)絡(luò)的輸出,然后根據(jù)當(dāng)前輸出和label之間的差去改變前面各層的參數(shù),直到收斂(整體是一個(gè)梯度下降法)。而deep learning整體上是一個(gè)layer-wise的訓(xùn)練機(jī)制。這樣做的原因是因?yàn)椋绻捎胋ack propagation的機(jī)制,對(duì)于一個(gè)deep network(7層以上),殘差傳播到最前面的層已經(jīng)變得太小,出現(xiàn)所謂的gradient diffusion(梯度擴(kuò)散)。這個(gè)問題我們接下來討論。
5 Deep learning訓(xùn)練過程?
5.1傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法為什么不能用在深度神經(jīng)網(wǎng)絡(luò)
BP算法作為傳統(tǒng)訓(xùn)練多層網(wǎng)絡(luò)的典型算法,實(shí)際上對(duì)僅含幾層網(wǎng)絡(luò),該訓(xùn)練方法就已經(jīng)很不理想。深度結(jié)構(gòu)(涉及多個(gè)非線性處理單元層)非凸目標(biāo)代價(jià)函數(shù)中普遍存在的局部最小是訓(xùn)練困難的主要來源。
BP算法存在的問題:
(1)梯度越來越稀疏:從頂層越往下,誤差校正信號(hào)越來越?。?/p>
(2)收斂到局部最小值:尤其是從遠(yuǎn)離最優(yōu)區(qū)域開始的時(shí)候(隨機(jī)值初始化會(huì)導(dǎo)致這種情況的發(fā)生);
(3)一般,我們只能用有標(biāo)簽的數(shù)據(jù)來訓(xùn)練:但大部分的數(shù)據(jù)是沒標(biāo)簽的,而大腦可以從沒有標(biāo)簽的的數(shù)據(jù)中學(xué)習(xí);
5.2 deep learning訓(xùn)練過程
如果對(duì)所有層同時(shí)訓(xùn)練,時(shí)間復(fù)雜度會(huì)太高;如果每次訓(xùn)練一層,偏差就會(huì)逐層傳遞。這會(huì)面臨跟上面監(jiān)督學(xué)習(xí)中相反的問題,會(huì)嚴(yán)重欠擬合(因?yàn)樯疃染W(wǎng)絡(luò)的神經(jīng)元和參數(shù)太多了)。
2006年,hinton提出了在非監(jiān)督數(shù)據(jù)上建立多層神經(jīng)網(wǎng)絡(luò)的一個(gè)有效方法,簡(jiǎn)單的說,分為兩步,一是每次訓(xùn)練一層網(wǎng)絡(luò),二是調(diào)優(yōu),使原始表示x向上生成的高級(jí)表示r和該高級(jí)表示r向下生成的x'盡可能一致。方法是:
1)首先逐層構(gòu)建單層神經(jīng)元,這樣每次都是訓(xùn)練一個(gè)單層網(wǎng)絡(luò)。
2)當(dāng)所有層訓(xùn)練完后,Hinton使用wake-sleep算法進(jìn)行調(diào)優(yōu)。
將除最頂層的其它層間的權(quán)重變?yōu)殡p向的,這樣最頂層仍然是一個(gè)單層神經(jīng)網(wǎng)絡(luò),而其它層則變?yōu)榱藞D模型。向上的權(quán)重用于“認(rèn)知”,向下的權(quán)重用于“生成”。然后使用Wake-Sleep算法調(diào)整所有的權(quán)重。讓認(rèn)知和生成達(dá)成一致,也就是保證生成的最頂層表示能夠盡可能正確的復(fù)原底層的結(jié)點(diǎn)。比如頂層的一個(gè)結(jié)點(diǎn)表示人臉,那么所有人臉的圖像應(yīng)該激活這個(gè)結(jié)點(diǎn),并且這個(gè)結(jié)果向下生成的圖像應(yīng)該能夠表現(xiàn)為一個(gè)大概的人臉圖像。Wake-Sleep算法分為醒(wake)和睡(sleep)兩個(gè)部分。
1)wake階段:認(rèn)知過程,通過外界的特征和向上的權(quán)重(認(rèn)知權(quán)重)產(chǎn)生每一層的抽象表示(結(jié)點(diǎn)狀態(tài)),并且使用梯度下降修改層間的下行權(quán)重(生成權(quán)重)。也就是“如果現(xiàn)實(shí)跟我想象的不一樣,改變我的權(quán)重使得我想象的東西就是這樣的”。
2)sleep階段:生成過程,通過頂層表示(醒時(shí)學(xué)得的概念)和向下權(quán)重,生成底層的狀態(tài),同時(shí)修改層間向上的權(quán)重。也就是“如果夢(mèng)中的景象不是我腦中的相應(yīng)概念,改變我的認(rèn)知權(quán)重使得這種景象在我看來就是這個(gè)概念”。
deep learning訓(xùn)練過程具體如下:
1)使用自下上升非監(jiān)督學(xué)習(xí)(就是從底層開始,一層一層的往頂層訓(xùn)練):
采用無標(biāo)定數(shù)據(jù)(有標(biāo)定數(shù)據(jù)也可)分層訓(xùn)練各層參數(shù),這一步可以看作是一個(gè)無監(jiān)督訓(xùn)練過程,是和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)區(qū)別最大的部分(這個(gè)過程可以看作是feature learning過程):
具體的,先用無標(biāo)定數(shù)據(jù)訓(xùn)練第一層,訓(xùn)練時(shí)先學(xué)習(xí)第一層的參數(shù)(這一層可以看作是得到一個(gè)使得輸出和輸入差別最小的三層神經(jīng)網(wǎng)絡(luò)的隱層),由于模型capacity的限制以及稀疏性約束,使得得到的模型能夠?qū)W習(xí)到數(shù)據(jù)本身的結(jié)構(gòu),從而得到比輸入更具有表示能力的特征;在學(xué)習(xí)得到第n-1層后,將n-1層的輸出作為第n層的輸入,訓(xùn)練第n層,由此分別得到各層的參數(shù);
2)自頂向下的監(jiān)督學(xué)習(xí)(就是通過帶標(biāo)簽的數(shù)據(jù)去訓(xùn)練,誤差自頂向下傳輸,對(duì)網(wǎng)絡(luò)進(jìn)行微調(diào)):
基于第一步得到的各層參數(shù)進(jìn)一步fine-tune整個(gè)多層模型的參數(shù),這一步是一個(gè)有監(jiān)督訓(xùn)練過程;第一步類似神經(jīng)網(wǎng)絡(luò)的隨機(jī)初始化初值過程,由于DL的第一步不是隨機(jī)初始化,而是通過學(xué)習(xí)輸入數(shù)據(jù)的結(jié)構(gòu)得到的,因而這個(gè)初值更接近全局最優(yōu),從而能夠取得更好的效果;所以deep learning效果好很大程度上歸功于第一步的feature learning過程。
6 深度學(xué)習(xí)研究現(xiàn)狀、應(yīng)用領(lǐng)域和發(fā)展趨勢(shì)?
在國(guó)外,2012年Hinton和他的學(xué)生Alex將神經(jīng)模型應(yīng)用于ImageNet上,取得了驚人的結(jié)果,這一年是深度學(xué)習(xí)研究和應(yīng)用爆發(fā)的一年。深度學(xué)習(xí)在圖像分類、圖像定位、圖像檢測(cè)、語音識(shí)別等領(lǐng)域都取得了碩果累累,Google的AlphaGo不再詳述。在國(guó)內(nèi)BAT、華為、京東等互聯(lián)網(wǎng)巨頭紛紛組建人工智能研究院,力爭(zhēng)人工智能在家居、汽車、無人系統(tǒng)、安防等方面有突破性的創(chuàng)新應(yīng)用。
Reference:
[1] 樂毅,王斌.深度學(xué)習(xí)-Caffe之經(jīng)典模型詳解與實(shí)戰(zhàn) [M].北京:電子工業(yè)出版社,2016.
https://blog.csdn.net/zouxy09/article/details/8775518
https://www.zybuluo.com/hanbingtao/note/433855

































