在如今的網(wǎng)絡(luò)時代,錯綜復(fù)雜的大數(shù)據(jù)和網(wǎng)絡(luò)環(huán)境,讓傳統(tǒng)信息處理理論、人工智能與人工神經(jīng)網(wǎng)絡(luò)都面臨巨大的挑戰(zhàn)。近些年,深度學(xué)習(xí)逐漸走進人們的視線,通過深度學(xué)習(xí)解決若干問題的案例越來越多。一些傳統(tǒng)的圖像處理技術(shù)也可以通過深度學(xué)習(xí)來獲得更優(yōu)異的效果,比如去噪、超分辨率和跟蹤算法等。為了跟上時代的步伐,必須對深度學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)技術(shù)有所學(xué)習(xí)和研究。本文將介紹深度學(xué)習(xí)技術(shù)、神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)以及它們在相關(guān)領(lǐng)域中的應(yīng)用。
1、什么是深度學(xué)習(xí)?
深度學(xué)習(xí)(DL,Deep Learning)是機器學(xué)習(xí)(ML,Machine Learning)領(lǐng)域中一個新的研究方向。深度學(xué)習(xí)是學(xué)習(xí)樣本數(shù)據(jù)的內(nèi)在規(guī)律和表示層次,這些學(xué)習(xí)過程中獲得的信息對諸如文字、圖像和聲音等數(shù)據(jù)的解釋有很大的幫助。它的最終目標是讓機器能夠像人一樣具有分析學(xué)習(xí)能力,能夠識別文字、圖像和聲音等數(shù)據(jù)。深度學(xué)習(xí)是一個復(fù)雜的機器學(xué)習(xí)算法,在語音和圖像識別方面取得的效果,遠遠超過先前相關(guān)技術(shù)。
深度學(xué)習(xí)在搜索技術(shù)、數(shù)據(jù)挖掘、機器學(xué)習(xí)、圖像識別與處理、機器翻譯、語音識別、人機交互、醫(yī)學(xué)影像分析、疾病診斷、金融風(fēng)險評估、信用評級等多個領(lǐng)域都取得了很多成果。深度學(xué)習(xí)使機器能模仿人類的視聽和思考等活動,解決了很多復(fù)雜的模式識別難題,使得人工智能相關(guān)技術(shù)取得了長足的進步。
2、深度學(xué)習(xí)的思想
假設(shè)我們有一個系統(tǒng)S,它有n層(S1,…Sn),它的輸入是I,輸出是O,形象地表示為:I =>S1=>S2=>…..=>Sn => O,如果輸出O等于輸入I,即輸入I經(jīng)過這個系統(tǒng)變化之后沒有任何的信息損失,保持了不變,這意味著輸入I經(jīng)過每一層Si都沒有任何的信息損失,即在任何一層Si,它都是原有信息(即輸入I)的另外一種表示。我們需要自動地學(xué)習(xí)特征,假設(shè)有一堆輸入I(如一堆圖像或者文本),我們設(shè)計了一個系統(tǒng)S(有n層),通過調(diào)整系統(tǒng)中參數(shù),使得它的輸出仍然是輸入I,那么我們就可以自動地獲取得到輸入I的一系列層次特征,即S1,…, Sn。
對于深度學(xué)習(xí)來說,其思想就是堆疊多個層,也就是說這一層的輸出作為下一層的輸入。通過這種方式,就可以實現(xiàn)對輸入信息進行分級表達了。另外,前面是假設(shè)輸出嚴格地等于輸入,這個限制太嚴格,我們可以略微地放松這個限制,例如我們只要使得輸入與輸出的差別盡可能地小即可。
3、深度學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)
深度學(xué)習(xí)是機器學(xué)習(xí)研究中的一個新的領(lǐng)域,其動機在于建立、模擬人腦進行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它模仿人腦的機制來解釋數(shù)據(jù),例如圖像,聲音和文本。深度學(xué)習(xí)是無監(jiān)督學(xué)習(xí)的一種。深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究。含多隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。
深度學(xué)習(xí)本身算是機器學(xué)習(xí)的一個分支,簡單可以理解為神經(jīng)網(wǎng)絡(luò)的發(fā)展。大約二三十年前,神經(jīng)網(wǎng)絡(luò)曾經(jīng)是機器學(xué)習(xí)領(lǐng)域特別火熱的一個方向,但是后來卻慢慢淡出了,原因包括以下幾個方面:
1)BP算法作為傳統(tǒng)訓(xùn)練多層網(wǎng)絡(luò)的典型算法,實際上僅含幾層網(wǎng)絡(luò),該訓(xùn)練方法就已經(jīng)很不理想。深度結(jié)構(gòu)(涉及多個非線性處理單元層)非凸目標代價函數(shù)中普遍存在的局部最小是訓(xùn)練困難的主要來源。 2)對于一個深度網(wǎng)絡(luò)(7層以上),殘差傳播到最前面的層已經(jīng)變得太小,出現(xiàn)所謂的gradient diffusion(梯度擴散)。 3)一般,我們只能用有標簽的數(shù)據(jù)來訓(xùn)練:但大部分的數(shù)據(jù)是沒標簽的,而大腦可以從沒有標簽的的數(shù)據(jù)中學(xué)習(xí);
深度學(xué)習(xí)與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)之間有相同的地方也有很多不同。
二者的相同在于深度學(xué)習(xí)采用了神經(jīng)網(wǎng)絡(luò)相似的分層結(jié)構(gòu),系統(tǒng)由包括輸入層、隱層(多層)、輸出層組成的多層網(wǎng)絡(luò),只有相鄰層節(jié)點之間有連接,同一層以及跨層節(jié)點之間相互無連接,每一層可以看作是一個邏輯回歸模型;這種分層結(jié)構(gòu),是比較接近人類大腦的結(jié)構(gòu)的。
為了克服神經(jīng)網(wǎng)絡(luò)訓(xùn)練中的問題,深度學(xué)習(xí)采用了與神經(jīng)網(wǎng)絡(luò)很不同的訓(xùn)練機制。2006年,hinton提出了在非監(jiān)督數(shù)據(jù)上建立多層神經(jīng)網(wǎng)絡(luò)的一個有效方法,簡單的說,分為兩步,一是每次訓(xùn)練一層網(wǎng)絡(luò),二是調(diào)優(yōu),使原始表示x向上生成的高級表示r和該高級表示r向下生成的x'盡可能一致,方法是:
1)首先逐層構(gòu)建單層神經(jīng)元,這樣每次都是訓(xùn)練一個單層網(wǎng)絡(luò)。
2)當(dāng)所有層訓(xùn)練完后,Hinton使用wake-sleep算法進行調(diào)優(yōu)。
將除最頂層的其它層間的權(quán)重變?yōu)殡p向的,這樣最頂層仍然是一個單層神經(jīng)網(wǎng)絡(luò),而其它層則變?yōu)榱藞D模型。向上的權(quán)重用于“認知”,向下的權(quán)重用于“生成”。然后使用Wake-Sleep算法調(diào)整所有的權(quán)重。讓認知和生成達成一致,也就是保證生成的最頂層表示能夠盡可能正確的復(fù)原底層的結(jié)點。比如頂層的一個結(jié)點表示人臉,那么所有人臉的圖像應(yīng)該激活這個結(jié)點,并且這個結(jié)果向下生成的圖像應(yīng)該能夠表現(xiàn)為一個大概的人臉圖像。Wake-Sleep算法分為醒(wake)和睡(sleep)兩個部分:
1)wake階段:認知過程,通過外界的特征和向上的權(quán)重(認知權(quán)重)產(chǎn)生每一層的抽象表示(結(jié)點狀態(tài)),并且使用梯度下降修改層間的下行權(quán)重(生成權(quán)重)。也就是“如果現(xiàn)實跟我想象的不一樣,改變我的權(quán)重使得我想象的東西就是這樣的”。
2)sleep階段:生成過程,通過頂層表示(醒時學(xué)得的概念)和向下權(quán)重,生成底層的狀態(tài),同時修改層間向上的權(quán)重。也就是“如果夢中的景象不是我腦中的相應(yīng)概念,改變我的認知權(quán)重使得這種景象在我看來就是這個概念”。
4、深度學(xué)習(xí)訓(xùn)練過程
深度學(xué)習(xí)訓(xùn)練過程有以下兩步。
4.1、先使用自下上升非監(jiān)督學(xué)習(xí)(就是從底層開始,一層一層的往頂層訓(xùn)練)
采用無標定數(shù)據(jù)(有標定數(shù)據(jù)也可)分層訓(xùn)練各層參數(shù),這一步可以看作是一個無監(jiān)督訓(xùn)練過程,是和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)區(qū)別最大的部分(這個過程可以看作是feature learning過程)。具體的,先用無標定數(shù)據(jù)訓(xùn)練第一層,訓(xùn)練時先學(xué)習(xí)第一層的參數(shù)(這一層可以看作是得到一個使得輸出和輸入差別最小的三層神經(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ù)。
4.2、后自頂向下的監(jiān)督學(xué)習(xí)(就是通過帶標簽的數(shù)據(jù)去訓(xùn)練,誤差自頂向下傳輸,對網(wǎng)絡(luò)進行微調(diào))
基于第一步得到的各層參數(shù)進一步fine-tune整個多層模型的參數(shù),這一步是一個有監(jiān)督訓(xùn)練過程;第一步類似神經(jīng)網(wǎng)絡(luò)的隨機初始化初值過程,由于DL的第一步不是隨機初始化,而是通過學(xué)習(xí)輸入數(shù)據(jù)的結(jié)構(gòu)得到的,因而這個初值更接近全局最優(yōu),從而能夠取得更好的效果;所以deep learning效果好很大程度上歸功于第一步的feature learning過程。
5、卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是人工神經(jīng)網(wǎng)絡(luò)的一種,已成為當(dāng)前語音分析和圖像識別領(lǐng)域的研究熱點。它的權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)使之更類似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了權(quán)值的數(shù)量。該優(yōu)點在網(wǎng)絡(luò)的輸入是多維圖像時表現(xiàn)的更為明顯,使圖像可以直接作為網(wǎng)絡(luò)的輸入,避免了傳統(tǒng)識別算法中復(fù)雜的特征提取和數(shù)據(jù)重建過程。卷積網(wǎng)絡(luò)是為識別二維形狀而特殊設(shè)計的一個多層感知器,這種網(wǎng)絡(luò)結(jié)構(gòu)對平移、比例縮放、傾斜或者其他形式的變形具有高度不變性。
CNNs是受早期的延時神經(jīng)網(wǎng)絡(luò)(TDNN)的影響。延時神經(jīng)網(wǎng)絡(luò)通過在時間維度上共享權(quán)值降低學(xué)習(xí)復(fù)雜度,適用于語音和時間序列信號的處理。
CNNs是第一個真正成功訓(xùn)練多層網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí)算法。它利用空間關(guān)系減少需要學(xué)習(xí)的參數(shù)數(shù)目以提高一般前向BP算法的訓(xùn)練性能。CNNs作為一個深度學(xué)習(xí)架構(gòu)提出是為了最小化數(shù)據(jù)的預(yù)處理要求。在CNN中,圖像的一小部分(局部感受區(qū)域)作為層級結(jié)構(gòu)的最低層的輸入,信息再依次傳輸?shù)讲煌膶樱繉油ㄟ^一個數(shù)字濾波器去獲得觀測數(shù)據(jù)的最顯著的特征。這個方法能夠獲取對平移、縮放和旋轉(zhuǎn)不變的觀測數(shù)據(jù)的顯著特征,因為圖像的局部感受區(qū)域允許神經(jīng)元或者處理單元可以訪問到最基礎(chǔ)的特征,例如定向邊緣或者角點。
5.1、卷積神經(jīng)網(wǎng)絡(luò)的歷史
1962年Hubel和Wiesel通過對貓視覺皮層細胞的研究,提出了感受野(receptive field)的概念,1984年日本學(xué)者Fukushima基于感受野概念提出的神經(jīng)認知機(neocognitron)可以看作是卷積神經(jīng)網(wǎng)絡(luò)的第一個實現(xiàn)網(wǎng)絡(luò),也是感受野概念在人工神經(jīng)網(wǎng)絡(luò)領(lǐng)域的首次應(yīng)用。神經(jīng)認知機將一個視覺模式分解成許多子模式(特征),然后進入分層遞階式相連的特征平面進行處理,它試圖將視覺系統(tǒng)模型化,使其能夠在即使物體有位移或輕微變形的時候,也能完成識別。
通常神經(jīng)認知機包含兩類神經(jīng)元,即承擔(dān)特征抽取的S-元和抗變形的C-元。S-元中涉及兩個重要參數(shù),即感受野與閾值參數(shù),前者確定輸入連接的數(shù)目,后者則控制對特征子模式的反應(yīng)程度。許多學(xué)者一直致力于提高神經(jīng)認知機的性能的研究:在傳統(tǒng)的神經(jīng)認知機中,每個S-元的感光區(qū)中由C-元帶來的視覺模糊量呈正態(tài)分布。如果感光區(qū)的邊緣所產(chǎn)生的模糊效果要比中央來得大,S-元將會接受這種非正態(tài)模糊所導(dǎo)致的更大的變形容忍性。我們希望得到的是,訓(xùn)練模式與變形刺激模式在感受野的邊緣與其中心所產(chǎn)生的效果之間的差異變得越來越大。為了有效地形成這種非正態(tài)模糊,F(xiàn)ukushima提出了帶雙C-元層的改進型神經(jīng)認知機。
Van Ooyen和Niehuis為提高神經(jīng)認知機的區(qū)別能力引入了一個新的參數(shù)。事實上,該參數(shù)作為一種抑制信號,抑制了神經(jīng)元對重復(fù)激勵特征的激勵。多數(shù)神經(jīng)網(wǎng)絡(luò)在權(quán)值中記憶訓(xùn)練信息。根據(jù)Hebb學(xué)習(xí)規(guī)則,某種特征訓(xùn)練的次數(shù)越多,在以后的識別過程中就越容易被檢測。也有學(xué)者將進化計算理論與神經(jīng)認知機結(jié)合,通過減弱對重復(fù)性激勵特征的訓(xùn)練學(xué)習(xí),而使得網(wǎng)絡(luò)注意那些不同的特征以助于提高區(qū)分能力。上述都是神經(jīng)認知機的發(fā)展過程,而卷積神經(jīng)網(wǎng)絡(luò)可看作是神經(jīng)認知機的推廣形式,神經(jīng)認知機是卷積神經(jīng)網(wǎng)絡(luò)的一種特例。
5.2、卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)是一個多層的神經(jīng)網(wǎng)絡(luò),每層由多個二維平面組成,而每個平面由多個獨立神經(jīng)元組成。
卷積神經(jīng)網(wǎng)絡(luò)的概念示范見上圖,輸入圖像通過和三個可訓(xùn)練的濾波器和可加偏置進行卷積,濾波過程如圖一,卷積后在C1層產(chǎn)生三個特征映射圖,然后特征映射圖中每組的四個像素再進行求和,加權(quán)值,加偏置,通過一個Sigmoid函數(shù)得到三個S2層的特征映射圖。這些映射圖再進過濾波得到C3層。這個層級結(jié)構(gòu)再和S2一樣產(chǎn)生S4。最終,這些像素值被光柵化,并連接成一個向量輸入到傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),得到輸出。
一般地,C層為特征提取層,每個神經(jīng)元的輸入與前一層的局部感受野相連,并提取該局部的特征,一旦該局部特征被提取后,它與其他特征間的位置關(guān)系也隨之確定下來;S層是特征映射層,網(wǎng)絡(luò)的每個計算層由多個特征映射組成,每個特征映射為一個平面,平面上所有神經(jīng)元的權(quán)值相等。特征映射結(jié)構(gòu)采用影響函數(shù)核小的sigmoid函數(shù)作為卷積網(wǎng)絡(luò)的激活函數(shù),使得特征映射具有位移不變性。
此外,由于一個映射面上的神經(jīng)元共享權(quán)值,因而減少了網(wǎng)絡(luò)自由參數(shù)的個數(shù),降低了網(wǎng)絡(luò)參數(shù)選擇的復(fù)雜度。卷積神經(jīng)網(wǎng)絡(luò)中的每一個特征提取層(C-層)都緊跟著一個用來求局部平均與二次提取的計算層(S-層),這種特有的兩次特征提取結(jié)構(gòu)使網(wǎng)絡(luò)在識別時對輸入樣本有較高的畸變?nèi)萑棠芰Α?/p>
5.3、關(guān)于參數(shù)減少與權(quán)值共享
上面聊到,好像CNN一個牛逼的地方就在于通過感受野和權(quán)值共享減少了神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)的個數(shù)。那究竟是啥的呢?
下圖左:如果我們有1000x1000像素的圖像,有1百萬個隱層神經(jīng)元,那么他們?nèi)B接的話(每個隱層神經(jīng)元都連接圖像的每一個像素點),就有1000x1000x1000000=10^12個連接,也就是10^12個權(quán)值參數(shù)。然而圖像的空間聯(lián)系是局部的,就像人是通過一個局部的感受野去感受外界圖像一樣,每一個神經(jīng)元都不需要對全局圖像做感受,每個神經(jīng)元只感受局部的圖像區(qū)域,然后在更高層,將這些感受不同局部的神經(jīng)元綜合起來就可以得到全局的信息了。這樣,我們就可以減少連接的數(shù)目,也就是減少神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的權(quán)值參數(shù)的個數(shù)了。如下圖右:假如局部感受野是10x10,隱層每個感受野只需要和這10x10的局部圖像相連接,所以1百萬個隱層神經(jīng)元就只有一億個連接,即10^8個參數(shù)。比原來減少了四個0(數(shù)量級),這樣訓(xùn)練起來就沒那么費力了,但還是感覺很多的啊,那還有啥辦法沒?
我們知道,隱含層的每一個神經(jīng)元都連接10x10個圖像區(qū)域,也就是說每一個神經(jīng)元存在10x10=100個連接權(quán)值參數(shù)。那如果我們每個神經(jīng)元這100個參數(shù)是相同的呢?也就是說每個神經(jīng)元用的是同一個卷積核去卷積圖像。這樣我們就只有多少個參數(shù)?只有100個參數(shù)啊!不管你隱層的神經(jīng)元個數(shù)有多少,兩層間的連接我只有100個參數(shù)啊!這就是權(quán)值共享啊。
假如一種濾波器,也就是一種卷積核就是提出圖像的一種特征,例如某個方向的邊緣。那么我們需要提取不同的特征,怎么辦,加多幾種濾波器不就行了嗎?對了。所以假設(shè)我們加到100種濾波器,每種濾波器的參數(shù)不一樣,表示它提出輸入圖像的不同特征,例如不同的邊緣。這樣每種濾波器去卷積圖像就得到對圖像的不同特征的放映,我們稱之為Feature Map。所以100種卷積核就有100個Feature Map。這100個Feature Map就組成了一層神經(jīng)元。我們這一層有多少個參數(shù)了?100種卷積核x每種卷積核共享100個參數(shù)=100x100=10K,也就是1萬個參數(shù)。見下圖右:不同的顏色表達不同的濾波器。
剛才說隱層的參數(shù)個數(shù)和隱層的神經(jīng)元個數(shù)無關(guān),只和濾波器的大小和濾波器種類的多少有關(guān)。那么隱層的神經(jīng)元個數(shù)怎么確定呢?它和原圖像,也就是輸入的大小(神經(jīng)元個數(shù))、濾波器的大小和濾波器在圖像中的滑動步長都有關(guān)!例如,我的圖像是1000x1000像素,而濾波器大小是10x10,假設(shè)濾波器沒有重疊,也就是步長為10,這樣隱層的神經(jīng)元個數(shù)就是(1000x1000 )/ (10x10)=100x100個神經(jīng)元了。注意了,這只是一種濾波器,也就是一個Feature Map的神經(jīng)元個數(shù)哦,如果100個Feature Map就是100倍了。由此可見,圖像越大,神經(jīng)元個數(shù)和需要訓(xùn)練的權(quán)值參數(shù)個數(shù)的差距就越大。
需要注意的一點是,上面的討論都沒有考慮每個神經(jīng)元的偏置部分。所以權(quán)值個數(shù)需要加1 。這個也是同一種濾波器共享的。
總之,卷積網(wǎng)絡(luò)的核心思想是:將局部感受野、權(quán)值共享(或者權(quán)值復(fù)制)以及時間或空間亞采樣這三種結(jié)構(gòu)思想結(jié)合起來獲得了某種程度的位移、尺度、形變不變性。
5.4、一個典型的例子說明
一種典型的用來識別數(shù)字的卷積網(wǎng)絡(luò)是LeNet-5。當(dāng)年美國大多數(shù)銀行就是用它來識別支票上面的手寫數(shù)字的。能夠達到這種商用的地步,它的準確性可想而知。畢竟目前學(xué)術(shù)界和工業(yè)界的結(jié)合是最受爭議的。
那下面咱們也用這個例子來說明下。
LeNet-5共有7層,不包含輸入,每層都包含可訓(xùn)練參數(shù)(連接權(quán)重)。輸入圖像為32*32大小。這要比Mnist數(shù)據(jù)庫(一個公認的手寫數(shù)據(jù)庫)中最大的字母還大。這樣做的原因是希望潛在的明顯特征如筆畫斷電或角點能夠出現(xiàn)在最高層特征監(jiān)測子感受野的中心。
我們先要明確一點:每個層有多個Feature Map,每個Feature Map通過一種卷積濾波器提取輸入的一種特征,然后每個Feature Map有多個神經(jīng)元。
C1層是一個卷積層(為什么是卷積?卷積運算一個重要的特點就是,通過卷積運算,可以使原信號特征增強,并且降低噪音),由6個特征圖Feature Map構(gòu)成。特征圖中每個神經(jīng)元與輸入中5*5的鄰域相連。特征圖的大小為28*28,這樣能防止輸入的連接掉到邊界之外(是為了BP反饋時的計算,不致梯度損失,個人見解)。C1有156個可訓(xùn)練參數(shù)(每個濾波器5*5=25個unit參數(shù)和一個bias參數(shù),一共6個濾波器,共(5*5+1)*6=156個參數(shù)),共156*(28*28)=122,304個連接。
S2層是一個下采樣層(為什么是下采樣?利用圖像局部相關(guān)性的原理,對圖像進行子抽樣,可以減少數(shù)據(jù)處理量同時保留有用信息),有6個14*14的特征圖。特征圖中的每個單元與C1中相對應(yīng)特征圖的2*2鄰域相連接。S2層每個單元的4個輸入相加,乘以一個可訓(xùn)練參數(shù),再加上一個可訓(xùn)練偏置。結(jié)果通過sigmoid函數(shù)計算。可訓(xùn)練系數(shù)和偏置控制著sigmoid函數(shù)的非線性程度。如果系數(shù)比較小,那么運算近似于線性運算,亞采樣相當(dāng)于模糊圖像。如果系數(shù)比較大,根據(jù)偏置的大小亞采樣可以被看成是有噪聲的“或”運算或者有噪聲的“與”運算。每個單元的2*2感受野并不重疊,因此S2中每個特征圖的大小是C1中特征圖大小的1/4(行和列各1/2)。S2層有12個可訓(xùn)練參數(shù)和5880個連接。
卷積和子采樣過程如上所示,卷積過程包括:用一個可訓(xùn)練的濾波器fx去卷積一個輸入的圖像(第一階段是輸入的圖像,后面的階段就是卷積特征map了),然后加一個偏置bx,得到卷積層Cx。子采樣過程包括:每鄰域四個像素求和變?yōu)橐粋€像素,然后通過標量Wx+1加權(quán),再增加偏置bx+1,然后通過一個sigmoid激活函數(shù),產(chǎn)生一個大概縮小四倍的特征映射圖Sx+1。
所以從一個平面到下一個平面的映射可以看作是作卷積運算,S-層可看作是模糊濾波器,起到二次特征提取的作用。隱層與隱層之間空間分辨率遞減,而每層所含的平面數(shù)遞增,這樣可用于檢測更多的特征信息。
C3層也是一個卷積層,它同樣通過5x5的卷積核去卷積層S2,然后得到的特征map就只有10x10個神經(jīng)元,但是它有16種不同的卷積核,所以就存在16個特征map了。這里需要注意的一點是:C3中的每個特征map是連接到S2中的所有6個或者幾個特征map的,表示本層的特征map是上一層提取到的特征map的不同組合。
剛才說C3中每個特征圖由S2中所有6個或者幾個特征map組合而成。為什么不把S2中的每個特征圖連接到每個C3的特征圖呢?原因有2點。第一,不完全的連接機制將連接的數(shù)量保持在合理的范圍內(nèi)。第二,也是最重要的,其破壞了網(wǎng)絡(luò)的對稱性。由于不同的特征圖有不同的輸入,所以迫使他們抽取不同的特征。
例如,存在的一個方式是:C3的前6個特征圖以S2中3個相鄰的特征圖子集為輸入。接下來6個特征圖以S2中4個相鄰特征圖子集為輸入。然后的3個以不相鄰的4個特征圖子集為輸入。最后一個將S2中所有特征圖為輸入。這樣C3層有1516個可訓(xùn)練參數(shù)和151600個連接。
S4層是一個下采樣層,由16個5*5大小的特征圖構(gòu)成。特征圖中的每個單元與C3中相應(yīng)特征圖的2*2鄰域相連接,跟C1和S2之間的連接一樣。S4層有32個可訓(xùn)練參數(shù)(每個特征圖1個因子和一個偏置)和2000個連接。
C5層是一個卷積層,有120個特征圖。每個單元與S4層的全部16個單元的5*5鄰域相連。由于S4層特征圖的大小也為5*5(同濾波器一樣),故C5特征圖的大小為1*1:這構(gòu)成了S4和C5之間的全連接。之所以仍將C5標示為卷積層而非全相聯(lián)層,是因為如果LeNet-5的輸入變大,而其他的保持不變,那么此時特征圖的維數(shù)就會比1*1大。C5層有48120個可訓(xùn)練連接。
F6層有84個單元(之所以選這個數(shù)字的原因來自于輸出層的設(shè)計),與C5層全相連。有10164個可訓(xùn)練參數(shù)。如同經(jīng)典神經(jīng)網(wǎng)絡(luò),F(xiàn)6層計算輸入向量和權(quán)重向量之間的點積,再加上一個偏置。然后將其傳遞給sigmoid函數(shù)產(chǎn)生單元i的一個狀態(tài)。
最后,輸出層由歐式徑向基函數(shù)(Euclidean Radial Basis Function)單元組成,每類一個單元,每個有84個輸入。換句話說,每個輸出RBF單元計算輸入向量和參數(shù)向量之間的歐式距離。輸入離參數(shù)向量越遠,RBF輸出的越大。一個RBF輸出可以被理解為衡量輸入模式和與RBF相關(guān)聯(lián)類的一個模型的匹配程度的懲罰項。用概率術(shù)語來說,RBF輸出可以被理解為F6層配置空間的高斯分布的負log-likelihood。給定一個輸入模式,損失函數(shù)應(yīng)能使得F6的配置與RBF參數(shù)向量(即模式的期望分類)足夠接近。這些單元的參數(shù)是人工選取并保持固定的(至少初始時候如此)。這些參數(shù)向量的成分被設(shè)為-1或1。雖然這些參數(shù)可以以-1和1等概率的方式任選,或者構(gòu)成一個糾錯碼,但是被設(shè)計成一個相應(yīng)字符類的7*12大小(即84)的格式化圖片。這種表示對識別單獨的數(shù)字不是很有用,但是對識別可打印ASCII集中的字符串很有用。
使用這種分布編碼而非更常用的“1 of N”編碼用于產(chǎn)生輸出的另一個原因是,當(dāng)類別比較大的時候,非分布編碼的效果比較差。原因是大多數(shù)時間非分布編碼的輸出必須為0。這使得用sigmoid單元很難實現(xiàn)。另一個原因是分類器不僅用于識別字母,也用于拒絕非字母。使用分布編碼的RBF更適合該目標。因為與sigmoid不同,他們在輸入空間的較好限制的區(qū)域內(nèi)興奮,而非典型模式更容易落到外邊。
RBF參數(shù)向量起著F6層目標向量的角色。需要指出這些向量的成分是+1或-1,這正好在F6 sigmoid的范圍內(nèi),因此可以防止sigmoid函數(shù)飽和。實際上,+1和-1是sigmoid函數(shù)的最大彎曲的點處。這使得F6單元運行在最大非線性范圍內(nèi)。必須避免sigmoid函數(shù)的飽和,因為這將會導(dǎo)致?lián)p失函數(shù)較慢的收斂和病態(tài)問題。
5.5、訓(xùn)練過程
神經(jīng)網(wǎng)絡(luò)用于模式識別的主流是有指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò),無指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò)更多的是用于聚類分析。對于有指導(dǎo)的模式識別,由于任一樣本的類別是已知的,樣本在空間的分布不再是依據(jù)其自然分布傾向來劃分,而是要根據(jù)同類樣本在空間的分布及不同類樣本之間的分離程度找一種適當(dāng)?shù)目臻g劃分方法,或者找到一個分類邊界,使得不同類樣本分別位于不同的區(qū)域內(nèi)。這就需要一個長時間且復(fù)雜的學(xué)習(xí)過程,不斷調(diào)整用以劃分樣本空間的分類邊界的位置,使盡可能少的樣本被劃分到非同類區(qū)域中。
卷積網(wǎng)絡(luò)在本質(zhì)上是一種輸入到輸出的映射,它能夠?qū)W習(xí)大量的輸入與輸出之間的映射關(guān)系,而不需要任何輸入和輸出之間的精確的數(shù)學(xué)表達式,只要用已知的模式對卷積網(wǎng)絡(luò)加以訓(xùn)練,網(wǎng)絡(luò)就具有輸入輸出對之間的映射能力。卷積網(wǎng)絡(luò)執(zhí)行的是有導(dǎo)師訓(xùn)練,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對構(gòu)成的。所有這些向量對,都應(yīng)該是來源于網(wǎng)絡(luò)即將模擬的系統(tǒng)的實際“運行”結(jié)果。它們可以是從實際運行系統(tǒng)中采集來的。在開始訓(xùn)練前,所有的權(quán)都應(yīng)該用一些不同的小隨機數(shù)進行初始化。“小隨機數(shù)”用來保證網(wǎng)絡(luò)不會因權(quán)值過大而進入飽和狀態(tài),從而導(dǎo)致訓(xùn)練失敗;“不同”用來保證網(wǎng)絡(luò)可以正常地學(xué)習(xí)。實際上,如果用相同的數(shù)去初始化權(quán)矩陣,則網(wǎng)絡(luò)無能力學(xué)習(xí)。
訓(xùn)練算法與傳統(tǒng)的BP算法差不多。主要包括4步,這4步被分為兩個階段:
第一階段,向前傳播階段:
a)從樣本集中取一個樣本(X,Yp),將X輸入網(wǎng)絡(luò);
b)計算相應(yīng)的實際輸出Op。
在此階段,信息從輸入層經(jīng)過逐級的變換,傳送到輸出層。這個過程也是網(wǎng)絡(luò)在完成訓(xùn)練后正常運行時執(zhí)行的過程。在此過程中,網(wǎng)絡(luò)執(zhí)行的是計算(實際上就是輸入與每層的權(quán)值矩陣相點乘,得到最后的輸出結(jié)果):
Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n))
第二階段,向后傳播階段
a)算實際輸出Op與相應(yīng)的理想輸出Yp的差;
b)按極小化誤差的方法反向傳播調(diào)整權(quán)矩陣。
5.6、卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點
卷積神經(jīng)網(wǎng)絡(luò)CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。由于CNN的特征檢測層通過訓(xùn)練數(shù)據(jù)進行學(xué)習(xí),所以在使用CNN時,避免了顯式的特征抽取,而隱式地從訓(xùn)練數(shù)據(jù)中進行學(xué)習(xí);再者由于同一特征映射面上的神經(jīng)元權(quán)值相同,所以網(wǎng)絡(luò)可以并行學(xué)習(xí),這也是卷積網(wǎng)絡(luò)相對于神經(jīng)元彼此相連網(wǎng)絡(luò)的一大優(yōu)勢。卷積神經(jīng)網(wǎng)絡(luò)以其局部權(quán)值共享的特殊結(jié)構(gòu)在語音識別和圖像處理方面有著獨特的優(yōu)越性,其布局更接近于實際的生物神經(jīng)網(wǎng)絡(luò),權(quán)值共享降低了網(wǎng)絡(luò)的復(fù)雜性,特別是多維輸入向量的圖像可以直接輸入網(wǎng)絡(luò)這一特點避免了特征提取和分類過程中數(shù)據(jù)重建的復(fù)雜度。
流的分類方式幾乎都是基于統(tǒng)計特征的,這就意味著在進行分辨前必須提取某些特征。然而,顯式的特征提取并不容易,在一些應(yīng)用問題中也并非總是可靠的。卷積神經(jīng)網(wǎng)絡(luò),它避免了顯式的特征取樣,隱式地從訓(xùn)練數(shù)據(jù)中進行學(xué)習(xí)。這使得卷積神經(jīng)網(wǎng)絡(luò)明顯有別于其他基于神經(jīng)網(wǎng)絡(luò)的分類器,通過結(jié)構(gòu)重組和減少權(quán)值將特征提取功能融合進多層感知器。它可以直接處理灰度圖片,能夠直接用于處理基于圖像的分類。
卷積網(wǎng)絡(luò)較一般神經(jīng)網(wǎng)絡(luò)在圖像處理方面有如下優(yōu)點:a)輸入圖像和網(wǎng)絡(luò)的拓撲結(jié)構(gòu)能很好的吻合;b)特征提取和模式分類同時進行,并同時在訓(xùn)練中產(chǎn)生;c)權(quán)重共享可以減少網(wǎng)絡(luò)的訓(xùn)練參數(shù),使神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)變得更簡單,適應(yīng)性更強。
6、深度學(xué)習(xí)的應(yīng)用領(lǐng)域
深度學(xué)習(xí)是人工智能的重要領(lǐng)域之一,其應(yīng)用領(lǐng)域廣泛,包括但不限于以下方面:
1)圖像識別與處理:深度學(xué)習(xí)在圖像識別、物體檢測、圖像分割、人臉識別等領(lǐng)域有很多應(yīng)用。其中,深度學(xué)習(xí)模型能夠通過對大量數(shù)據(jù)的學(xué)習(xí),識別出圖像中的物體、場景、人臉等,如人臉識別技術(shù)、自動駕駛技術(shù)、安防監(jiān)控等。
2)自然語言處理:深度學(xué)習(xí)在自然語言處理領(lǐng)域有很多應(yīng)用,如語音識別、機器翻譯、文本分類、情感分析等。通過深度學(xué)習(xí)技術(shù),模型能夠根據(jù)輸入的自然語言信息,自動理解自然語言的含義和語義,具有很大的應(yīng)用潛力。
3)人機交互:深度學(xué)習(xí)在人機交互領(lǐng)域有很多應(yīng)用,如智能客服、智能問答、虛擬人物等。通過深度學(xué)習(xí)技術(shù),模型能夠根據(jù)用戶的輸入進行智能判斷和回應(yīng),具有很大地幫助人們提高工作和生活效率。
4)醫(yī)療健康:深度學(xué)習(xí)在醫(yī)療健康領(lǐng)域有很多應(yīng)用,如醫(yī)學(xué)影像分析、疾病診斷、藥物研發(fā)等。通過深度學(xué)習(xí)技術(shù),可以快速診斷疾病、輔助醫(yī)生判斷病情、發(fā)現(xiàn)新的藥物等。
5)金融:深度學(xué)習(xí)在金融領(lǐng)域有很多應(yīng)用,如風(fēng)險評估、信用評級、欺詐檢測等。通過深度學(xué)習(xí)技術(shù),可以更好地識別和分析金融市場的變化和趨勢,提高金融風(fēng)險控制能力。
7、深度學(xué)習(xí)的應(yīng)用成果
深度學(xué)習(xí)在搜索、數(shù)據(jù)挖掘、計算機視覺、機器學(xué)習(xí)、機器翻譯、自然語言處理、多媒體學(xué)習(xí)、語音、個性化推薦等領(lǐng)域有著廣泛地應(yīng)用,并取得了很多應(yīng)用成果。
7.1、計算機視覺領(lǐng)域
香港中文大學(xué)的多媒體實驗室是最早應(yīng)用深度學(xué)習(xí)進行計算機視覺研究的華人團隊。在世界級人工智能競賽LFW(大規(guī)模人臉識別競賽)上,該實驗室曾力壓FaceBook奪得冠軍,使得人工智能在該領(lǐng)域的識別能力首次超越真人。
7.2、語音識別領(lǐng)域
微軟研究人員通過與hinton合作,首先將RBM和DBN引入到語音識別聲學(xué)模型訓(xùn)練中,并且在大詞匯量語音識別系統(tǒng)中獲得巨大成功,使得語音識別的錯誤率相對減低30%。但是,DNN還沒有有效的并行快速算法,很多研究機構(gòu)都是在利用大規(guī)模數(shù)據(jù)語料通過GPU平臺提高DNN聲學(xué)模型的訓(xùn)練效率。
在國際上,IBM、google等公司都快速進行了DNN語音識別的研究,并且速度飛快。
國內(nèi)方面,阿里巴巴、科大訊飛、百度、中科院自動化所等公司或研究單位,也在進行深度學(xué)習(xí)在語音識別上的研究。
7.3、自然語言處理及其他領(lǐng)域
很多機構(gòu)在開展研究,2013年,Tomas Mikolov、Kai Chen、Greg Corrado、Jeffrey Dean發(fā)表論文Efficient Estimation of Word Representations in Vector Space建立word2vector模型,與傳統(tǒng)的詞袋模型(bag of words)相比,word2vector能夠更好地表達語法信息。深度學(xué)習(xí)在自然語言處理等領(lǐng)域主要應(yīng)用于機器翻譯以及語義挖掘等方面。
2020年,深度學(xué)習(xí)可以加速半導(dǎo)體封測創(chuàng)新。在降低重復(fù)性人工、提高良率、管控精度和效率、降低檢測成本方面,AI深度學(xué)習(xí)驅(qū)動的AOI具有廣闊的市場前景,但駕馭起來并不簡單。
2020年4月13日,英國《自然·機器智能》雜志發(fā)表的一項醫(yī)學(xué)與人工智能(AI)研究中,瑞士科學(xué)家介紹了一種人工智能系統(tǒng)可以幾秒之內(nèi)掃描心血管血流。這個深度學(xué)習(xí)模型有望讓臨床醫(yī)師在患者接受核磁共振掃描的同時,實時觀察血流變化,從而優(yōu)化診斷工作流。
8、深度學(xué)習(xí)總結(jié)
深度學(xué)習(xí)算法自動的提取分類需要的低層次或者高層次特征。高層次特征,一是指該特征可以分級(層次)地依賴其他特征,例如:對于機器視覺,深度學(xué)習(xí)算法從原始圖像去學(xué)習(xí)得到它的一個低層次表達,例如邊緣檢測器,小波濾波器等,然后在這些低層次表達的基礎(chǔ)上再建立表達,例如這些低層次表達的線性或者非線性組合,然后重復(fù)這個過程,最后得到一個高層次的表達。
深度學(xué)習(xí)能夠得到更好地表示數(shù)據(jù)的feature,同時由于模型的層次、參數(shù)很多,capacity足夠,因此,模型有能力表示大規(guī)模數(shù)據(jù),所以對于圖像、語音這種特征不明顯(需要手工設(shè)計且很多沒有直觀物理含義)的問題,能夠在大規(guī)模訓(xùn)練數(shù)據(jù)上取得更好的效果。此外,從模式識別特征和分類器的角度,deep learning框架將feature和分類器結(jié)合到一個框架中,用數(shù)據(jù)去學(xué)習(xí)feature,在使用中減少了手工設(shè)計feature的巨大工作量(這是目前工業(yè)界工程師付出努力最多的方面),因此,不僅僅效果可以更好,而且,使用起來也有很多方便之處,因此,是十分值得關(guān)注的一套框架,每個做ML的人都應(yīng)該關(guān)注了解一下。
當(dāng)然,deep learning本身也不是完美的,也不是解決世間任何ML問題的利器,不應(yīng)該被放大到一個無所不能的程度。
9、深度學(xué)習(xí)的未來
深度學(xué)習(xí)目前仍有大量工作需要研究。目前的關(guān)注點還是從機器學(xué)習(xí)的領(lǐng)域借鑒一些可以在深度學(xué)習(xí)使用的方法,特別是降維領(lǐng)域。例如:目前一個工作就是稀疏編碼,通過壓縮感知理論對高維數(shù)據(jù)進行降維,使得非常少的元素的向量就可以精確的代表原來的高維信號。另一個例子就是半監(jiān)督流行學(xué)習(xí),通過測量訓(xùn)練樣本的相似性,將高維數(shù)據(jù)的這種相似性投影到低維空間。另外一個比較鼓舞人心的方向就是evolutionary programming approaches(遺傳編程方法),它可以通過最小化工程能量去進行概念性自適應(yīng)學(xué)習(xí)和改變核心架構(gòu)。
深度學(xué)習(xí)已經(jīng)在許多領(lǐng)域取得了巨大很大的成功,如圖像識別、自然語言處理和人工智能等。未來,深度學(xué)習(xí)將繼續(xù)推動人工智能技術(shù)的發(fā)展,為人類帶來更多的便利和創(chuàng)新。以下是深度學(xué)習(xí)未來的幾個趨勢:
1)自我學(xué)習(xí)和自我優(yōu)化:隨著深度學(xué)習(xí)模型的復(fù)雜性越來越高,如何使模型更好地學(xué)習(xí)和自我優(yōu)化將成為一個重要的研究領(lǐng)域。未來的深度學(xué)習(xí)模型將能夠根據(jù)數(shù)據(jù)自我學(xué)習(xí)和調(diào)整,從而提高精度和效率。
2)深度學(xué)習(xí)與傳感器技術(shù)的結(jié)合:隨著物聯(lián)網(wǎng)和傳感器技術(shù)的發(fā)展,深度學(xué)習(xí)將與傳感器技術(shù)結(jié)合,實現(xiàn)更多的智能化應(yīng)用。例如,深度學(xué)習(xí)可以用于解決交通擁堵、自動駕駛和環(huán)境監(jiān)測等問題。
3)深度學(xué)習(xí)在醫(yī)療領(lǐng)域的應(yīng)用:深度學(xué)習(xí)將成為醫(yī)療領(lǐng)域的重要技術(shù)之一。未來的深度學(xué)習(xí)模型將能夠分析和診斷醫(yī)療圖像、電子病歷和生理數(shù)據(jù)等,幫助醫(yī)生更快地診斷和治療疾病。
4)深度學(xué)習(xí)與自然語言處理的結(jié)合:深度學(xué)習(xí)將與自然語言處理技術(shù)相結(jié)合,實現(xiàn)更高效的自然語言處理和智能對話。未來的深度學(xué)習(xí)模型將能夠更好地理解語言上下文和語義,從而實現(xiàn)更人性化的交互方式。
總之,隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展和進步,我們可以期待它在各個領(lǐng)域帶來更多的創(chuàng)新和改變。
來源:本文為CSDN博主「dvlinker」的原創(chuàng)文章
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4793瀏覽量
102020 -
人工智能
+關(guān)注
關(guān)注
1802文章
48317瀏覽量
243969 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5535瀏覽量
122190 -
卷積神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
4文章
368瀏覽量
12094
原文標題:深入探究深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)以及它們在多個領(lǐng)域中的應(yīng)用
文章出處:【微信號:機器視覺沙龍,微信公眾號:機器視覺沙龍】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論