以卷積結構為主,搭建起來的深度網絡(一般都指深層結構的)
CNN目前在很多很多研究領域取得了巨大的成功,例如: 語音識別,圖像識別,圖像分割,自然語言處理等。對于大型圖像處理有出色表現。
一般將圖片作為網絡的輸入,自動提取特征,并且對圖片的變形(平移,比例縮放)等具有高度不變形
上圖是手寫識別的卷積神經網絡模型,我們可以發現卷積神經網絡的重要組成部分:
卷積層、池化層、激活層、BN層、LOSS層、其它層
卷積的基本定義
卷積就是一種運算,是對圖像和濾波矩陣做內積(逐個元素相乘再求和)的操作。
每一種卷積對應一種特征。
其中濾波矩陣在深度學習中,我們稱之為卷積核。換句話說,我們一般可以將卷積看成濾波器。比如我們可以通過濾波器對圖像進行降噪,圖像的噪點就是高頻信號。在圖像處理中,有很多濾波器可以供我們選擇。每一種濾波器幫助我們提取不同的特征。比如水平/垂直/對角線邊緣等等。
可以看這篇回答 ^[1]^ ,挺通俗易懂的。
卷積層
卷積的核心是卷積核,核就是一組權重,它決定了一個像素點如何通過周圍的其他像素點計算獲得新的像素點數值。核也被稱之為卷積矩陣,它會對一塊區域的像素做調和運算或卷積運算。
一般最常用為2D卷積核(k_w * k_h),如 1x1,3x3, 5x5, 7x7
卷積核的數值都是奇數,因為奇數的卷積核有一個中心點
我們可以利用有中心點的特性來保護圖片位置信息,padding時對稱。
卷積還具有 權值共享 與 局部連接(局部感受野/局部感知)的特性。
在卷積層中權值共享是用來控制參數的數量。假如在一個卷積核中,每一個感受野采用的都是不同的權重值(卷積核的值不同),那么這樣的網絡中參數數量將是十分巨大的。
那么感受野是什么?感受野是卷積神經網絡每一層輸出的特征圖(Feature Map)上的像素點在原始圖像上映射的區域大小。(圖片來源于網絡,侵刪)
神經網絡中,卷積核越大,雖然感受野越大,但參數越多,結構就越復雜,越容易過擬合。另一方面,需要更多的數據來訓練,訓練的難度也會更大。所以一般我們采用小卷積核堆加的方式來,保證感知野盡量大,同時結構盡可能簡單,降低計算量。
Pad
pad可以讓你的輸入圖像不變小,而可以使用更深層的卷積.確保Feature Map整數倍變化,對尺度敏感的任務非常重要.
池化層
池化層的作用是對輸入的特征圖錯開行或列,壓縮特征圖大小,降低參數量和計算復雜度,也對特征進行了壓縮,提取主要特征,將語義相似的特征融合起來,對微小的平移和形變不敏感。包括平均池化和最大池化和隨機池化,平均池化領域內方差小,更多的保留圖像的背景信息,最大池化領域內均值偏移大,更多的保留圖像的紋理信息,隨機池化(Stochastic Pooling)則介于兩者之間。
值得注意的是:池化層是無參的。
池化層相較于卷積層相對簡單許多。如果圖像太大的時候,就需要減少訓練參數的數量,池化層須在隨后的卷積層之間周期性地被引進。池化的直接目的是為了減少圖像的空間大小。池化在每一個縱深維度上獨自完成,因此圖像的縱深保持不變。取一小塊區域,比如一個55的方塊,如果是最大值池化,那就選這25個像素點最大的那個輸出,如果是平均值池化,就把25個像素點取平均輸出。這樣在原來55的一個區域,現在只要一個值就能表示出來了。池化操作可以看做是一種強制性的模糊策略,不斷強制模糊增加特征的旋轉不變性。這樣當圖片無論如何旋轉時,經過池化之后結果特征都是近似的。
激活層
激活函數(Activation Function): 如果一旦將線性分量運用于輸入,就會需要運用一個非線性函數來組合實現達到任意函數的目的。激活函數能將輸入信號轉換為輸出信號。形如f(x * W+ b)就是應用激活函數后的輸出看起來的樣子,其中f()就是激活函數。如圖(添加激活函數后的神經元模型):
通俗點講:激活函數 增加網絡的非線性,進而提高網絡的表達能力
基本的常見激活函數有Sigmoid,ReLU和Softmax,下面簡單介紹一下:
1)Sigmoid:
它會將輸入的數值壓縮到0到1范圍內,比較適合輸出需求為概率的情況。但它在神經元的激活在接近0或1處時會飽和,在這些區域時的梯度幾乎為0,這就會導致梯度消失,這就會導致幾乎沒有信號能通過神經傳回上一層神經層。Sigmoid函數的輸出不是以零為中心的。如果是以零為中心的話,假設輸入神經元的數據總是為正數的話,那么關于w的梯度在反向傳播的過程中,將會出現一種情況:要么全是正數,要么全是負數,這就會導致梯度下降,權重更新時,出現形如“Z”字型的下降。
下圖:Sigmoid的函數圖像
2)ReLU:
與Sigmoid激活函數相比的它具有的獨特性是:單側抑制的特性和稀疏激活性。保留了step函數的生物學啟發(只有輸入超出閥值時神經元才會被激活) 相較于Sigmoid激活函數,ReLU激活函數能夠巨大地加速隨機梯度下降的收斂的速度;但由于ReLU單元比較脆弱,可能導致數據多樣性的丟失,且過程是不可逆的。所以使用時,需要謹慎。
3)Softmax:
Softmax激活函數通常用于輸出層,一般用于問題的分類。與Sigmoid激活函數相比,輸出被歸一化的總和為1是唯一的區別,其他就很類似。Sigmoid激活函數會阻止有二進制輸出,當遇到一個多類分類問題,Softmax激活函數會簡單化為每個類分配值的過程。
BatchNorm層
通過歸一化將數據分布拉回標準正態分布,使得梯度一直處于比較大的狀態;同時如果直接歸一化為均值為0方差為1的標準正太分布,就抹掉了前面學習的非線性表達能力,因此在batchnorm的實現過程中,增加了平移和縮放參數。保留了非線性。
BatchNorm層的優點:
- 減少了參數的人為選擇,使得調參更容易
- 初始化要求也沒那么高,減少了對學習率的要求,可以使用更大的學習率;
- 降低了數據之間的絕對差異,有去相關的作用,更多考慮相對差異,有利于分類;
- BN是一種正則,可以代替dropout,取消L2正則項參數,或者采取更小的L2正則項約束參數。
- BN本身就是歸一化網絡,一定程度上可以緩解過擬合,解決梯度消失問題。
全連接層
全連接層將學到的“分布式特征表示”映射到樣本標記空間。它是在整個卷積神經網絡中起到“分類器”的作用,將二維空間轉化成一維向量,將全連接層的輸出送入分類器或回歸器來做分類和回歸。
Dropout層
Dropout(隨機失活正則化),是一種正則化方法,通過對網絡某層的節點都設置一個被消除的概率,之后在訓練中按照概率隨機將某些節點消除掉,以達到正則化,降低方差的目的。
Dropout層可以解決過擬合問題,取平均的作用,減少神經元之間復雜的共適應關系
常見的卷積神經網絡結構
LeNet、AlexNet、ZFNet、VGGNet、Inception和ResNet和輕量型卷積神經網絡等等(這里就不展開講了,太多了,感興趣自行研究)
卷積的概念展開來講還是太多太深奧了,數學公式一大堆,小牛這段時間就簡單學習比較常見的部分,有些原理明白但無法用直白的語言寫出來,這部分寫的很吃力也不知道該寫些什么,就把筆記和以前寫的論文部分貼了貼。后面會盡快進入代碼部分。(這部分寫起來快自閉了- -)
參考:
《深度學習模型微服務化管理系統的設計與實現》
https://mlnotebook.github.io/post/CNN1/ https://zhuanlan.zhihu.com/p/47184529 https://blog.csdn.net/baidu_27643275/article/details/88711329 https://zhuanlan.zhihu.com/p/106142812
-
cnn
+關注
關注
3文章
352瀏覽量
22204 -
自然語言處理
+關注
關注
1文章
618瀏覽量
13553 -
卷積神經網絡
+關注
關注
4文章
367瀏覽量
11863
發布評論請先 登錄
相關推薦
評論