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