天天看點

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

文章目錄

  • 一、卷積運算
    • 對比數學中的卷積運算
  • 二、激活函數
  • 三、池化層
  • 四、輸入輸出通道
  • 五、參考文章

卷積神經網絡,也就是convolutional neural networks (簡稱CNN)

卷積神經網絡的主要核心結構:輸入-> 卷積+激活函數->池化->輸出

一、卷積運算

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖1

中間黑色大圖就是我們的輸入資料。藍色框就是我們的卷積核所在的位置

左上角為卷積核(大小是3*3)。将卷積核這個“小紙片”,蓋到原圖的大紙片上,卷積核與原圖對應位置的資料作乘法,并寫到相應的地方,作為運算的結果。

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖2

整個藍色框計算結束後,我們會得到一個充滿資料的新框框(上分白色小正方形)。然後我們需要對其求**均值**,讓這個均值作為這片區域特征的一個代表。

均值隻是一種處理方式,也可以使用求和作為區域特征的代表。一樣可以實作核心思想:框内每個小格的值越大,和卷積核的特征越符合

新的了解:可以把卷積核當做一個

濾波器

,傳入圖像為信号。越符合濾波器(卷積核)的信号(圖像),通過卷積核後保留的部分越多(乘積越大)。

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖3

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖4

蓋上卷積核,計算對應位置乘積,然後求均值。接下來按照給定的stride(步長)進行卷積核的移動,直到把整個輸入都完全覆寫。stride=1,向平移1格

将整個圖計算一遍之後,會得到一個特征圖(feature map)。特征圖是輸入通過卷積核運算後,反映特征的所在位置的圖。(特征圖size必定比輸入size小,除非kernel_size = 1)

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖5

在取值(-1,1)的灰階圖中,越接近1,表示這片區域的特征越匹特配。越接近-1,和特征的反面越比對。越接近0,說明和特征的比對不明顯。

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖6 不同的卷積核(濾波器)運算後的結果

對比數學中的卷積運算

卷積的數學公式:

連續:

( f ∗ g ) ( n ) = ∫ − ∞ + ∞ f ( τ ) g ( n − τ ) d τ (f*g)(n)=\int ^{+\infty}_ {-\infty} f(\tau) g(n-\tau){\rm d}\tau (f∗g)(n)=∫−∞+∞​f(τ)g(n−τ)dτ

離散:

( f ∗ g ) ( n ) = ∑ − ∞ + ∞ f ( τ ) g ( n − τ ) d τ (f*g)(n)=\sum ^{+\infty}_ {-\infty} f(\tau) g(n-\tau){\rm d}\tau (f∗g)(n)=−∞∑+∞​f(τ)g(n−τ)dτ

PS:關于卷積有意思的解釋。卷積的數學意義在于權重疊加。怎麼了解呢?

另外一個關于卷積的有意思的解釋

看了好多關于卷積的答案,看到這個例子才徹底地了解了這個過程~

關于卷積的一個血腥的講解

比如說你的老闆指令你幹活,你卻到樓下打撞球去了,後來被老闆發現,他非常氣憤,扇了你一巴掌(注意,這就是輸入信号,脈沖),于是你的臉上會漸漸地(賤賤地)鼓起來一個包,你的臉就是一個系統,而鼓起來的包就是你的臉對巴掌的響應,好,這樣就和信号系統建立起來意義對應的聯系。下面還需要一些假設來保證論證的嚴謹:假定你的臉是線性時不變系統,也就是說,無論什麼時候老闆打你一巴掌,打在你臉的同一位置(這似乎要求你的臉足夠光滑,如果你說你長了很多青春痘,甚至整個臉皮處處連續處處不可導,那難度太大了,我就無話可說了哈哈),你的臉上總是會在相同的時間間隔内鼓起來一個相同高度的包來,并且假定以鼓起來的包的大小作為系統輸出。好了,那麼,下面可以進入核心内容——卷積了!

如果你每天都到地下去打撞球,那麼老闆每天都要扇你一巴掌,不過當老闆打你一巴掌後,你5分鐘就消腫了,是以時間長了,你甚至就适應這種生活了……如果有一天,老闆忍無可忍,以0.5秒的間隔開始不間斷的扇你的過程,這樣問題就來了,第一次扇你鼓起來的包還沒消腫,第二個巴掌就來了,你臉上的包就可能鼓起來兩倍高,老闆不斷扇你,脈沖不斷作用在你臉上,效果不斷疊加了,這樣這些效果就可以求和了,結果就是你臉上的包的高度随時間變化的一個函數了(注意了解);如果老闆再狠一點,頻率越來越高,以至于你都辨識不清時間間隔了,那麼,求和就變成積分了。可以這樣了解,在這個過程中的某一固定的時刻,你的臉上的包的鼓起程度和什麼有關呢?和之前每次打你都有關!但是各次的貢獻是不一樣的,越早打的巴掌,貢獻越小,是以這就是說,某一時刻的輸出是之前很多次輸入乘以各自的衰減系數之後的疊加而形成某一點的輸出,然後再把不同時刻的輸出點放在一起,形成一個函數,這就是卷積,卷積之後的函數就是你臉上的包的大小随時間變化的函數。本來你的包幾分鐘就可以消腫,可是如果連續打,幾個小時也消不了腫了,這難道不是一種平滑過程麼?反映到劍橋大學的公式上,f(a)就是第a個巴掌,g(x-a)就是第a個巴掌在x時刻的作用程度,乘起來再疊加就ok了,大家說是不是這個道理呢?我想這個例子已經非常形象了,你對卷積有了更加具體深刻的了解了嗎?

數學卷積公式和卷積神經網絡相關性展現

卷積神經網絡中的卷積運算,和數學當中的卷積也是有聯系的。卷積之是以能提取特征,是因為輸入信号和濾波器(卷積核)的相關性,反映到了輸出當中。我想要的特征,反映在卷積核上,輸入圖檔的特征和卷積核越是相似,輸出越大(被過濾的越少)

二、激活函數

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖7

激活函數的目的是進一步的篩選資料特征。舉例常見的Relu函數:當x<=0,y=0;x>0,y=x。對于小于0的部分,經過激活函數後,被抹除。而大于0的部分,特征的情況得以保留。

三、池化層

池化的目的是為了進一步的減少無關資訊,突出有效資訊的部分。

以max_pool為例:

max_pool将區域内的最大值進行輸出。然後根據設定的ride(步長)進行移動。

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖8

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖9

四、輸入輸出通道

卷積神經網絡(CNN)原理以及個人了解一、卷積運算二、激活函數三、池化層四、輸入輸出通道五、參考文章

盜圖10

如圖,28*28的原始輸入,分成3個通道輸出,進入卷積層運算。每個卷積的通道之間互相獨立(權重、偏移不共享)。單個卷積通道的權重和偏移量(bias)共享。

輸入的通道數取決于上一層。例如原始輸入為彩色圖時,可以三通道(RGB)作為卷積層的輸入通道。若為灰階圖,可以一通道輸入。

五、參考文章

1.https://zhuanlan.zhihu.com/p/27908027

2.https://blog.csdn.net/bitcarmanlee/article/details/54729807

繼續閱讀