CNN相关知识总结
CNN簡(jiǎn)介
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種深度的監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型,具有極強(qiáng)的適應(yīng)性,善于挖掘數(shù)據(jù)局部特征,提取全局訓(xùn)練特征和分類,它的權(quán)值共享結(jié)構(gòu)網(wǎng)絡(luò)使之更類似于生物神經(jīng)網(wǎng)絡(luò),在模式識(shí)別各個(gè)領(lǐng)域都取得了很好的成果。CNN是一種前饋神經(jīng)網(wǎng)絡(luò),它的人工神經(jīng)元可以響應(yīng)一部分覆蓋范圍內(nèi)的周圍單元,對(duì)于大型圖像處理有出色表現(xiàn)。
CNN節(jié)省訓(xùn)練開銷的方式是權(quán)共享weight sharing,讓一組神經(jīng)元使用相同的權(quán)值。
它的三個(gè)基本概念為:局部感受野(Local receptive fields),共享權(quán)重(Shared weights),和池化(Pooling)。
CNN背景
1966年,Minisky和Papert在他們的《感知器》一書中提出了上述的感知器的研究瓶頸,指出理論上還不能證明將感知器模型擴(kuò)展到多層網(wǎng)絡(luò)是有意義的。這在人工神經(jīng)網(wǎng)絡(luò)的歷史上書寫了極其灰暗的一章。對(duì)ANN的研究,始于1890年開始于美國(guó)著名心理學(xué)家W.James對(duì)于人腦結(jié)構(gòu)與功能的研究,半個(gè)世紀(jì)后W.S.McCulloch和W.A.Pitts提出了M-P模型,之后的1958年Frank Rosenblatt在這個(gè)基礎(chǔ)上又提出了感知器,此時(shí)對(duì)ANN的研究正處在升溫階段,《感知器》這本書的出現(xiàn)就剛好為這剛剛?cè)计鸬娜斯ど窠?jīng)網(wǎng)絡(luò)之火潑了一大盆冷水。一時(shí)間人們仿佛感覺對(duì)以感知器為基礎(chǔ)的ANN的研究突然間走到盡頭,看不到出路了。于是,幾乎所有為ANN提供的研究基金都枯竭了,很多領(lǐng)域的專家紛紛放棄了這方面課題的研究。
CNN結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)CNN的結(jié)構(gòu)一般包含這幾個(gè)層:
卷積層(Convolutional layer),使用卷積核進(jìn)行特征提取和特征映射。卷積神經(jīng)網(wǎng)路中每層卷積層由若干卷積單元組成,每個(gè)卷積單元的參數(shù)都是通過反向傳播算法優(yōu)化得到的。卷積運(yùn)算的目的是提取輸入的不同特征,第一層卷積層可能只能提取一些低級(jí)的特征如邊緣、線條和角等層級(jí),更多層的網(wǎng)絡(luò)能從低級(jí)特征中迭代提取更復(fù)雜的特征。
線性整流層(Rectified Linear Units layer, ReLU layer),或稱激勵(lì)層、激活層。由于卷積也是一種線性運(yùn)算,因此需要增加非線性映射。這一層神經(jīng)的激勵(lì)函數(shù)(Activation function)一般使用線性整流(Rectified Linear Units, ReLU)f(x)=max(0,x),層次越深,相對(duì)于其他的函數(shù)效果較好,其他的激活函數(shù)還有Sigmod,tanh函數(shù)等,但是sigmod和tanh都存在飽和的問題,如上圖所示,當(dāng)x軸上的值較大時(shí),對(duì)應(yīng)的梯度幾乎為0,若是利用BP反向傳播算法, 可能造成梯度消失的情況,也就學(xué)不到東西了。
在每個(gè)卷積層之后,通常會(huì)立即應(yīng)用一個(gè)非線性層(或激活層)。其目的是給一個(gè)在卷積層中剛經(jīng)過線性計(jì)算操作(只是數(shù)組元素依次(element wise)相乘與求和)的系統(tǒng)引入非線性特征。過去,人們用的是像雙曲正切和 S 型函數(shù)這樣的非線性方程,但研究者發(fā)現(xiàn) ReLU 層效果好得多,因?yàn)樯窠?jīng)網(wǎng)絡(luò)能夠在準(zhǔn)確度不發(fā)生明顯改變的情況下把訓(xùn)練速度提高很多(由于計(jì)算效率增加)。它同樣能幫助減輕梯度消失的問題——由于梯度以指數(shù)方式在層中消失,導(dǎo)致網(wǎng)絡(luò)較底層的訓(xùn)練速度非常慢。ReLU 層對(duì)輸入內(nèi)容的所有值都應(yīng)用了函數(shù) f(x) = max(0, x)。用基本術(shù)語來說,這一層把所有的負(fù)激活(negative activation)都變?yōu)榱?。這一層會(huì)增加模型乃至整個(gè)神經(jīng)網(wǎng)絡(luò)的非線性特征,而且不會(huì)影響卷積層的感受野。
參見 Geoffrey Hinton(即深度學(xué)習(xí)之父)的論文:Rectified Linear Units Improve Restricted Boltzmann Machines
作者:機(jī)器之心https://www.zhihu.com/question/52668301/answer/131573702
池化層(Pooling layer),進(jìn)行下采樣,對(duì)特征圖稀疏處理,減少數(shù)據(jù)運(yùn)算量。通常在卷積層之后會(huì)得到維度很大的特征,將特征切成幾個(gè)區(qū)域,取其最大值或平均值,得到新的、維度較小的特征。
- 很明顯就是減少參數(shù)
Pooling就有平移不變性((translation invariant)
在幾個(gè) ReLU 層之后,程序員也許會(huì)選擇用一個(gè)池化層(pooling layer)。它同時(shí)也被叫做下采樣(downsampling)層。在這個(gè)類別中,也有幾種可供選擇的層,最受歡迎的就是最大池化( max-pooling)。它基本上采用了一個(gè)過濾器(通常是 2x2 的)和一個(gè)同樣長(zhǎng)度的步幅。然后把它應(yīng)用到輸入內(nèi)容上,輸出過濾器卷積計(jì)算的每個(gè)子區(qū)域中的最大數(shù)字。
池化層還有其他選擇,比如平均池化(average pooling)和 L2-norm 池化 。這一層背后的直觀推理是:一旦我們知道了原始輸入(這里會(huì)有一個(gè)高激活值)中一個(gè)特定的特征,它與其它特征的相對(duì)位置就比它的絕對(duì)位置更重要。可想而知,這一層大幅減小了輸入卷的空間維度(長(zhǎng)度和寬度改變了,但深度沒變)。這到達(dá)了兩個(gè)主要目的。第一個(gè)是權(quán)重參數(shù)的數(shù)目減少到了75%,因此降低了計(jì)算成本。第二是它可以控制過擬合(overfitting)。這個(gè)術(shù)語是指一個(gè)模型與訓(xùn)練樣本太過匹配了,以至于用于驗(yàn)證和檢測(cè)組時(shí)無法產(chǎn)生出好的結(jié)果。出現(xiàn)過擬合的表現(xiàn)是一個(gè)模型在訓(xùn)練集能達(dá)到 100% 或 99% 的準(zhǔn)確度,而在測(cè)試數(shù)據(jù)上卻只有50%。
CNN(卷積神經(jīng)網(wǎng)絡(luò))是什么? 作者:機(jī)器之心
全連接層( Fully-Connected layer), 通常在CNN的尾部進(jìn)行重新擬合,減少特征信息的損失。把所有局部特征結(jié)合變成全局特征,用來計(jì)算最后每一類的得分。
* Dropout 層:在神經(jīng)網(wǎng)絡(luò)有了非常明確的功能。上一節(jié),我們討論了經(jīng)過訓(xùn)練后的過擬合問題:訓(xùn)練之后,神經(jīng)網(wǎng)絡(luò)的權(quán)重與訓(xùn)練樣本太過匹配以至于在處理新樣本的時(shí)候表現(xiàn)平平。Dropout 的概念在本質(zhì)上非常簡(jiǎn)單。Dropout 層將「丟棄(drop out)」該層中一個(gè)隨機(jī)的激活參數(shù)集,即在前向通過(forward pass)中將這些激活參數(shù)集設(shè)置為 0。簡(jiǎn)單如斯。既然如此,這些簡(jiǎn)單而且似乎不必要且有些反常的過程的好處是什么?在某種程度上,這種機(jī)制強(qiáng)制網(wǎng)絡(luò)變得更加冗余。這里的意思是:該網(wǎng)絡(luò)將能夠?yàn)樘囟ǖ臉颖咎峁┖线m的分類或輸出,即使一些激活參數(shù)被丟棄。此機(jī)制將保證神經(jīng)網(wǎng)絡(luò)不會(huì)對(duì)訓(xùn)練樣本「過于匹配」,這將幫助緩解過擬合問題。另外,Dropout 層只能在訓(xùn)練中使用,而不能用于測(cè)試過程,這是很重要的一點(diǎn)。
參考 Geoffrey Hinton 的論文:Dropout: A Simple Way to Prevent Neural Networks from Overfitting
CNN的特點(diǎn)
局部連接、權(quán)值共享、池化操作及多層結(jié)構(gòu)。
CNN能夠通過多層非線性變換,從數(shù)據(jù)中自動(dòng)學(xué)習(xí)特征,從而代替手工設(shè)計(jì)的特征,且深層的結(jié)構(gòu)使它具有很強(qiáng)的表達(dá)能力和學(xué)習(xí)能力。許多研究實(shí)驗(yàn)已經(jīng)表明了CNN結(jié)構(gòu)中深度的重要性。例如從結(jié)構(gòu)來看, AlexNet、VGG、GooleNet及ResNet的一個(gè)典型的發(fā)展趨勢(shì)是它們的深度越來越深。在CNN中,通過增加深度從而增加網(wǎng)絡(luò)的非線性來使它能夠更好地?cái)M合目標(biāo)函數(shù),獲得更好的分布式特征。
CNN應(yīng)用
- 圖像分類
- 人臉識(shí)別
- 音頻檢索
- ECG分析
- 其他:短文本聚類[103]、視覺追蹤[104]、圖像融合[105]等領(lǐng)域中.
參考:周飛燕, 金林鵬, 董軍. 卷積神經(jīng)網(wǎng)絡(luò)研究綜述[J]. 計(jì)算機(jī)學(xué)報(bào), 2017, 40(6):1229-1251.
參考:
總結(jié)
- 上一篇: 一加首款机械键盘来了:水晶旋钮 无小数字
- 下一篇: 被冻结的钱,银行可以私自处理吗?