梅科尔工作室-深度学习第五讲 CNN-卷积神经网络
目錄
前言
1.計算機視覺
?1.1. 計算機視覺分類
2.?CNN
3. 卷積層
3.1. 什么是卷積
3.2. 動態卷積操作
4. 池化層
5.激活函數的作用
前言
本文記錄梅科爾工作室深度學習培訓的第五講CNN算法的學習筆記,感謝泓利哥的講解!
參考文章鏈接:CNN筆記:通俗理解卷積神經網絡_v_JULY_v的博客-CSDN博客_cnn卷積神經網絡
1.計算機視覺
計算機視覺的應用領域如下圖所示
?1.1. 計算機視覺分類
?(a) lmage Classification:
圖像分類,用于識別圖像中物體的類別(如: bottle、cup、cube)
(b) Object Localization:
目標檢測,用于檢測圖像中每個物體的類別,并準確標出它們的位置
(c) Semantic Segmentation:
圖像語義分割,用于標出圖像中每個像素點所屬的類別,屬于同一類別的像素點用一個顏色標識
(d) Instance Segmentation:
實例分割,值得注意的是。(b)中的目標檢測任務只需要標注出物體位置,而(d)中的實例分割任務不僅要標注出物體位置,還需要標注出物體的外形輪廓
2.?CNN
CNN的兩大特點:
?CNN解決的兩大問題:
?CNN層級結構如圖所示
最左邊是數據輸入層,對數據做一些處理,比如去均值(把輸入數據各個維度都中心化為0,避免數據過多偏差,影響訓練效果)、歸一化(把所有的數據都歸一到同樣的范圍)、PCA/白化等等。CNN只對訓練集做“去均值”這一步。
CONV:卷積計算層,線性乘積 求和。
RELU:激勵層,ReLU是激活函數的一種。
POOL:池化層,簡言之,即取區域平均或最大。
FC:全連接層
3. 卷積層
3.1. 什么是卷積
對圖像(不同的數據窗口數據)和濾波矩陣(一組固定的權重:因為每個神經元的多個權重固定,所以又可以看做一個恒定的濾波器filter)做內積(逐個元素相乘再求和)的操作就是所謂的『卷積』操作,也是卷積神經網絡的名字來源。
? ? 非嚴格意義上來講,下圖中紅框框起來的部分便可以理解為一個濾波器,即帶著一組固定權重的神經元。多個濾波器疊加便成了卷積層。
比如下圖中,圖中左邊部分是原始輸入數據,圖中中間部分是濾波器filter,圖中右邊是輸出的新的二維數據。(對應相乘再相加)
?
中間濾波器filter與數據窗口做內積,其具體計算過程則是:4*0 + 0*0 + 0*0 + 0*0 + 0*1 + 0*1 + 0*0 + 0*1 + -4*2 = -8
3.2. 動態卷積操作
?在CNN中,濾波器filter(帶著一組固定權重的神經元)對局部輸入數據進行卷積計算。每計算完一個數據窗口內的局部數據后,數據窗口不斷平移滑動,直到計算完所有數據。這個過程中,有這么幾個參數:?
a. 深度depth:神經元個數,決定輸出的depth厚度。同時代表濾波器個數。
b. 步長stride:決定滑動多少步可以到邊緣。?
c. 填充值zero-padding:在外圍邊緣補充若干圈0,避免邊緣值浪費
?動態演示如下:
?如上圖所示,可以分析出這個卷積操作中有
- 兩個神經元,即depth=2,意味著有兩個濾波器。
- 數據窗口每次移動兩個步長取3*3的局部數據,即stride=2。
- zero-padding=1。
4. 池化層
池化(Pooling),有的地方也稱匯聚,實際是一個下采樣(Down-sample)過程,用來縮小高、長方向的尺寸,減小模型規模,提高運算速度,同時提高所提取特征的魯棒性。簡單來說,就是為了提取一定區域的主要特征,并減少參數數量,防止模型過擬合。
池化層通常出現在卷積層之后,二者相互交替出現,并且每個卷積層都與一個池化層一一對應。
常用的池化函數有:平均池化(Average Pooling / Mean Pooling)、最大池化(Max Pooling)、最小池化(Min Pooling)和隨機池化(Stochastic Pooling)等,其中3種池化方式展示如下。
實例解析:?
?上圖所展示的是取區域最大,即上圖左邊部分中 左上角2x2的矩陣中6最大,右上角2x2的矩陣中8最大,左下角2x2的矩陣中3最大,右下角2x2的矩陣中4最大,所以得到上圖右邊部分的結果:6 8 3 4。
5.激活函數的作用
常用的非線性激活函數有sigmoid、tanh、relu等等,前兩者sigmoid/tanh比較常見于全連接層,后者relu常見于卷積層。這里先簡要介紹下最基礎的sigmoid函數。
?sigmoid的函數表達式如下
?其中z是一個線性組合,比如z可以等于:b?+?*?+?*。通過代入很大的正數或很小的負數到g(z)函數中可知,其結果趨近于0或1。
? ? 因此,sigmoid函數g(z)的圖形表示如下( 橫軸表示定義域z,縱軸表示值域g(z) ):
也就是說,sigmoid函數的功能是相當于把一個實數壓縮至0到1之間。當z是非常大的正數時,g(z)會趨近于1,而z是非常小的負數時,則g(z)會趨近于0。
? ? 壓縮至0到1有何用處呢?用處是這樣一來便可以把激活函數看作一種“分類的概率”,比如激活函數的輸出為0.9的話便可以解釋為90%的概率為正樣本。
? ? 舉個例子,如下圖(圖引自Stanford機器學習公開課)
但是實際梯度下降中,sigmoid容易飽和、造成終止梯度傳遞,且沒有0中心化,可以嘗試ReLU激活函數。?
ReLU激活函數?
?ReLU的優點是收斂快,求梯度簡單
總結
這次學習筆記到此結束,多是參考大佬的文章講解,此文章屬于入門級,這也是對于CNN的初步學習與理解,還需要更加深入的學習才能夠收獲更多。
總結
以上是生活随笔為你收集整理的梅科尔工作室-深度学习第五讲 CNN-卷积神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超详细的水果FL Studio21最新版
- 下一篇: 【AD学习记录】为什么原理图和PCB都在