卷積神經(jīng)網(wǎng)絡(luò)中的參數(shù)共享/權(quán)重復(fù)制
參數(shù)共享或權(quán)重復(fù)制是深度學(xué)習(xí)中經(jīng)常被忽略的領(lǐng)域。但是了解這個簡單的概念有助于更廣泛地理解卷積神經(jīng)網(wǎng)絡(luò)的內(nèi)部。卷積神經(jīng)網(wǎng)絡(luò)(cnn)能夠使那些通過網(wǎng)絡(luò)饋送的圖像在進行仿射變換時具有不變性。 這個特點提供了識別偏移圖案、識別傾斜或輕微扭曲的圖像的能力。
仿射不變性的這些特征是由于CNN架構(gòu)的三個主要屬性而引入的。
- 局部感受領(lǐng)域
- 權(quán)值共享(參數(shù)共享)
- 空間的采樣
在本文中,我們將探索權(quán)值共享,并了解它們的用途以及它們在CNN架構(gòu)中的優(yōu)勢。本文針對從事機器學(xué)習(xí)或更具體地說是深度學(xué)習(xí)的各個層次的人。
介紹
讓我們首先在腦海中演示CNN中的一個卷積層。。
CNN中的卷積層(conv層)包含一組單元,這些單元也可以稱為神經(jīng)元。
conv層還包括層內(nèi)的幾個過濾器,這是一個預(yù)定義的超參數(shù)。
一個層內(nèi)過濾器的數(shù)量表示激活/特征映射的輸出量的深度維度,該映射由conv層創(chuàng)建,作為下一層的輸入。
每一個濾波器都有一個設(shè)定的寬度和高度,對應(yīng)于層內(nèi)單個單元的局部接收場。作用于輸入數(shù)據(jù)的濾波器產(chǎn)生一個卷積層的輸出,即特征映射。
在CNN的訓(xùn)練階段,可以學(xué)習(xí)過濾器中的權(quán)重值。卷卷積層的輸出維數(shù)有一個深度分量,如果我們對輸出的每一段進行分割,我們將得到一個二維平面的特征映射。在單個二維平面上使用的過濾器包含一個權(quán)重,該權(quán)重在同一平面上使用的所有過濾器之間共享。
這樣做的好處是,我們在輸入數(shù)據(jù)的另一部分與輸入數(shù)據(jù)的另一部分保持相同的特征檢測器。
卷積層的輸出是一組特征圖,其中每個特征圖是單元內(nèi)固定權(quán)重參數(shù)與輸入數(shù)據(jù)之間的卷積運算結(jié)果。
卷積神經(jīng)網(wǎng)絡(luò)層的一個基本特征是它的特征映射能夠反映對輸入圖像所做的任何仿射變換,而這些仿射變換是通過輸入層輸入的。
因此,對輸入數(shù)據(jù)進行任何偏移、傾斜或定向,特征映射都將提供一個輸出,該輸出將根據(jù)輸入數(shù)據(jù)所受的量進行偏移、傾斜或定向。
將理論付諸實踐
本節(jié)的目的是揭示卷積神經(jīng)網(wǎng)絡(luò)中發(fā)生的權(quán)值共享的好處。
我們將在兩種流行的CNN架構(gòu)(LeNet和AlexNet)的第一個卷積層中得出不同權(quán)值共享和權(quán)值共享的可訓(xùn)練權(quán)重的數(shù)量。
以下是要采取的步驟:·
1. 獲取conv 層的輸出寬度
(輸入大小的寬度-過濾器大小+(2 * Padding)/步幅)+1 =卷積層的輸出寬度
- 計算conv層中神經(jīng)元/單位的數(shù)量
- 計算沒有使用權(quán)值共享的訓(xùn)練參數(shù)的數(shù)量(包括偏差)
- 計算使用權(quán)值共享的訓(xùn)練參數(shù)(包括偏差)的數(shù)量
下表描述了來自AlexNet和LeNet CNN架構(gòu)的信息,這些信息將用于得出卷積層內(nèi)訓(xùn)練參數(shù)/權(quán)重的數(shù)量。
AlexNet
- conv層的輸出寬度:=((227-11)/ 4)+1= 55(conv層輸出寬度)
- conv層中神經(jīng)元/單位的數(shù)量=輸出高度*輸出寬度*特征圖的數(shù)量= 55*55*96(轉(zhuǎn)換輸出量)= 290,400單位
- conv層內(nèi)的訓(xùn)練參數(shù)或權(quán)重數(shù)(不使用權(quán)值共享)= 290400 *((11* 11 * 3)+ 1偏差)=105,415,600
- 使用權(quán)值共享的訓(xùn)練參數(shù)或權(quán)重的數(shù)量= 96 *((11 * 11 *3)+1個偏差)= 34944
LeNet
- conv層的輸出寬度:=(((28–5)/ 1)+1= 24(conv層輸出寬度)
- conv層中神經(jīng)元/單位的數(shù)量=輸出高度*輸出寬度*特征圖的數(shù)量= 24*24*6(轉(zhuǎn)換輸出量)= 3,456單位
- conv層內(nèi)的訓(xùn)練參數(shù)或權(quán)重數(shù)(不使用權(quán)值共享)= 3456 *((5 * 5 * 1)+ 1偏差)=89,856
- 使用權(quán)值共享的訓(xùn)練參數(shù)或權(quán)重的數(shù)量= 6 *((5 * 5 * 1)+1偏差)= 156
總結(jié)
顯然,通過參數(shù)共享,我們可以減少conv層中的權(quán)重數(shù)量。
參數(shù)共享用于網(wǎng)絡(luò)中的所有conv層。
參數(shù)共享減少了訓(xùn)練時間; 這是減少反向傳播過程中必須進行的權(quán)重更新次數(shù)的直接好處。
重申一下,當(dāng)根據(jù)過濾器與卷積層中某個平面內(nèi)某個單元的輸入數(shù)據(jù)之間的卷積結(jié)果生成特征圖時就會產(chǎn)生參數(shù)共享。 此層平面內(nèi)的所有單元共享相同的權(quán)重;因此稱為權(quán)重/參數(shù)共享。