通俗理解CNN-卷積神經網絡

CNN

卷積神經網絡(Convolution Neural Network, CNN)最早使用於圖像領域,通常有多個卷積層+池化層組成,最後再拼接全連接層做分類。卷積層主要是執行卷積操作提取圖片底層到高層的特徵,池化層主要是執行降採樣操作,可以過濾掉一些不重要的高頻信息。(降採樣是圖像處理中常見的一種操作)

通俗理解CNN-卷積神經網絡

神經網絡

神經網絡由大量的神經元相互連接而成。每個神經元接受線性組合的輸入後,最開始只是簡單的線性加權,後來給每個神經元加上了非線性的激活函數,從而進行非線性變換後輸出。

通俗理解CNN-卷積神經網絡

X1和X2表示輸入向量

w1、w2為權重,幾個輸入則意味著有幾個權重,即每個輸入都被賦予一個權重

b為偏置bias

g(z) 為激活函數

a 為輸出

多個神經元組織在一起,便形成了神經網絡。下圖便是一個三層神經網絡結構

通俗理解CNN-卷積神經網絡

tips: 什麼網絡的 輸入層 隱藏層 輸出層?

輸入層(Input layer):眾多神經元(Neuron)接受大量非線性輸入訊息。輸入的訊息稱為輸入向量。

輸出層(Output layer):訊息在神經元鏈接中傳輸、分析、權衡,形成輸出結果。輸出的訊息稱為輸出向量。

隱藏層(Hidden layer):簡稱“隱層”,是輸入層和輸出層之間眾多神經元和鏈接組成的各個層面。如果有多個隱藏層,則意味著多個激活函數。

卷積層

卷積計算層,線性乘積 求和。卷積層是CNN的核心。

對圖像(不同的數據窗口數據)和濾波矩陣(一組固定的權重:因為每個神經元的多個權重固定,所以又可以看做一個恆定的濾波器filter)做內積(逐個元素相乘再求和)的操作就是所謂的『卷積』操作

綠色表示輸入的圖像,可以是一張黑白圖片,0是黑色像素點,1是白色像素點。黃色就卷積核(kernal),也叫過濾器(filter)或特徵檢測器(feature detector),通過卷積,對圖片的像素點進行加權,作為這局部像素點的響應,獲得圖像的某種特徵。

通俗理解CNN-卷積神經網絡

卷積的過程,就是滑動這個黃色的矩陣,以一定的步長向右和向下移動,從而得到整個圖像的特徵表示。

舉個例子:上圖中輸入的綠色矩陣表示一張人臉,黃色矩陣表示一個眼睛,卷積過程就是拿這個眼睛去匹配這張人臉,那麼當黃色矩陣匹配到綠色矩陣(人臉)中眼睛部分時,對應的響應就會很大,得到的值就越大。

再舉個例子:下圖中左邊部分是原始輸入數據,圖中中間部分是卷積層,圖中右邊是輸出的新的二維數據。

通俗理解CNN-卷積神經網絡

激勵層

激勵層就是我們前面介紹神經單元的激勵函數。

常用的非線性激活函數有sigmoid、tanh、relu

1.sigmoid函數g(z)的圖形表示如下(把一個實數壓縮至0到1之間,處理分類問題

通俗理解CNN-卷積神經網絡

2.激活函數:ReLU,圖形表示如下(收斂快,求梯度簡單。)

通俗理解CNN-卷積神經網絡

池化層POOL

前面卷積的過程,實際上"重疊"計算了很多冗餘的信息,池化就是對卷積後的特徵進行篩選,提取關鍵信息,過濾掉一些噪音,通常用的是max pooling和mean pooling,取區域平均或者最大。

通俗理解CNN-卷積神經網絡

每個顏色的方框是卷積處理之後的矩陣,左上角矩陣的最大值是6,右上角矩陣的最大值是3,右下角矩陣最大值是4。同樣池化可以用平均值來處理。

通俗理解CNN-卷積神經網絡

CNN層級結構示例

通俗理解CNN-卷積神經網絡

CONV:卷積層

RELU:激勵層

POOL:池化層

卷積神經網絡就是多層神經網絡,不斷卷積,激勵,池化的結果,最終輸出網絡的判斷結果。

文本卷積神經網絡

在自然語言處理中,我們要處理的對象是文字,這裡介紹的主要是文本卷積神經網絡,首先我們將輸入的query表示層詞向量序列,然後使用卷積去處理輸入的詞向量序列,就會產生一個特徵圖(feature map),對特徵圖採用時間維度上的最大池化(max pooling over time)操作,就得到此卷積核對應的整句話的特徵,最後,將所有卷積核得到的特徵拼接起來即為文本的定長向量表示,對於文本分類問題,將其連接至softmax即構建出完整的模型。

通俗理解CNN-卷積神經網絡

在實際應用中,我們會使用多個卷積核來處理句子,窗口大小相同的卷積核堆疊起來形成一個矩陣,這樣可以更高效的完成運算。另外,我們也可使用窗口大小不同的卷積核來處理句子,如上圖,不同顏色表示不同大小的卷積核操作。


分享到:


相關文章: