深度學(xué)習(xí)模型——CNN | 卷積神經(jīng)網(wǎng)絡(luò)

0 評(píng)論 2669 瀏覽 13 收藏 16 分鐘

CNN,即一種專門用于處理具有類似網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的深度學(xué)習(xí)模型。怎么理解CNN的全流程?這篇文章里,作者對(duì)CNN的模型結(jié)構(gòu)和每一層的具體步驟等內(nèi)容做了詳細(xì)解讀,一起來看。

一、定義

Convolutional Neural Networks /?k?nv??lu???n(?)l/ /?nj??r?l/

是一種專門用于處理具有類似網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的深度學(xué)習(xí)模型 。

二、CNN模型結(jié)構(gòu)

接下來我們通過一個(gè)情境來理解CNN的全流程:

假設(shè)我們現(xiàn)在有一款智能鑒定APP,主要進(jìn)行藝術(shù)品鑒定。我們要通過APP判斷其中一張圖片是不是古董,現(xiàn)在我們來了解下APP是怎么工作的吧。

輸入層:

用戶上傳了一張古董瓷瓶照片,這張照片就是進(jìn)入CNN系統(tǒng)的”原材料”,輸入層的作用就是接收這張圖片數(shù)據(jù),并將其轉(zhuǎn)換為CNN神經(jīng)網(wǎng)絡(luò)可以理解的數(shù)字形式(通常是一個(gè)三維數(shù)組,即寬度、高度、顏色通道數(shù))。

卷積層:

鑒定師們開始工作了,他們每人手持一把放大鏡(卷積核),在瓷瓶照片上移動(dòng)并聚焦(卷積運(yùn)算),這些放大鏡專門用來搜尋特定的紋飾、釉色或工藝特征(特征提取),每位鑒定師記錄下各自發(fā)現(xiàn)的特征(注:在這里一位鑒定師只會(huì)去找一個(gè)特征),并且每人會(huì)生成一份詳細(xì)的特征報(bào)告(卷積后特征圖)。

激活函數(shù):

每份特征報(bào)告完成后,都交由魔法學(xué)徒(激活函數(shù))進(jìn)行神秘加工。他們使用魔法藥水(ReLU、Sigmoid等),對(duì)報(bào)告內(nèi)容進(jìn)行強(qiáng)化(正值保持或增大)或弱化(負(fù)值轉(zhuǎn)為0或壓縮到一定范圍內(nèi)),確保突出關(guān)鍵特征,隱藏?zé)o關(guān)或干擾信息。

池化層:

接下來,公司經(jīng)理(池化層)審查這些經(jīng)過魔法加工的特征報(bào)告。他們不需要關(guān)注每個(gè)細(xì)節(jié),而是提取每個(gè)報(bào)告的核心摘要(如最大特征或平均特征值),這樣既能減少冗余信息,又能確保關(guān)鍵特征得以保留,便于后續(xù)的全局分析。

全連接層:

到了決策階段,所有精煉的特征摘要被送到公司高層(全連接層),高層領(lǐng)導(dǎo)們圍坐一桌,每人面前都有一份長(zhǎng)長(zhǎng)的清單,上面列著所有可能影響鑒定結(jié)果的因素及其權(quán)重(神經(jīng)元及其連接權(quán)重)。他們根據(jù)清單討論、打分(加權(quán)求和),共同得出初步的鑒定結(jié)論(分類概率或回歸值)。

比喻解釋:

全連接層就像公司的高層領(lǐng)導(dǎo)團(tuán)隊(duì),他們依據(jù)精煉的特征摘要,參考各自的判斷清單,集體討論并給出初步的鑒定意見。

激活函數(shù)(再次):

初步鑒定結(jié)論出爐后,還需要最后一道魔法加持(激活函數(shù))。這次魔法學(xué)徒用另一種魔法藥水(如Softmax或Sigmoid等),確保鑒定結(jié)論符合預(yù)期格式(如概率分布),并具有良好的區(qū)分度。

比喻解釋:

再次使用的激活函數(shù)如同魔法學(xué)徒為鑒定結(jié)論施加的最后的魔法,確保結(jié)論既符合規(guī)范(概率分布),又具有明確的傾向性(區(qū)分度),便于用戶理解。

輸出層:

經(jīng)過多重鑒定與魔法加工,最終的鑒定結(jié)果出爐。APP將結(jié)果顯示給用戶,告訴他們這張瓷瓶照片是真品的概率為90%,贗品的概率為10%,用戶據(jù)此做出是否購買的決定

這個(gè)過程形象地展示了CNN如何通過層層處理,將原始圖像轉(zhuǎn)化為可供決策的分類或回歸結(jié)果。

其中上面括號(hào)加粗內(nèi)容,大家可以先有個(gè)印象,下文會(huì)對(duì)部分內(nèi)容做出講解。

其中我們發(fā)現(xiàn)激活函數(shù)會(huì)出現(xiàn)在多個(gè)位置,那到底正常應(yīng)該放置在什么位置?怎么選擇呢?

激活函數(shù)嚴(yán)格來說可以放在任何地方,但我們一般是將其放到卷積層和全連接層后,因?yàn)榉诺狡渌鼘右话阋饬x不到;

如果放到池化層之后可以嗎?為什么不建議?

可以放到池化層之后,不建議是因?yàn)楦鶕?jù)上圖結(jié)構(gòu)我們看到池化層本身的功能就是降維和特征提取了,所以再增加非線性變換已經(jīng)意義不大了。

暫時(shí)來說激活函數(shù)放置位置選擇沒有什么技巧,主要參考大神們發(fā)表的一些論文,跟著論文上做選擇即可。

三、每一層具體步驟

1. 卷積層

1)準(zhǔn)備輸入數(shù)據(jù):一張彩色圖片

最終將彩色圖片轉(zhuǎn)換為CNN可以理解的數(shù)字形式,一般是三維數(shù)組(維度:長(zhǎng)、寬、顏色)。

下圖是一個(gè)三維數(shù)組展開的平面圖, 5*5*3:5*5代表長(zhǎng)寬;3代表R、G、B三個(gè)通道。

2)定義卷積核(濾波器)

設(shè)置濾波器大?。杭礊V波器的長(zhǎng)寬,常見的大小有3*3、5*5。

設(shè)置步長(zhǎng):即濾波器在輸入數(shù)據(jù)上滑動(dòng)的間隔。

設(shè)置填充(Padding):即在輸入數(shù)據(jù)的邊界添加額外的零值像素的過程;目的:解決邊界卷積造成的圖像信息丟失情況。

設(shè)置選擇卷積類型:類型包括標(biāo)準(zhǔn)卷積、轉(zhuǎn)置卷積(用于上采樣)、空洞卷積(用于擴(kuò)大感受野)。

選擇初始化方法:目的設(shè)置權(quán)重和偏置項(xiàng) ;包括零初始化、隨機(jī)初始化、Xavler初始化和He初始化。

考慮使用的卷積函數(shù):一般用在卷積操作之后。

3)卷積操作

詳細(xì)解釋一下通過濾波器W0,和偏置項(xiàng)h0, 怎么卷積出最終結(jié)果1的。

R(0*1+0*1+0*-1)+ (0*-1+0*0+1*1)+ (0*-1+0*-1+1*0) = 1

G(0*-1+0*0+0*-1)+ (0*0+1*0+1*-1)+ (0*1+0*-1+2*0) = -1

B (0*0+0*1+0*0)+ (0*1+2*0+0*1)+ (0*0+0*-1+0*1) = 0

最終結(jié)果R(紅色通道)+G(綠色通道)+B(藍(lán)色通道)+b0(偏置項(xiàng)) 即 1 + (-1) + 0 + 1 = 1

4)滑動(dòng)卷積核(濾波器)

根據(jù)步長(zhǎng)為2,滑動(dòng)卷積核,計(jì)算出其它值,計(jì)算方式同步驟3。

5)生成卷積特征圖

生成特征圖:通常指的是卷積操作完成后得到的最終結(jié)果矩陣。

6)應(yīng)用激活函數(shù)

目的:在神經(jīng)網(wǎng)絡(luò)的層與層之間引入非線性,以便網(wǎng)絡(luò)能夠?qū)W習(xí)和表示復(fù)雜的函數(shù)。

常見的激活函數(shù):ReLU、Sigmold、Tanh。

使用激活函數(shù),對(duì)每個(gè)神經(jīng)元(即每個(gè)輸入矩陣中的值)應(yīng)用非線性變換。

激活函數(shù)一般的位置:卷積層后、全連接層后。

2. 池化層

1)定義池化窗口

池化窗口 也稱池化核,是一個(gè)小的矩形區(qū)域,用于從輸入特征圖中提取信息,一般是2*2 或 3*3。

2)選擇池化操作

可選的池化操作有:最大池化和平均池化。

3)應(yīng)用池化操作

輸入特征圖:指的是上一層卷積層生成的卷積特征圖。

4)滑動(dòng)池化窗口

池化窗口按照指定的步長(zhǎng)在輸入特征圖上移動(dòng)。

5)生成池化特征圖

下圖中給出了2種池化方法后的示意圖;圖b為最大池化,圖c為平均池化。

6)將池化特征圖傳入下一層

下一層可能是卷積層,也可能是全連接層;可以看最開始 原理結(jié)構(gòu)圖。

下一層的輸入矩陣:是池化后的特征圖。

如果下一層是卷積層,它與第一次卷積的區(qū)別是什么?

  1. 輸入數(shù)據(jù)不一致:第二次輸入矩陣是第一次池化后的特征圖矩陣。
  2. 卷積核不一致:主要是指卷積核權(quán)重不一致。

然后在依次按照卷積層、池化層的步驟進(jìn)行卷積/池化操作。

2. 全連接層 | FC

1)接收特征圖

輸入矩陣:是所有池化后/或經(jīng)過激活函數(shù)處理后的特征圖,是一個(gè)多維向量。

維度有:

  • batch_size:批次大小
  • heigh:特征圖的高度
  • width:特征圖的寬度
  • channels:特征通道數(shù)量

2)展平特征圖

目的:將多維特征圖展平為一維特征圖。

實(shí)現(xiàn)方式:將特征圖中的每個(gè)通道”展開成一個(gè)長(zhǎng)向量”,并將所有通道的向量連接在一起形成一個(gè)大的一維向量。

展平后的向量長(zhǎng)度是 batch_size * height * width * channels

3)權(quán)重分配

全連接層中的每一個(gè)神經(jīng)元(即一維向量中的每一個(gè)值),都與輸入矩陣中的每個(gè)元素相連,并且每個(gè)連接都有一個(gè)對(duì)應(yīng)的權(quán)重,這些權(quán)重構(gòu)成了權(quán)重矩陣,反應(yīng)了神經(jīng)元對(duì)輸入特征的重視程度。此外,每個(gè)神經(jīng)元還有一個(gè)偏置項(xiàng)(Bias),用于調(diào)整器整體響應(yīng)水平。

4)線性變換

對(duì)輸入向量進(jìn)行線性變換。

公式如下:

W:權(quán)重矩陣;x:輸入向量;b:偏置向量

通過這個(gè)公式,我們對(duì)輸入向量做線性變換,得到每個(gè)神經(jīng)元的凈輸入(即得到全連接層的最終輸出結(jié)果)。

5)激活函數(shù)應(yīng)用(再次)

通過在次使用激活函數(shù),進(jìn)行最終的處理,可能結(jié)果保持不變(如ReLU的正區(qū)間),或?qū)⒔Y(jié)果壓縮到某個(gè)范圍內(nèi)(如Sigmoid、Tanh),確保輸出符合規(guī)范,又具有明確的傾向性。

6)輸出結(jié)果

是對(duì)輸入數(shù)據(jù)的最終響應(yīng)。在回歸任務(wù)中,輸出是一個(gè)連續(xù)值,表示預(yù)測(cè)的目標(biāo)值。

四、相關(guān)概念

持續(xù)補(bǔ)充中……………

Padding

根據(jù)上面卷積過程,我們發(fā)現(xiàn),卷積操作時(shí)會(huì)遇到在圖像邊界卷積造成圖像信息丟失的問題,Padding操作的目的是為了解決此問題而提出的。

圖像信息丟失? 比如我們?cè)诰矸e計(jì)算時(shí)會(huì) 對(duì)應(yīng)像素值*權(quán)重 ,此時(shí)如果權(quán)重為0就會(huì)造成實(shí)際像素值信息丟失情況。

實(shí)現(xiàn)Padding方法:

Same Padding:根據(jù)卷積核的大小,對(duì)輸入圖像矩陣進(jìn)行邊界補(bǔ)充(一般填充零值),使得卷積后得到的特征矩陣與輸入矩陣大小一致。

Valid Padding:不需要進(jìn)行padding操作。

自定義padding:使用公式計(jì)算得出,如下。

其中inputh 指 輸入矩陣長(zhǎng)度;kernelh 指卷積核長(zhǎng)度;stride:卷積操作步長(zhǎng);outputh : 指卷積后矩陣的長(zhǎng)度。

五、其它

1. 使用場(chǎng)景

圖像識(shí)別(人臉識(shí)別、物體識(shí)別)、計(jì)算機(jī)視覺(包括自動(dòng)駕駛、醫(yī)療影像分析)、自然語言處理(用于文本分類、情感分析等)、視頻分析(如行為識(shí)別、視頻內(nèi)容理解等)、圖像生成(如風(fēng)格遷移、圖像超分辨率等)。

一般主要用于圖像處理?

通過以下三點(diǎn)可以確認(rèn)更適合用于圖片處理:

  1. 局部特征提取,降低了識(shí)別難度。
  2. 可應(yīng)用于不同的圖像識(shí)別任務(wù),權(quán)重公用;比如 經(jīng)過訓(xùn)練已經(jīng)可識(shí)別出小狗,那這些神經(jīng)元也可以應(yīng)用于識(shí)別其它任何圖像中的相似物體。
  3. 雖特征維度降低,但是保留了主要特征,這樣做不僅不影響圖像識(shí)別,反而減少了其它像素影響和處理的數(shù)據(jù)量。

2. 優(yōu)點(diǎn)

  1. 特征提取能力強(qiáng)。
  2. 有效降維(將大數(shù)據(jù)量的圖像降維成小數(shù)據(jù)量,同時(shí)保留關(guān)鍵特征)。
  3. 減少參數(shù)數(shù)量(通過共享權(quán)重,減少了模型的參數(shù)數(shù)量,提供了訓(xùn)練效率)。

3. 缺點(diǎn)

  1. 只能識(shí)別獨(dú)立事件。
  2. 過擬合分險(xiǎn)(如果沒有足夠的數(shù)據(jù)或者正則化措施,CNN可能會(huì)過擬合訓(xùn)練數(shù)據(jù))。
  3. 解釋性差。
  4. 計(jì)算量大,尤其在高分辨率圖像上。
  5. 參數(shù)多(盡管通過共享權(quán)重減少了參數(shù)量,但是CNN仍需要大量的參數(shù)來學(xué)習(xí)復(fù)雜的特征)。

本文由 @Luna 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議。

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒評(píng)論,等你發(fā)揮!