一文讀懂卷積神經網絡

大數據文摘 發佈 2024-03-30T07:16:09.216817+00:00

大數據文摘轉載自數據派THU作者:陳之炎本文讓你讀懂卷積神經網絡。2022年有專家曾經預測:在視覺領域,卷積神經網絡(CNN)會和Transformer平分秋色。

大數據文摘轉載自數據派THU

作者:陳之炎

本文讓你讀懂卷積神經網絡。

2022年有專家曾經預測:在視覺領域,卷積神經網絡(CNN)會和Transformer平分秋色。隨著Vision Transformers (ViT)成像基準SOTA模型的發布, ConvNets的黎明業已到來,這還不算:Meta和加州大學伯克利分校的研究認為, ConvNets模型的性能優越於ViTs。

在視覺建模中,雖然Transformer很快取代了遞歸神經網絡,但是對於那些小規模的ML用例, ConvNet的使用量會出現陡降。而小型Transformer+ CNN(卷積神經網絡)的混合模型,即谷歌的MaxViT模型,具備475 M參數,幾乎與ConvNet-7完全匹配(89.5 3%),在ImageNet上的性能為90.88%,位居第一。

卷積神經網絡的靈感來自神經科學家D.H.Hubel和T.N.Wiesel,他們在研究哺乳動物的視覺皮層時發現視覺皮層由多層神經元組成,這些層以分層結構排列,從而組成複雜的神經元。神經認知機將一個視覺模式分解成許多子模式(特徵),然後進入分層遞階式相連的特徵平面進行處理,它試圖將視覺系統模型化,使其能夠在即使物體有位移或輕微變形的時候,也能完成識別。

卷積神經網絡是一種多層的監督學習神經網絡,基礎的CNN由 卷積(Convolution)、激活(Activation)和池化(Pooling)三種結構組成。隱含層的卷積層和池採樣層是實現卷積神經網絡特徵提取功能的核心模塊。該網絡模型通過採用梯度下降法求最小化損失函數,對網絡中的權重參數逐層反向調節,通過頻繁的疊代訓練提高網絡的精度。卷積神經網絡的低層由卷積層和最大池採樣層交替組成,高層是全連接層對應傳統多層感知器的隱含層和邏輯回歸分類器。第一個全連接層的輸入是由卷積層和子採樣層進行特徵提取得到的特徵值,最後一層輸出層是一個分類器,可以採用邏輯回歸

Softmax回歸甚至是支持向量機對輸入進行分類。

CNN輸出的結果是每幅圖像的特定特徵空間。當處理圖像分類任務時,通常會把CNN輸出的特徵空間作為全連接層或全連接神經網絡(Fully Connected Neural Network, FCN)的輸入,用全連接層來完成從輸入圖像到標籤集的映射,即分類。當然,整個過程最重要的工作就是如何通過訓練數據疊代調整網絡權重,也就是後向傳播算法。目前主流的卷積神經網絡(CNN)都是由簡單的CNN調整、組合而來。

圖1 卷積神經網絡的基礎架構(來源:網絡)

1. 卷積

卷積神經網絡中最基礎的操作是卷積(Convolution)運算,卷積運算是卷積神經網絡與其它神經網絡相區別的一種運算,再精確一點,基礎CNN所用的卷積是一種2-D卷積。

卷積操作通過一個稱為「卷積核「的窗口函數對輸入進行過濾和特徵提取,卷積核是一個維度更小的窗口函數,通過卷積核在二維空間的上下平移,計算出卷積核覆蓋區域的點乘積,卷積的結果稱為特徵圖或激活圖。

卷積操作通常用星號表示,寫作:

在實際使用中,經常在多個軸上使用卷積,因此上式也需要根據實際情況進行修改。例如,如果使用二維圖像作為輸入,會用到二維內核K:

2. ReLU 激活函數

卷積之後,通常會加入偏置(Bias), 並引入非線性激活函數(Activation Function),這裡定義偏置為b,激活函數是 h ,經過激活函數後,得到如下結果:

類似於其它深度學習算法,卷積神經網絡通常使用修正線性單元(Rectified Linear Unit, ReLU),其它類似ReLU的變體包括有斜率的ReLU(Leaky ReLU, LReLU)、參數化的ReLU(Parametric ReLU, PReLU)、隨機化的ReLU(Randomized ReLU, RReLU)、指數線性單元(Exponential Linear Unit, ELU)等 。在ReLU出現以前,通常利用Sigmoid函數和雙曲正切函數(Hyperbolic Tangent)作為激活函數。

3. 池化

池化(Pooling),是一種降採樣操作(Subsampling),主要目標是降低特徵映射空間的維度,即高維空間到低維空間的降維,或者可以認為是降低特徵映射的解析度。由於特徵映射參數太多,不利於高層特徵的抽取,池化操作可以降低卷積層的空間複雜性,降低學習的權重,從而加快訓練的時間。

歷史上,曾經使用過不同的池化技術,主要的池化操作有:

  • 最大值池化( Max pooling):2 * 2的最大值池化就是取4個像素點中最大值保留

  • 平均值池化( Average pooling): 2 * 2的平均值池化就是取4個像素點中平均值值保留

  • L2池化( L2 pooling): 即取均方值保留

通常,最大值池化是首選的池化技術,池化操作會減少參數,降低特徵圖的解析度,在計算力足夠的情況下,這種強制降維的技術是非必須的,只有一些大型的CNN 網絡會用到池化技術。

4. 全連接層

如果卷積網絡輸入是224×224×3的圖像,經過一系列的卷積層和池化層(卷積層增加深度維度,池化層減小空間尺寸),尺寸變為7×7×512,之後需要輸出類別分值向量,計算損失函數。假設類別數量是1000(ImageNet是1000類),則分值向量可表示為特徵圖1×1×1000。如何將7×7×512的特徵圖轉化為1×1×1000的特徵圖呢?最常用的技巧是全連接方式,即輸出1×1×1000特徵圖的每個神經元(共1000個神經元)與輸入的所有神經元連接,而不是局部連接。每個神經元需要權重的數量為7×7×512=25088,共有1000個神經元,所以全連接層的權重總數為:25088×1000=25088000,參數如此之多,很容易造成過擬合,這是全連接方式的主要缺點。

全連接層的實現方式有兩種:一種方式是把輸入3D特徵圖拉伸為1D向量,然後採用常規神經網絡的方法進行矩陣乘法;另一種方式是把全連接層轉化成卷積層,這種方法更常用,尤其是在物體檢測中。

卷積神經網絡(CNN)是前饋神經網絡,層間無反饋,CNN 可以有效解決圖像分類等模式識別問題。通常,CNN 的前面是較深的多層卷積層,後接較淺的全連接層,各種實驗表明,增加卷積神經網絡的深度比增加卷積神經網絡的寬度能更加有效地提高準確率,使得CNN的深度越來越深,隨著網絡深度的增加,如何有效傳遞誤差梯度,避免梯度消失或梯度爆炸已成為CNN 需要面對的首要問題。

編輯:於騰凱

校對:王欣

關鍵字: