呂 響,張書(shū)玉,宋英楠,王長(zhǎng)忠,李雯琦,牛嘉瑞
(渤海大學(xué) 數(shù)學(xué)科學(xué)學(xué)院,遼寧 錦州 121013)
在機(jī)器學(xué)習(xí)算法中,深度學(xué)習(xí)作為一個(gè)新興技術(shù),是建立并且模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),已經(jīng)極大地促進(jìn)了機(jī)器學(xué)習(xí)的發(fā)展,目前深度學(xué)習(xí)應(yīng)用最廣泛的三個(gè)領(lǐng)域是語(yǔ)音識(shí)別,圖像識(shí)別和自然語(yǔ)言處理[1].深度學(xué)習(xí)目前的主要形式是深層神經(jīng)網(wǎng)絡(luò),而深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural net?works,CNN)則是其中一種經(jīng)典而廣泛應(yīng)用的結(jié)構(gòu).近些年來(lái),深度卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)在許多領(lǐng)域應(yīng)用中表現(xiàn)出了優(yōu)異的結(jié)果[2].
卷積神經(jīng)網(wǎng)絡(luò)是一類具有深度結(jié)構(gòu)且包含卷積計(jì)算的神經(jīng)網(wǎng)絡(luò),它具有權(quán)值共享、局部連接及卷積池化操作等特性.這些特性可以有效的減少訓(xùn)練參數(shù)的數(shù)目、降低網(wǎng)絡(luò)的復(fù)雜計(jì)算度,使得模型具有強(qiáng)魯棒性和容錯(cuò)能力.正因?yàn)橛羞@些特性,卷積神經(jīng)網(wǎng)絡(luò)在各種信號(hào)和信息處理任務(wù)中的性能比全連接神經(jīng)網(wǎng)絡(luò)好很多[3].當(dāng)前關(guān)于卷積神經(jīng)網(wǎng)絡(luò)的大多數(shù)參考書(shū)目?jī)H僅是說(shuō)明了原理,卻缺少對(duì)中間參數(shù)的計(jì)算過(guò)程進(jìn)行推導(dǎo).鑒于此,本文給出了CNN各層參數(shù)及其反向傳播計(jì)算公式的推導(dǎo)過(guò)程,這不僅有助于加強(qiáng)初學(xué)者對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的了解、對(duì)網(wǎng)絡(luò)參數(shù)的學(xué)習(xí)有一個(gè)深刻的認(rèn)識(shí),而且對(duì)以后的學(xué)習(xí)及建立模型有很大的幫助.
CNN是當(dāng)前深度學(xué)習(xí)領(lǐng)域中處理圖像的一種典型算法,具有局部連接、權(quán)重共享等性質(zhì),CNN從結(jié)構(gòu)上來(lái)看是由卷積層、池化層和全連接層交替組成的[4].而全連接前饋神經(jīng)網(wǎng)絡(luò)也可用來(lái)處理圖像信息問(wèn)題.通過(guò)對(duì)兩種方法進(jìn)行對(duì)比,可以發(fā)現(xiàn),當(dāng)利用全連接網(wǎng)絡(luò)處理圖像信息時(shí)會(huì)出現(xiàn)以下兩個(gè)問(wèn)題:
(1)參數(shù)太多.每個(gè)連接上都存在一個(gè)權(quán)重參數(shù),如果隱藏層的神經(jīng)元數(shù)量增多,則權(quán)重參數(shù)的數(shù)量也會(huì)隨之增多.當(dāng)訓(xùn)練該神經(jīng)網(wǎng)絡(luò)時(shí),會(huì)產(chǎn)生參數(shù)迭代時(shí)間過(guò)長(zhǎng)、收斂速度變慢的現(xiàn)象,同時(shí)也會(huì)容易發(fā)生過(guò)擬合現(xiàn)象[5].
(2)很難提取圖像的局部不變性特征.局部不變性特征是指局部圖像特征不隨圖像的變形而改變.全連接前饋神經(jīng)網(wǎng)絡(luò)要提取圖像中的局部不變性特征是非常難的[1].
而利用CNN處理圖像信息時(shí)可以有效解決以上兩個(gè)問(wèn)題.在CNN中,卷積層的每一個(gè)神經(jīng)元僅僅與下一層中的部分神經(jīng)元相連,形成局部連接網(wǎng)絡(luò),故層與層之間的連接數(shù)大量減少,參數(shù)也隨之減少,所以網(wǎng)絡(luò)訓(xùn)練效率增加,有效解決上述參數(shù)過(guò)多問(wèn)題.除此之外,CNN中可利用多種卷積核提取圖像的局部不變性特征.
卷積是分析數(shù)學(xué)中一種內(nèi)積運(yùn)算,工程領(lǐng)域經(jīng)常用一維或二維卷積來(lái)對(duì)信號(hào)或圖像進(jìn)行處理.根據(jù)卷積內(nèi)積計(jì)算的不同,卷積分為正序卷積和逆序卷積.
設(shè)一個(gè)圖像X ∈RM×N和一個(gè)卷積核W ∈RU×V,其中U< 其中wuv和xi+u-1,j+v-1分別為W和X中的元素.將圖像X和卷積核W的正序卷積運(yùn)算記為Y = W ?X. 將W和X的逆序卷積定義為 與正序卷積不同,逆序卷積中yij的下標(biāo)(i,j)從(U,V)開(kāi)始.將圖像X和W的逆序卷積運(yùn)算記為Y = W?X.正序卷積與逆序卷積有如下關(guān)系: 其中rot180(W)表示將卷積核W以左上角為原點(diǎn)旋轉(zhuǎn)180度. 在卷積過(guò)程中,可通過(guò)卷積核的個(gè)數(shù)來(lái)得到多個(gè)特征映射,具體的卷積計(jì)算過(guò)程是卷積核與對(duì)應(yīng)區(qū)域做卷積運(yùn)算,期間通過(guò)引入卷積核的滑動(dòng)步長(zhǎng)和零填充來(lái)進(jìn)行卷積計(jì)算.其中,步長(zhǎng)是指卷積核在滑動(dòng)時(shí)的間隔.零填充是指在輸入向量?jī)啥诉M(jìn)行補(bǔ)零操作.若一個(gè)卷積層的輸入神經(jīng)元個(gè)數(shù)為N,卷積大小為K,步長(zhǎng)為S,使用零填充,且兩端各填補(bǔ)Q個(gè)0,那么該卷積層輸出的神經(jīng)元數(shù)量為(+ 1). 根據(jù)是否對(duì)輸入向量進(jìn)行零填充,可將卷積分為以下三類[1]: (1)窄卷積:輸入向量?jī)啥瞬惶畛?,即Q= 0,步長(zhǎng)S= 1,則經(jīng)過(guò)卷積運(yùn)算后輸出長(zhǎng)度為N-K+ 1.圖1給出了一個(gè)二維逆序窄卷積示例. 圖1 二維逆序窄卷積示例 (2)寬卷積:輸入向量?jī)啥擞萌闾畛?,且Q=K- 1,步長(zhǎng)S= 1,則經(jīng)過(guò)卷積運(yùn)算后輸出長(zhǎng)度為N+K- 1.正序?qū)捑矸e運(yùn)算符用?表示,逆序?qū)捑矸e運(yùn)算符用??表示.正序?qū)捑矸e具有如下的性質(zhì): (3)等寬卷積:輸入向量?jī)啥擞萌闾畛?,且Q=,步長(zhǎng)S=1,則經(jīng)過(guò)卷積運(yùn)算后輸出長(zhǎng)度仍為N. 在卷積層中,首先由人工指定卷積核的大小和深度,再將這個(gè)可學(xué)習(xí)的卷積核對(duì)上一層的特征圖進(jìn)行卷積.而在初始化時(shí)程序會(huì)隨機(jī)生成權(quán)重參數(shù),并且這些權(quán)重值可以在之后的訓(xùn)練中被不斷優(yōu)化,進(jìn)而來(lái)實(shí)現(xiàn)最好的分類結(jié)果.最后,由一個(gè)激活函數(shù)得到輸出特征圖. 假設(shè)卷積層的輸入特征映射組為XM×N×D,其中每一個(gè)輸入特征映射為Xd∈RM×N,1 ≤d≤D.卷積核為W ∈RU×V×P×D,其中每一個(gè)矩陣Wp,d∈RU×V為 一個(gè)二維卷積核,1 ≤p≤P,1 ≤d≤D.輸出映射組YM'×N'×P,其中每一個(gè)輸出特征映射為Yp∈RM'×N',1 ≤p≤P. 計(jì)算輸出特征映射YP∈RM'×N',首先要用卷積核W(p,1),W(p,2),…,W(p,D)分別對(duì)輸入特征映射X1,X2,…,XD進(jìn)行卷積,卷積后把每個(gè)結(jié)果相加到一起,再加一個(gè)偏置bp便可以得出卷積層的凈輸入Zp,然后通過(guò)一個(gè)激活函數(shù)后就得到輸出特征映射[7]. 常用的激活函數(shù)有Sigmoid、Tanh、Relu等,Sigmoid、Tanh比較常見(jiàn)于全連接層,Relu常見(jiàn)于卷積層.Relu常見(jiàn)于卷積層.激活函數(shù)的作用是用來(lái)加入非線性因素,因而把卷積層輸出結(jié)果叫做非線性映射. 池化層一般加在卷積層后,用來(lái)減少特征的數(shù)量,對(duì)特征進(jìn)行選擇,縮小輸入圖片的像素,進(jìn)而減少全連接層學(xué)習(xí)參數(shù)的數(shù)量.池化層也可以看做一個(gè)的卷積層,卷積核為max函數(shù)或mean函數(shù).使用最大值操作的池化層被稱之為最大池化層.最大池化保留了每個(gè)區(qū)域內(nèi)的最大值,即保留了這一區(qū)域內(nèi)的最佳匹配結(jié)果.使用平均值操作的池化層被稱之為平均池化層.池化層卷積核的尺寸、步長(zhǎng)是人工設(shè)置的[7-8]. 假設(shè)XM×N×D為池化層的輸入特征映射組,將每個(gè)特征映射Xd∈RM×N,1 ≤d≤D劃分成多個(gè)區(qū)域,xi為指定區(qū)域內(nèi)每個(gè)神經(jīng)元的值.池化指的是對(duì)每一個(gè)區(qū)域進(jìn)行下采樣操作并得到一個(gè)值,該值作為這個(gè)區(qū)域的概括[1]. (1)最大池化:選取指定區(qū)域Rdm,n內(nèi)最大的一個(gè)數(shù)來(lái)代表整片區(qū)域,即 其中xi為指定區(qū)域內(nèi)每個(gè)神經(jīng)元的值. (2)平均池化:選取指定區(qū)域內(nèi)數(shù)值的平均值來(lái)代表整片區(qū)域,即 通過(guò)對(duì)輸入特征映射Xd的M'×N'個(gè)區(qū)域都進(jìn)行子采樣操作,便得到代表每個(gè)區(qū)域的特征值,進(jìn)而得到池化層的輸出映射Yd={} ,1 ≤m≤M',1 ≤n≤N'.圖2給出池化層中最大池化和平均池化示例. 圖2 最大池化和平均池化示例 全連接層是特征提取的輸出表達(dá),它的作用就是CNN中的“分類器”.把最終輸出的特征映射作為全連接層的輸入特征向量,其維數(shù)等于最后一個(gè)輸出特征映射層的網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)量.基于該輸入的特征向量,在全連接層訓(xùn)練分類器模型以進(jìn)行分類識(shí)別[9]. 在全連接網(wǎng)絡(luò)中,損失函數(shù)的梯度是通過(guò)每一層的敏感度δ進(jìn)行反向傳播,來(lái)計(jì)算參數(shù)的梯度.在卷積網(wǎng)絡(luò)中,參數(shù)為卷積核中的權(quán)重和偏置.設(shè)第l層為卷積層,且第l-1層的輸出特征映射組為X(l-1)∈RM×N×D,即第l層的輸入特征映射組為{X(l-1,1),X(l-1,2),…,X(l-1,D)}.再設(shè)第l層的第p個(gè)卷積核為{W(l,p,1),W(l,p,2),…,W(l,p,D)} 及第p個(gè)偏置為b(l,p),即卷積核的深度為D.其中W(l,p,d)∈RU×V,1 ≤p≤P,1 ≤d≤D.則經(jīng)過(guò)卷積計(jì)算得到的第l層的第p個(gè)特征映射的凈輸入為 第l層中共有P個(gè)卷積核和P個(gè)偏置,每個(gè)卷積核的深度為D,因此共P×D個(gè)二維卷積核,可以使用鏈?zhǔn)椒▌t來(lái)計(jì)算卷積核的參數(shù)和偏置的梯度[1]. 性質(zhì)1 損失函數(shù)loss關(guān)于第l層的卷積核W(l,p,d)的偏導(dǎo)數(shù)為 證明:設(shè)第l層的輸入特征映射組為{X(l-1,1),X(l-1,2),…,X(l-1,D)} ,其中X(l-1,d)∈RM×N;第l層第p個(gè)的卷積核為{W(l,p,1),W(l,p,2),…,W(l,p,D)} ,其中W(l,p,d)∈RU×V.根據(jù)卷積定義公式(1)可知,在零填充步長(zhǎng)為1的情況下第l層第p個(gè)特征映射共有(M-U+ 1) ×(N-V+ 1)個(gè)神經(jīng)元,其集合記為,其中1 ≤i≤M-U+ 1,1 ≤j≤N-V+ 1.每個(gè)神經(jīng)元都是二維卷積核W(l,p,d)的函數(shù). 由公式(1)和(11)知,第l層第p個(gè)特征映射的任意一個(gè)神經(jīng)元的凈輸入為 因此,對(duì)于任意的權(quán)值,由導(dǎo)數(shù)的鏈?zhǔn)椒▌t有 由公式(13) 故可知 性質(zhì)2 損失函數(shù)loss關(guān)于第l層第p個(gè)特征映射的偏置b(l,p)的偏導(dǎo)數(shù)為 證明:設(shè)第l層的輸入特征映射組為{X(l-1,1),X(l-1,2),…,X(l-1,D)} ,其中X(l-1,d)∈RM×N;第l層第p個(gè)的卷積核為{W(l,p,1),W(l,p,2),…,W(l,p,D)} ,其中W(l,p,d)∈RU×V.根據(jù)卷積定義公式(1)可知,在零填充步長(zhǎng)為1的情況下第l層第p個(gè)特征映射共有(M-U+ 1) ×(N-V+ 1)個(gè)神經(jīng)元,其集合記為,其中1 ≤i≤M-U+ 1,1 ≤j≤N-V+ 1.每個(gè)神經(jīng)元都是二維卷積核W(l,p,d)的函數(shù). 由公式(12)知,對(duì)于偏置b(l,p),由導(dǎo)數(shù)的鏈?zhǔn)椒▌t有 性質(zhì)3 當(dāng)?shù)趌+ 1層為卷積層時(shí),第l層第d個(gè)特征映射的敏感度矩陣為 其中fl(?)是第l層的激活函數(shù),fl′(?)是fl(?)的導(dǎo)數(shù),⊙表示矩陣的點(diǎn)對(duì)點(diǎn)乘積. 證明:設(shè)第l+ 1層的輸入特征映射組為{X(l,1),X(l,2),…,X(l,D)} ,其中X(l,d)∈RM'×N';第l+ 1層第p個(gè)的卷積核 為{W(l+1,p,1),W(l+1,p,2),…,W(l+1,p,D)} ,其 中W(l+1,p,d)∈RU'×V';第l+ 1層的第p個(gè) 偏置為b(l+1,p).由公式(11)知,第l+ 1層的第p個(gè)特征映射凈輸入為 因 為X(l,d)=fl(Z(l,d)),所 以 對(duì) 于X(l,d)的 任 意 一 個(gè) 元 素和 其 相 對(duì) 應(yīng) 的Z(l,d)中 的 元 素由公式(20)知 設(shè)為第l層第d個(gè)特征映射的敏感度矩陣δ(l,d)中的一個(gè)元素.由的定義可知, 性質(zhì)4 當(dāng)?shù)趌+ 1層為池化層時(shí),第l層第p個(gè)特征映射的敏感度為 其中up(δ(l+1,p))為上采樣結(jié)果. 證明:設(shè)第l層的第p個(gè)特征映射凈輸入為Z(l,p),相應(yīng)的特征映射輸出為X(l,p)=fl(Z(l,p)),第l+ 1層的第p個(gè)特征映射的池化核為W(l+1,p)∈RU × V,其中fl(?)是第l層的激活函數(shù).再設(shè)的由W(l+1,p)覆蓋的任意子區(qū)域,為與對(duì)應(yīng)的Z(l,p)的子區(qū)域,則有為第l+ 1層的第p個(gè)特征映射的與相對(duì)應(yīng)的神經(jīng)元的凈輸入,即 其中g(shù)(?)是池化函數(shù),(m,n)為左上角的坐標(biāo).設(shè)是的任意元素,則中存在相對(duì)應(yīng)的元素,它們都與唯一對(duì)應(yīng),且有=fl().因此 深度學(xué)習(xí)是模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),已經(jīng)極大地促進(jìn)了機(jī)器學(xué)習(xí)的發(fā)展.隨著深度學(xué)習(xí)方法在諸多領(lǐng)域的不斷深入研究,深層卷積神經(jīng)網(wǎng)絡(luò)在特征學(xué)習(xí)、目標(biāo)分類、邊框回歸等方面的應(yīng)用表現(xiàn)出的優(yōu)勢(shì)已愈發(fā)突出.本文主要介紹了深度卷積神經(jīng)網(wǎng)絡(luò)模型、卷積神經(jīng)網(wǎng)絡(luò)算法定義以及卷積層和池化層的參數(shù)計(jì)算方法和反向傳播下參數(shù)的計(jì)算方法的推導(dǎo)公式.深度卷積神經(jīng)網(wǎng)絡(luò)模型原理并不復(fù)雜,但要從數(shù)學(xué)符號(hào)來(lái)描述并且真正的理解掌握它,就必須要理解其數(shù)學(xué)公式的表示以及推導(dǎo)過(guò)程.1.2 卷積的類型
2 CNN的結(jié)構(gòu)
2.1 卷積層
2.2 池化層(下采樣層)
2.3 全連接層
3 CNN的參數(shù)學(xué)習(xí)
3.1 卷積核和偏置的梯度計(jì)算
3.2 卷積神經(jīng)網(wǎng)絡(luò)的反向傳播算法
4 總結(jié)
渤海大學(xué)學(xué)報(bào)(自然科學(xué)版)2021年4期