卷積神經網路引數

2021-10-01 11:59:39 字數 3037 閱讀 6855

卷積神經網路(convolutional neural network, cnn)是深度學習技術中極具代表的網路結構之一,在影象處理領域取得了很大的成功,在國際標準的imagenet資料集上,許多成功的模型都是基於cnn的。cnn相較於傳統的影象處理演算法的優點之一在於,避免了對影象複雜的前期預處理過程(提取人工特徵等),可以直接輸入原始影象。影象處理中,往往會將影象看成是乙個或多個的二維向量,如mnist手寫體就可以看做是乙個28 × 28的二維向量(黑白,只有乙個顏色通道;如果是rgb表示的彩色則有三個顏色通道,可表示為三張二維向量)。傳統的神經網路都是採用全連線的方式,即輸入層到隱藏層的神經元都是全部連線的,這樣做將導致參數量巨大,使得網路訓練耗時甚至難以訓練,而cnn則通過區域性連線、權值共享等方法避免這一困難。

在影象處理中,往往把影象表示為畫素的向量,比如乙個1000×1000的影象,可以表示為乙個1000000的向量。在上一節中提到的神經網路中,如果隱含層數目與輸入層一樣,即也是1000000時,那麼輸入層到隱含層的引數資料為1000000×1000000=10^12,這樣就太多了,基本沒法訓練。所以影象處理要想練成神經網路**,必先減少引數加快速度。卷積神經網路有兩種神器可以降低引數數目,就是cnn中的區域性連線(sparse connectivity)和權值共享(shared weights)方法,理解它們很重要。

左邊是全連線,右邊是區域性連線。對於乙個1000 × 1000的輸入影象而言,如果下乙個隱藏層的神經元數目為106

10^6

106個,採用全連線則有1000

×1000×1

06=1

012

1000 × 1000 × 10^6 = 10^

1000×1

000×

106=

1012

個權值引數,如此數目巨大的引數幾乎難以訓練;而採用區域性連線,隱藏層的每個神經元僅與影象中10 × 10的區域性影象相連線,那麼此時的權值引數數量為10×10

×106

=108

10 × 10 × 10^6 = 10^8

10×10×

106=

108,將直接減少4個數量級。

儘管減少了幾個數量級,但引數數量依然較多。能不能再進一步減少呢?能!方法就是權值共享。具體做法是,在區域性連線中隱藏層的每乙個神經元連線的是乙個10 × 10的區域性影象,因此有10 × 10個權值引數,將這10 × 10個權值引數共享給剩下的神經元,也就是說隱藏層中10^6個神經元的權值引數相同,那麼此時不管隱藏層神經元的數目是多少,需要訓練的引數就是這 10 × 10個權值引數(也就是卷積核(也稱濾波器)的大小)。

在通過卷積獲得了特徵 (features) 之後,下一步我們希望利用這些特徵去做分類。理論上講,人們可以用所有提取得到的特徵去訓練分類器,例如 softmax 分類器,但這樣做面臨計算量的挑戰。例如:對於乙個 96x96 畫素的影象,假設我們已經學習得到了400個定義在8x8輸入上的特徵,每乙個特徵和影象卷積都會得到乙個 (96 − 8 + 1) × (96 − 8 + 1) = 7921 維的卷積特徵,由於有 400 個特徵,所以每個樣例 (example) 都會得到乙個 7921 × 400 = 3,168,400 維的卷積特徵向量。學習乙個擁有超過 3 百萬特徵輸入的分類器十分不便,並且容易出現過擬合 (over-fitting)。

為了解決這個問題,首先回憶一下,我們之所以決定使用卷積後的特徵是因為影象具有一種「靜態性」的屬性,這也就意味著在乙個影象區域有用的特徵極有可能在另乙個區域同樣適用。因此,為了描述大的影象,乙個很自然的想法就是對不同位置的特徵進行聚合統計,例如,人們可以計算影象乙個區域上的某個特定特徵的平均值 (或最大值)。這些概要統計特徵不僅具有低得多的維度 (相比使用所有提取得到的特徵),同時還會改善結果(不容易過擬合)。這種聚合的操作就叫做池化 (pooling),有時也稱為平均池化或者最大池化 (取決於計算池化的方法)。

就是卷積層,是卷積神經網路(cnn)的核心層。

層型別:convolution

必須設定的引數:

也叫池化層,為了減少運算量和資料維度而設定的一種層。

層型別:pooling

必須設定的引數:

pooling層的運算方法基本是和卷積層是一樣的。

輸入:n∗c

∗w0∗

h0

n*c*w0*h0

n∗c∗w0

∗h0輸出:n∗c

∗w1∗

h1

n*c*w1*h1

n∗c∗w1

∗h1和卷積層的區別就是其中的c保持不變

w 1=

(w0+

2∗pa

d−ke

rnel

size

)/st

ride

+1

w1=(w0+2*pad-kernel_size)/stride+1

w1=(w0

+2∗p

ad−k

erne

ls​i

ze)/

stri

de+1;h1

=(h0

+2∗p

ad−k

erne

lsiz

e)/s

trid

e+

1h1=(h0+2*pad-kernel_size)/stride+1

h1=(h0

+2∗p

ad−k

erne

ls​i

ze)/

stri

de+1

;如果設定stride為2,前後兩次卷積部分不重疊。100

∗100

100*100

100∗10

0的特徵圖池化後,變成50∗50

50*50

50∗50.

參考:雨石

denny402

coooooooooooooder

an intuitive explanation of convolutional neural networks

神經網路 卷積神經網路

這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...

神經網路 卷積神經網路

1.卷積神經網路概覽 來自吳恩達課上一張,通過對應位置相乘求和,我們從左邊矩陣得到了右邊矩陣,邊緣是白色寬條,當畫素大一些時候,邊緣就會變細。觀察卷積核,左邊一列權重高,右邊一列權重低。輸入,左邊的部分明亮,右邊的部分灰暗。這個學到的邊緣是權重大的寬條 都是30 表示是由亮向暗過渡,下面這個圖左邊暗...

卷積神經網路 有趣的卷積神經網路

一 前言 最近一直在研究深度學習,聯想起之前所學,感嘆數學是一門樸素而神奇的科學。f g m1 m2 r 萬有引力描述了宇宙星河運轉的規律,e mc 描述了恆星發光的奧秘,v h d哈勃定律描述了宇宙膨脹的奧秘,自然界的大部分現象和規律都可以用數學函式來描述,也就是可以求得乙個函式。神經網路 簡單又...