人工智能,就像長(zhǎng)生不老和星際漫游一樣,是人類(lèi)最美好的夢(mèng)想之一。雖然計(jì)算機(jī)技術(shù)已經(jīng)取得了長(zhǎng)足的進(jìn)步,但是到目前為止,還沒(méi)有一臺(tái)電腦能產(chǎn)生“自我”的意識(shí)。但是自 2006 年以來(lái),機(jī)器學(xué)習(xí)領(lǐng)域,取得了突破性的進(jìn)展。圖靈試驗(yàn),至少不是那么可望而不可及了。至于技術(shù)手段,不僅僅依賴(lài)于云計(jì)算對(duì)大數(shù)據(jù)的并行處理能力,而且依賴(lài)于算法。這個(gè)算法就是深度學(xué)習(xí)Deep Learning。借助于 Deep Learning 算法,人類(lèi)終于找到了如何處理“抽象概念”這個(gè)亙古難題的方法。
機(jī)器學(xué)習(xí)(Machine Learning)是一門(mén)專(zhuān)門(mén)研究計(jì)算機(jī)怎樣模擬或?qū)崿F(xiàn)人類(lèi)的學(xué)習(xí)行為,以獲取新的知識(shí)或技能,重新組織已有的知識(shí)結(jié)構(gòu)市值不斷改善自身的性能的學(xué)科,簡(jiǎn)單地說(shuō),機(jī)器學(xué)習(xí)就是通過(guò)算法,使得機(jī)器能從大量的歷史數(shù)據(jù)中學(xué)習(xí)規(guī)律,從而對(duì)新的樣本做智能識(shí)別或預(yù)測(cè)未來(lái)。
機(jī)器學(xué)習(xí)在圖像識(shí)別、語(yǔ)音識(shí)別、自然語(yǔ)言理解、天氣預(yù)測(cè)、基因表達(dá)、內(nèi)容推薦等很多方面的發(fā)展還存在著沒(méi)有良好解決的問(wèn)題。
傳統(tǒng)的模式識(shí)別方法:通過(guò)傳感器獲取數(shù)據(jù),然后經(jīng)過(guò)預(yù)處理、特征提取、特征選擇、再到推理、預(yù)測(cè)或識(shí)別。
開(kāi)始的通過(guò)傳感器(例如CMOS)來(lái)獲得數(shù)據(jù)。然后經(jīng)過(guò)預(yù)處理、特征提取、特征選擇,再到推理、預(yù)測(cè)或者識(shí)別。最后一個(gè)部分,也就是機(jī)器學(xué)習(xí)的部分,絕大部分的工作是在這方面做的,也存在很多的paper和研究。
而中間的三部分,概括起來(lái)就是特征表達(dá)。良好的特征表達(dá),對(duì)最終算法的準(zhǔn)確性起了非常關(guān)鍵的作用,而且系統(tǒng)主要的計(jì)算和測(cè)試工作都耗在這一大部分。但,這塊實(shí)際中一般都是人工完成的,靠人工提取特征。而手工選取特征費(fèi)時(shí)費(fèi)力,需要專(zhuān)業(yè)知識(shí),很大程度上靠經(jīng)驗(yàn)和運(yùn)氣,那么機(jī)器能不能自動(dòng)的學(xué)習(xí)特征呢?深度學(xué)習(xí)的出現(xiàn)就這個(gè)問(wèn)題提出了一種解決方案。
人腦的視覺(jué)機(jī)理
1981 年的諾貝爾醫(yī)學(xué)獎(jiǎng),頒發(fā)給了 David Hubel(出生于加拿大的美國(guó)神經(jīng)生物學(xué)家)和TorstenWiesel,以及 Roger Sperry。前兩位的主要貢獻(xiàn),是“發(fā)現(xiàn)了視覺(jué)系統(tǒng)的信息處理”可視皮層是分級(jí)的。
1958 年,DavidHubel 和Torsten Wiesel 在 JohnHopkins University,研究瞳孔區(qū)域與大腦皮層神經(jīng)元的對(duì)應(yīng)關(guān)系。他們?cè)谪埖暮竽X頭骨上,開(kāi)了一個(gè)3 毫米的小洞,向洞里插入電極,測(cè)量神經(jīng)元的活躍程度。
然后,他們?cè)谛∝埖难矍埃宫F(xiàn)各種形狀、各種亮度的物體。并且,在展現(xiàn)每一件物體時(shí),還改變物體放置的位置和角度。他們期望通過(guò)這個(gè)辦法,讓小貓瞳孔感受不同類(lèi)型、不同強(qiáng)弱的刺激。
之所以做這個(gè)試驗(yàn),目的是去證明一個(gè)猜測(cè)。位于后腦皮層的不同視覺(jué)神經(jīng)元,與瞳孔所受刺激之間,存在某種對(duì)應(yīng)關(guān)系。一旦瞳孔受到某一種刺激,后腦皮層的某一部分神經(jīng)元就會(huì)活躍。經(jīng)歷了很多天反復(fù)的枯燥的試驗(yàn),David Hubel 和Torsten Wiesel 發(fā)現(xiàn)了一種被稱(chēng)為“方向選擇性細(xì)胞(Orientation Selective Cell)”的神經(jīng)元細(xì)胞。當(dāng)瞳孔發(fā)現(xiàn)了眼前的物體的邊緣,而且這個(gè)邊緣指向某個(gè)方向時(shí),這種神經(jīng)元細(xì)胞就會(huì)活躍。
這個(gè)發(fā)現(xiàn)激發(fā)了人們對(duì)于神經(jīng)系統(tǒng)的進(jìn)一步思考。神經(jīng)-中樞-大腦的工作過(guò)程,或許是一個(gè)不斷迭代、不斷抽象的過(guò)程。
例如,從原始信號(hào)攝入開(kāi)始(瞳孔攝入像素 Pixels),接著做初步處理(大腦皮層某些細(xì)胞發(fā)現(xiàn)邊緣和方向),然后抽象(大腦判定,眼前的物體的形狀,是圓形的),然后進(jìn)一步抽象(大腦進(jìn)一步判定該物體是只氣球)。
這個(gè)生理學(xué)的發(fā)現(xiàn),促成了計(jì)算機(jī)人工智能,在四十年后的突破性發(fā)展。
總的來(lái)說(shuō),人的視覺(jué)系統(tǒng)的信息處理是分級(jí)的。從低級(jí)的V1區(qū)提取邊緣特征,再到V2區(qū)的形狀或者目標(biāo)的部分等,再到更高層,整個(gè)目標(biāo)、目標(biāo)的行為等。也就是說(shuō)高層的特征是低層特征的組合,從低層到高層的特征表示越來(lái)越抽象,越來(lái)越能表現(xiàn)語(yǔ)義或者意圖。而抽象層面越高,存在的可能猜測(cè)就越少,就越利于分類(lèi)。例如,單詞集合和句子的對(duì)應(yīng)是多對(duì)一的,句子和語(yǔ)義的對(duì)應(yīng)又是多對(duì)一的,語(yǔ)義和意圖的對(duì)應(yīng)還是多對(duì)一的,這是個(gè)層級(jí)體系。
機(jī)器學(xué)習(xí)的特征
特征是機(jī)器學(xué)習(xí)系統(tǒng)的原材料,對(duì)最終模型的影響是毋庸置疑的。如果數(shù)據(jù)被很好的表達(dá)成了特征,通常線(xiàn)性模型就能達(dá)到滿(mǎn)意的精度。
特征表示的粒度
學(xué)習(xí)算法在一個(gè)什么粒度上的特征表示,才有能發(fā)揮作用?就一個(gè)圖片來(lái)說(shuō),像素級(jí)的特征根本沒(méi)有價(jià)值。例如下面的摩托車(chē),從像素級(jí)別,根本得不到任何信息,其無(wú)法進(jìn)行摩托車(chē)和非摩托車(chē)的區(qū)分。而如果特征是一個(gè)具有結(jié)構(gòu)性(或者說(shuō)有含義)的時(shí)候,比如是否具有車(chē)把手(handle),是否具有車(chē)輪(wheel),就很容易把摩托車(chē)和非摩托車(chē)區(qū)分,學(xué)習(xí)算法才能發(fā)揮作用。
初級(jí)(淺層)特征表示
既然像素級(jí)的特征表示方法沒(méi)有作用,那怎樣的表示才有用呢?
1995 年前后,Bruno Olshausen和 David Field 兩位學(xué)者任職 Cornell University,他們?cè)噲D同時(shí)用生理學(xué)和計(jì)算機(jī)的手段,雙管齊下,研究視覺(jué)問(wèn)題。
他們收集了很多黑白風(fēng)景照片,從這些照片中,提取出400個(gè)小碎片,每個(gè)照片碎片的尺寸均為 16x16 像素,不妨把這400個(gè)碎片標(biāo)記為 S[i], i = 0,.. 399。接下來(lái),再?gòu)倪@些黑白風(fēng)景照片中,隨機(jī)提取另一個(gè)碎片,尺寸也是 16x16 像素,不妨把這個(gè)碎片標(biāo)記為 T。
他們提出的問(wèn)題是,如何從這400個(gè)碎片中,選取一組碎片,S[k], 通過(guò)疊加的辦法,合成出一個(gè)新的碎片,而這個(gè)新的碎片,應(yīng)當(dāng)與隨機(jī)選擇的目標(biāo)碎片 T,盡可能相似,同時(shí),S[k] 的數(shù)量盡可能少。用數(shù)學(xué)的語(yǔ)言來(lái)描述,就是:Sum_k (a[k] * S[k]) --> T, 其中 a[k] 是在疊加碎片 S[k] 時(shí)的權(quán)重系數(shù)。
為解決這個(gè)問(wèn)題,Bruno Olshausen和 David Field 發(fā)明了一個(gè)算法,稀疏編碼(Sparse Coding)。
稀疏編碼是一個(gè)重復(fù)迭代的過(guò)程,每次迭代分兩步:
1)選擇一組 S[k],然后調(diào)整 a[k],使得Sum_k (a[k] * S[k]) 最接近 T。
2)固定住 a[k],在 400 個(gè)碎片中,選擇其它更合適的碎片S’[k],替代原先的 S[k],使得Sum_k (a[k] * S’[k]) 最接近 T。
經(jīng)過(guò)幾次迭代后,最佳的 S[k] 組合,被遴選出來(lái)了。令人驚奇的是,被選中的 S[k],基本上都是照片上不同物體的邊緣線(xiàn),這些線(xiàn)段形狀相似,區(qū)別在于方向。
Bruno Olshausen和 David Field 的算法結(jié)果,與 David Hubel 和Torsten Wiesel 的生理發(fā)現(xiàn),不謀而合!
也就是說(shuō),復(fù)雜圖形,往往由一些基本結(jié)構(gòu)組成。比如下圖:一個(gè)圖可以通過(guò)用64種正交的edges(可以理解成正交的基本結(jié)構(gòu))來(lái)線(xiàn)性表示。比如樣例的x可以用1-64個(gè)edges中的三個(gè)按照0.8,0.3,0.5的權(quán)重調(diào)和而成。而其他基本edge沒(méi)有貢獻(xiàn),因此均為0 。
另外,不僅圖像存在這個(gè)規(guī)律,聲音也存在。人們從未標(biāo)注的聲音中發(fā)現(xiàn)了20種基本的聲音結(jié)構(gòu),其余的聲音可以由這20種基本結(jié)構(gòu)合成。
結(jié)構(gòu)性特征表示
小塊的圖形可以由基本edge構(gòu)成,更結(jié)構(gòu)化,更復(fù)雜的,具有概念性的圖形如何表示呢?這就需要更高層次的特征表示,比如V2,V4。因此V1看像素級(jí)是像素級(jí)。V2看V1是像素級(jí),這個(gè)是層次遞進(jìn)的,高層表達(dá)由底層表達(dá)的組合而成。專(zhuān)業(yè)點(diǎn)說(shuō)就是基basis。V1取提出的basis是邊緣,然后V2層是V1層這些basis的組合,這時(shí)候V2區(qū)得到的又是高一層的basis。即上一層的basis組合的結(jié)果,上上層又是上一層的組合basis……(所以有大牛說(shuō)Deep learning就是“搞基”,因?yàn)殡y聽(tīng),所以美其名曰Deep learning或者Unsupervised Feature Learning)
直觀(guān)上說(shuō),就是找到make sense的小patch再將其進(jìn)行combine,就得到了上一層的feature,遞歸地向上learning feature。
在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就會(huì)completely different了(那咱們分辨car或者face是不是容易多了)。
我們知道需要層次的特征構(gòu)建,由淺入深,但每一層該有多少個(gè)特征呢?
任何一種方法,特征越多,給出的參考信息就越多,準(zhǔn)確性會(huì)得到提升。但特征多意味著計(jì)算復(fù)雜,探索的空間大,可以用來(lái)訓(xùn)練的數(shù)據(jù)在每個(gè)特征上就會(huì)稀疏,都會(huì)帶來(lái)各種問(wèn)題,并不一定特征越多越好。
深度學(xué)習(xí)的基本思想
假設(shè)我們有一個(gè)系統(tǒng)S,它有n層(S1,…Sn),它的輸入是I,輸出是O,形象地表示為:I =>S1=>S2=>…..=>Sn => O,如果輸出O等于輸入I,即輸入I經(jīng)過(guò)這個(gè)系統(tǒng)變化之后沒(méi)有任何的信息損失(呵呵,大牛說(shuō),這是不可能的。信息論中有個(gè)“信息逐層丟失”的說(shuō)法(信息處理不等式),設(shè)處理a信息得到b,再對(duì)b處理得到c,那么可以證明:a和c的互信息不會(huì)超過(guò)a和b的互信息。這表明信息處理不會(huì)增加信息,大部分處理會(huì)丟失信息。當(dāng)然了,如果丟掉的是沒(méi)用的信息那多好啊),保持了不變,這意味著輸入I經(jīng)過(guò)每一層Si都沒(méi)有任何的信息損失,即在任何一層Si,它都是原有信息(即輸入I)的另外一種表示。現(xiàn)在回到我們的主題Deep Learning,我們需要自動(dòng)地學(xué)習(xí)特征,假設(shè)我們有一堆輸入I(如一堆圖像或者文本),假設(shè)我們?cè)O(shè)計(jì)了一個(gè)系統(tǒng)S(有n層),我們通過(guò)調(diào)整系統(tǒng)中參數(shù),使得它的輸出仍然是輸入I,那么我們就可以自動(dòng)地獲取得到輸入I的一系列層次特征,即S1,…, Sn。
對(duì)于深度學(xué)習(xí)來(lái)說(shuō),其思想就是對(duì)堆疊多個(gè)層,也就是說(shuō)這一層的輸出作為下一層的輸入。通過(guò)這種方式,就可以實(shí)現(xiàn)對(duì)輸入信息進(jìn)行分級(jí)表達(dá)了。
另外,前面是假設(shè)輸出嚴(yán)格地等于輸入,這個(gè)限制太嚴(yán)格,我們可以略微地放松這個(gè)限制,例如我們只要使得輸入與輸出的差別盡可能地小即可,這個(gè)放松會(huì)導(dǎo)致另外一類(lèi)不同的Deep Learning方法。上述就是Deep Learning的基本思想。
淺層學(xué)習(xí)和深度學(xué)習(xí)
20世紀(jì)80年代末期,用于人工神經(jīng)網(wǎng)絡(luò)的反向傳播算法(也叫Back Propagation算法或者BP算法)的發(fā)明,給機(jī)器學(xué)習(xí)帶來(lái)了希望,掀起了基于統(tǒng)計(jì)模型的機(jī)器學(xué)習(xí)熱潮。這個(gè)熱潮一直持續(xù)到今天。人們發(fā)現(xiàn),利用BP算法可以讓一個(gè)人工神經(jīng)網(wǎng)絡(luò)模型從大量訓(xùn)練樣本中學(xué)習(xí)統(tǒng)計(jì)規(guī)律,從而對(duì)未知事件做預(yù)測(cè)。這種基于統(tǒng)計(jì)的機(jī)器學(xué)習(xí)方法比起過(guò)去基于人工規(guī)則的系統(tǒng),在很多方面顯出優(yōu)越性。這個(gè)時(shí)候的人工神經(jīng)網(wǎng)絡(luò),雖也被稱(chēng)作多層感知機(jī)(Multi-layer Perceptron),但實(shí)際是種只含有一層隱層節(jié)點(diǎn)的淺層模型。
20世紀(jì)90年代,各種各樣的淺層機(jī)器學(xué)習(xí)模型相繼被提出,例如支撐向量機(jī)(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。這些模型的結(jié)構(gòu)基本上可以看成帶有一層隱層節(jié)點(diǎn)(如SVM、Boosting),或沒(méi)有隱層節(jié)點(diǎn)(如LR)。這些模型無(wú)論是在理論分析還是應(yīng)用中都獲得了巨大的成功。相比之下,由于理論分析的難度大,訓(xùn)練方法又需要很多經(jīng)驗(yàn)和技巧,這個(gè)時(shí)期淺層人工神經(jīng)網(wǎng)絡(luò)反而相對(duì)沉寂。
2006年,加拿大多倫多大學(xué)教授、機(jī)器學(xué)習(xí)領(lǐng)域的泰斗Geoffrey Hinton和他的學(xué)生RuslanSalakhutdinov在《科學(xué)》上發(fā)表了一篇文章,開(kāi)啟了深度學(xué)習(xí)在學(xué)術(shù)界和工業(yè)界的浪潮。這篇文章有兩個(gè)主要觀(guān)點(diǎn):1)多隱層的人工神經(jīng)網(wǎng)絡(luò)具有優(yōu)異的特征學(xué)習(xí)能力,學(xué)習(xí)得到的特征對(duì)數(shù)據(jù)有更本質(zhì)的刻畫(huà),從而有利于可視化或分類(lèi);2)深度神經(jīng)網(wǎng)絡(luò)在訓(xùn)練上的難度,可以通過(guò)“逐層初始化”(layer-wise pre-training)來(lái)有效克服,在這篇文章中,逐層初始化是通過(guò)無(wú)監(jiān)督學(xué)習(xí)實(shí)現(xiàn)的。
當(dāng)前多數(shù)分類(lèi)、回歸等學(xué)習(xí)方法為淺層結(jié)構(gòu)算法,其局限性在于有限樣本和計(jì)算單元情況下對(duì)復(fù)雜函數(shù)的表示能力有限,針對(duì)復(fù)雜分類(lèi)問(wèn)題其泛化能力受到一定制約。深度學(xué)習(xí)可通過(guò)學(xué)習(xí)一種深層非線(xiàn)性網(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ì),是通過(guò)構(gòu)建具有很多隱層的機(jī)器學(xué)習(xí)模型和海量的訓(xùn)練數(shù)據(jù),來(lái)學(xué)習(xí)更有用的特征,從而最終提升分類(lèi)或預(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í)的重要性,也就是說(shuō),通過(guò)逐層特征變換,將樣本在原空間的特征表示變換到一個(gè)新特征空間,從而使分類(lèi)或預(yù)測(cè)更加容易。與人工規(guī)則構(gòu)造特征的方法相比,利用大數(shù)據(jù)來(lái)學(xué)習(xí)特征,更能夠刻畫(huà)數(shù)據(jù)的豐富內(nèi)在信息。
深度學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究中的一個(gè)新的領(lǐng)域,其動(dòng)機(jī)在于建立、模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它模仿人腦的機(jī)制來(lái)解釋數(shù)據(jù),例如圖像,聲音和文本。深度學(xué)習(xí)是無(wú)監(jiān)督學(xué)習(xí)的一種。
深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究。含多隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過(guò)組合低層特征形成更加抽象的高層表示屬性類(lèi)別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。
Deep learning本身算是machine learning的一個(gè)分支,簡(jiǎn)單可以理解為neural network的發(fā)展。大約二三十年前,neural network曾經(jīng)是ML領(lǐng)域特別火熱的一個(gè)方向,但是后來(lái)確慢慢淡出了,原因包括以下幾個(gè)方面:
1)比較容易過(guò)擬合,參數(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)持了下來(lái),并最終(和其它人一起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ò),只有相鄰層節(jié)點(diǎn)之間有連接,同一層以及跨層節(jié)點(diǎn)之間相互無(wú)連接,每一層可以看作是一個(gè)logistic regression模型;這種分層結(jié)構(gòu),是比較接近人類(lèi)大腦的結(jié)構(gòu)的。
而為了克服神經(jīng)網(wǎng)絡(luò)訓(xùn)練中的問(wèn)題,DL采用了與神經(jīng)網(wǎng)絡(luò)很不同的訓(xùn)練機(jī)制。傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中,采用的是back propagation的方式進(jìn)行,簡(jiǎn)單來(lái)講就是采用迭代的算法來(lái)訓(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ī)制。
深度學(xué)習(xí)的訓(xùn)練過(guò)程
使用自下上升非監(jiān)督學(xué)習(xí)(就是從底層開(kāi)始,一層一層的往頂層訓(xùn)練)
采用無(wú)標(biāo)定數(shù)據(jù)(有標(biāo)定數(shù)據(jù)也可)分層訓(xùn)練各層參數(shù),這一步可以看作是一個(gè)無(wú)監(jiān)督訓(xùn)練過(guò)程,是和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)區(qū)別最大的部分(這個(gè)過(guò)程可以看作是feature learning過(guò)程):
具體的,先用無(wú)標(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ù);
自頂向下的監(jiān)督學(xué)習(xí)(就是通過(guò)帶標(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)練過(guò)程;第一步類(lèi)似神經(jīng)網(wǎng)絡(luò)的隨機(jī)初始化初值過(guò)程,由于DL的第一步不是隨機(jī)初始化,而是通過(guò)學(xué)習(xí)輸入數(shù)據(jù)的結(jié)構(gòu)得到的,因而這個(gè)初值更接近全局最優(yōu),從而能夠取得更好的效果;所以deep learning效果好很大程度上歸功于第一步的feature learning過(guò)程。
CNNs卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是人工神經(jīng)網(wǎng)絡(luò)的一種,已成為當(dāng)前語(yǔ)音分析和圖像識(shí)別領(lǐng)域的研究熱點(diǎn)。它的權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)使之更類(lèi)似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了權(quán)值的數(shù)量。該優(yōu)點(diǎn)在網(wǎng)絡(luò)的輸入是多維圖像時(shí)表現(xiàn)的更為明顯,使圖像可以直接作為網(wǎng)絡(luò)的輸入,避免了傳統(tǒng)識(shí)別算法中復(fù)雜的特征提取和數(shù)據(jù)重建過(guò)程。卷積網(wǎng)絡(luò)是為識(shí)別二維形狀而特殊設(shè)計(jì)的一個(gè)多層感知器,這種網(wǎng)絡(luò)結(jié)構(gòu)對(duì)平移、比例縮放、傾斜或者共他形式的變形具有高度不變性。
CNNs是受早期的延時(shí)神經(jīng)網(wǎng)絡(luò)(TDNN)的影響。延時(shí)神經(jīng)網(wǎng)絡(luò)通過(guò)在時(shí)間維度上共享權(quán)值降低學(xué)習(xí)復(fù)雜度,適用于語(yǔ)音和時(shí)間序列信號(hào)的處理。
CNNs是第一個(gè)真正成功訓(xùn)練多層網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí)算法。它利用空間關(guān)系減少需要學(xué)習(xí)的參數(shù)數(shù)目以提高一般前向BP算法的訓(xùn)練性能。CNNs作為一個(gè)深度學(xué)習(xí)架構(gòu)提出是為了最小化數(shù)據(jù)的預(yù)處理要求。在CNN中,圖像的一小部分(局部感受區(qū)域)作為層級(jí)結(jié)構(gòu)的最低層的輸入,信息再依次傳輸?shù)讲煌膶樱繉油ㄟ^(guò)一個(gè)數(shù)字濾波器去獲得觀(guān)測(cè)數(shù)據(jù)的最顯著的特征。這個(gè)方法能夠獲取對(duì)平移、縮放和旋轉(zhuǎn)不變的觀(guān)測(cè)數(shù)據(jù)的顯著特征,因?yàn)閳D像的局部感受區(qū)域允許神經(jīng)元或者處理單元可以訪(fǎng)問(wèn)到最基礎(chǔ)的特征,例如定向邊緣或者角點(diǎn)。
卷積神經(jīng)網(wǎng)絡(luò)的歷史
1962年Hubel和Wiesel通過(guò)對(duì)貓視覺(jué)皮層細(xì)胞的研究,提出了感受野(receptive field)的概念,1984年日本學(xué)者Fukushima基于感受野概念提出的神經(jīng)認(rèn)知機(jī)(neocognitron)可以看作是卷積神經(jīng)網(wǎng)絡(luò)的第一個(gè)實(shí)現(xiàn)網(wǎng)絡(luò),也是感受野概念在人工神經(jīng)網(wǎng)絡(luò)領(lǐng)域的首次應(yīng)用。神經(jīng)認(rèn)知機(jī)將一個(gè)視覺(jué)模式分解成許多子模式(特征),然后進(jìn)入分層遞階式相連的特征平面進(jìn)行處理,它試圖將視覺(jué)系統(tǒng)模型化,使其能夠在即使物體有位移或輕微變形的時(shí)候,也能完成識(shí)別。
通常神經(jīng)認(rèn)知機(jī)包含兩類(lèi)神經(jīng)元,即承擔(dān)特征抽取的S-元和抗變形的C-元。S-元中涉及兩個(gè)重要參數(shù),即感受野與閾值參數(shù),前者確定輸入連接的數(shù)目,后者則控制對(duì)特征子模式的反應(yīng)程度。許多學(xué)者一直致力于提高神經(jīng)認(rèn)知機(jī)的性能的研究:在傳統(tǒng)的神經(jīng)認(rèn)知機(jī)中,每個(gè)S-元的感光區(qū)中由C-元帶來(lái)的視覺(jué)模糊量呈正態(tài)分布。如果感光區(qū)的邊緣所產(chǎn)生的模糊效果要比中央來(lái)得大,S-元將會(huì)接受這種非正態(tài)模糊所導(dǎo)致的更大的變形容忍性。我們希望得到的是,訓(xùn)練模式與變形刺激模式在感受野的邊緣與其中心所產(chǎn)生的效果之間的差異變得越來(lái)越大。為了有效地形成這種非正態(tài)模糊,F(xiàn)ukushima提出了帶雙C-元層的改進(jìn)型神經(jīng)認(rèn)知機(jī)。
Van Ooyen和Niehuis為提高神經(jīng)認(rèn)知機(jī)的區(qū)別能力引入了一個(gè)新的參數(shù)。事實(shí)上,該參數(shù)作為一種抑制信號(hào),抑制了神經(jīng)元對(duì)重復(fù)激勵(lì)特征的激勵(lì)。多數(shù)神經(jīng)網(wǎng)絡(luò)在權(quán)值中記憶訓(xùn)練信息。根據(jù)Hebb學(xué)習(xí)規(guī)則,某種特征訓(xùn)練的次數(shù)越多,在以后的識(shí)別過(guò)程中就越容易被檢測(cè)。也有學(xué)者將進(jìn)化計(jì)算理論與神經(jīng)認(rèn)知機(jī)結(jié)合,通過(guò)減弱對(duì)重復(fù)性激勵(lì)特征的訓(xùn)練學(xué)習(xí),而使得網(wǎng)絡(luò)注意那些不同的特征以助于提高區(qū)分能力。上述都是神經(jīng)認(rèn)知機(jī)的發(fā)展過(guò)程,而卷積神經(jīng)網(wǎng)絡(luò)可看作是神經(jīng)認(rèn)知機(jī)的推廣形式,神經(jīng)認(rèn)知機(jī)是卷積神經(jīng)網(wǎng)絡(luò)的一種特例。
卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)是一個(gè)多層的神經(jīng)網(wǎng)絡(luò),每層由多個(gè)二維平面組成,而每個(gè)平面由多個(gè)獨(dú)立神經(jīng)元組成。
卷積神經(jīng)網(wǎng)絡(luò)的概念示范:輸入圖像通過(guò)和三個(gè)可訓(xùn)練的濾波器和可加偏置進(jìn)行卷積,濾波過(guò)程如圖一,卷積后在C1層產(chǎn)生三個(gè)特征映射圖,然后特征映射圖中每組的四個(gè)像素再進(jìn)行求和,加權(quán)值,加偏置,通過(guò)一個(gè)Sigmoid函數(shù)得到三個(gè)S2層的特征映射圖。這些映射圖再進(jìn)過(guò)濾波得到C3層。這個(gè)層級(jí)結(jié)構(gòu)再和S2一樣產(chǎn)生S4。最終,這些像素值被光柵化,并連接成一個(gè)向量輸入到傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),得到輸出。
一般地,C層為特征提取層,每個(gè)神經(jīng)元的輸入與前一層的局部感受野相連,并提取該局部的特征,一旦該局部特征被提取后,它與其他特征間的位置關(guān)系也隨之確定下來(lái);S層是特征映射層,網(wǎng)絡(luò)的每個(gè)計(jì)算層由多個(gè)特征映射組成,每個(gè)特征映射為一個(gè)平面,平面上所有神經(jīng)元的權(quán)值相等。特征映射結(jié)構(gòu)采用影響函數(shù)核小的sigmoid函數(shù)作為卷積網(wǎng)絡(luò)的激活函數(shù),使得特征映射具有位移不變性。
此外,由于一個(gè)映射面上的神經(jīng)元共享權(quán)值,因而減少了網(wǎng)絡(luò)自由參數(shù)的個(gè)數(shù),降低了網(wǎng)絡(luò)參數(shù)選擇的復(fù)雜度。卷積神經(jīng)網(wǎng)絡(luò)中的每一個(gè)特征提取層(C-層)都緊跟著一個(gè)用來(lái)求局部平均與二次提取的計(jì)算層(S-層),這種特有的兩次特征提取結(jié)構(gòu)使網(wǎng)絡(luò)在識(shí)別時(shí)對(duì)輸入樣本有較高的畸變?nèi)萑棠芰Α?/p>
卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程
神經(jīng)網(wǎng)絡(luò)用于模式識(shí)別的主流是有指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò),無(wú)指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò)更多的是用于聚類(lèi)分析。對(duì)于有指導(dǎo)的模式識(shí)別,由于任一樣本的類(lèi)別是已知的,樣本在空間的分布不再是依據(jù)其自然分布傾向來(lái)劃分,而是要根據(jù)同類(lèi)樣本在空間的分布及不同類(lèi)樣本之間的分離程度找一種適當(dāng)?shù)目臻g劃分方法,或者找到一個(gè)分類(lèi)邊界,使得不同類(lèi)樣本分別位于不同的區(qū)域內(nèi)。這就需要一個(gè)長(zhǎng)時(shí)間且復(fù)雜的學(xué)習(xí)過(guò)程,不斷調(diào)整用以劃分樣本空間的分類(lèi)邊界的位置,使盡可能少的樣本被劃分到非同類(lèi)區(qū)域中。
卷積網(wǎng)絡(luò)在本質(zhì)上是一種輸入到輸出的映射,它能夠?qū)W習(xí)大量的輸入與輸出之間的映射關(guān)系,而不需要任何輸入和輸出之間的精確的數(shù)學(xué)表達(dá)式,只要用已知的模式對(duì)卷積網(wǎng)絡(luò)加以訓(xùn)練,網(wǎng)絡(luò)就具有輸入輸出對(duì)之間的映射能力。卷積網(wǎng)絡(luò)執(zhí)行的是有導(dǎo)師訓(xùn)練,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對(duì)構(gòu)成的。所有這些向量對(duì),都應(yīng)該是來(lái)源于網(wǎng)絡(luò)即將模擬的系統(tǒng)的實(shí)際“運(yùn)行”結(jié)果。它們可以是從實(shí)際運(yùn)行系統(tǒng)中采集來(lái)的。在開(kāi)始訓(xùn)練前,所有的權(quán)都應(yīng)該用一些不同的小隨機(jī)數(shù)進(jìn)行初始化。“小隨機(jī)數(shù)”用來(lái)保證網(wǎng)絡(luò)不會(huì)因權(quán)值過(guò)大而進(jìn)入飽和狀態(tài),從而導(dǎo)致訓(xùn)練失敗;“不同”用來(lái)保證網(wǎng)絡(luò)可以正常地學(xué)習(xí)。實(shí)際上,如果用相同的數(shù)去初始化權(quán)矩陣,則網(wǎng)絡(luò)無(wú)能力學(xué)習(xí)。
訓(xùn)練算法與傳統(tǒng)的BP算法差不多。主要包括4步,這4步被分為兩個(gè)階段:
第一階段,向前傳播階段:
a)從樣本集中取一個(gè)樣本(X,Yp),將X輸入網(wǎng)絡(luò);
b)計(jì)算相應(yīng)的實(shí)際輸出Op。
在此階段,信息從輸入層經(jīng)過(guò)逐級(jí)的變換,傳送到輸出層。這個(gè)過(guò)程也是網(wǎng)絡(luò)在完成訓(xùn)練后正常運(yùn)行時(shí)執(zhí)行的過(guò)程。在此過(guò)程中,網(wǎng)絡(luò)執(zhí)行的是計(jì)算(實(shí)際上就是輸入與每層的權(quán)值矩陣相點(diǎn)乘,得到最后的輸出結(jié)果):Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n))
第二階段,向后傳播階段
a)算實(shí)際輸出Op與相應(yīng)的理想輸出Yp的差;
b)按極小化誤差的方法反向傳播調(diào)整權(quán)矩陣。
卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點(diǎn)
卷積神經(jīng)網(wǎng)絡(luò)CNN主要用來(lái)識(shí)別位移、縮放及其他形式扭曲不變性的二維圖形。由于CNN的特征檢測(cè)層通過(guò)訓(xùn)練數(shù)據(jù)進(jìn)行學(xué)習(xí),所以在使用CNN時(shí),避免了顯式的特征抽取,而隱式地從訓(xùn)練數(shù)據(jù)中進(jìn)行學(xué)習(xí);再者由于同一特征映射面上的神經(jīng)元權(quán)值相同,所以網(wǎng)絡(luò)可以并行學(xué)習(xí),這也是卷積網(wǎng)絡(luò)相對(duì)于神經(jīng)元彼此相連網(wǎng)絡(luò)的一大優(yōu)勢(shì)。卷積神經(jīng)網(wǎng)絡(luò)以其局部權(quán)值共享的特殊結(jié)構(gòu)在語(yǔ)音識(shí)別和圖像處理方面有著獨(dú)特的優(yōu)越性,其布局更接近于實(shí)際的生物神經(jīng)網(wǎng)絡(luò),權(quán)值共享降低了網(wǎng)絡(luò)的復(fù)雜性,特別是多維輸入向量的圖像可以直接輸入網(wǎng)絡(luò)這一特點(diǎn)避免了特征提取和分類(lèi)過(guò)程中數(shù)據(jù)重建的復(fù)雜度。
流的分類(lèi)方式幾乎都是基于統(tǒng)計(jì)特征的,這就意味著在進(jìn)行分辨前必須提取某些特征。然而,顯式的特征提取并不容易,在一些應(yīng)用問(wèn)題中也并非總是可靠的。卷積神經(jīng)網(wǎng)絡(luò),它避免了顯式的特征取樣,隱式地從訓(xùn)練數(shù)據(jù)中進(jìn)行學(xué)習(xí)。這使得卷積神經(jīng)網(wǎng)絡(luò)明顯有別于其他基于神經(jīng)網(wǎng)絡(luò)的分類(lèi)器,通過(guò)結(jié)構(gòu)重組和減少權(quán)值將特征提取功能融合進(jìn)多層感知器。它可以直接處理灰度圖片,能夠直接用于處理基于圖像的分類(lèi)。
卷積網(wǎng)絡(luò)較一般神經(jīng)網(wǎng)絡(luò)在圖像處理方面有如下優(yōu)點(diǎn):
a)輸入圖像和網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)能很好的吻合;
b)特征提取和模式分類(lèi)同時(shí)進(jìn)行,并同時(shí)在訓(xùn)練中產(chǎn)生;c)權(quán)重共享可以減少網(wǎng)絡(luò)的訓(xùn)練參數(shù),使神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)變得更簡(jiǎn)單,適應(yīng)性更強(qiáng)。
-
傳感器
+關(guān)注
關(guān)注
2550文章
51035瀏覽量
753084 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132567 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5500瀏覽量
121113
原文標(biāo)題:深度學(xué)習(xí)詳解
文章出處:【微信號(hào):WW_CGQJS,微信公眾號(hào):傳感器技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論