圖 2.1:卷積神經網絡架構

1.1 卷積層

卷積層是一組平行的特征圖(feature map),它通過在輸入圖像上滑動不同的卷積核并執行一定的運算而組成。此外,在每一個滑動的位置上,卷積核與輸入圖像之間會執行一個元素對應乘積并求和的運算以將感受野內的信息投影到特征圖中的一個元素。這一滑動的過程可稱為步幅 Z_s,步幅 Z_s 是控制輸出特征圖尺寸的一個因素。卷積核的尺寸要比輸入圖像小得多,且重疊或平行地作用于輸入圖像中,一張特征圖中的所有元素都是通過一個卷積核計算得出的,也即一張特征圖共享了相同的權重和偏置項。

然而,使用較小尺寸的卷積核將導致不完美的覆蓋,并限制住學習算法的能力。因此我們一般使用 0 填充圖像的四周或 Z_p 過程來控制輸入圖像的大小。使用 0 填充圖像的四周 [10] 也將控制特征圖的尺寸。在算法的訓練過程中,一組卷積核的維度一般是(k_1, k_2, c),這些卷積核將滑過固定尺寸的輸入圖像(H, W, C)。步長和 Padding 是控制卷積層維度的重要手段,因此產生了疊加在一起形成卷積層的特征圖。卷積層(特征圖)的尺寸可以通過以下公式 2.1 計算。

其中 H_1、W_1 和 D_1 分別為一張特征圖的高度、寬度和深度,Z_p 為 Padding 、Z_s 為步幅大小。

1.2 激活函數

激活函數定義了給定一組輸入后神經元的輸出。我們將線性網絡輸入值的加權和傳遞至激活函數以用于非線性轉換。典型的激活函數基于條件概率,它將返回 1 或 0 作為輸出值,即 op {P(op = 1|ip) or P(op = 0|ip)}。當網絡輸入信息 ip 超過閾值,激活函數返回到值 1,并傳遞信息至下一層;如果網絡輸入 ip 值低于閾值,它返回到值 0,且不傳遞信息。基于相關信息和不相關信息的分離,激活函數決定是否應該激活神經元。網絡輸入值越高,激活越大。不同類型的激活函數應用各異,一些常用的激活函數如表 1 所示。

表1:非線性激活函數

1.3 池化層

池化層是指下采樣層,它把前層神經元的一個集群的輸出與下層單個神經元相結合。池化運算在非線性激活之后執行,其中池化層有助于減少參數的數量并避免過擬合,它同樣可作為一種平滑手段消除不想要的噪音。目前最常見的池化方法就是簡單的最大池化,在一些情況下我們也使用平均池化和 L2 范數池化運算。

當采用卷積核的數量 D_n 和步幅大小 Z_s 用來執行池化運算,其維度可通過下式被計算:

1.4 全連接層

池化層之后,三維像素張量需要轉換為單個向量。這些向量化和級聯化的數據點隨后會被饋送進用于分類的全連接層。全連接層的函數即特征的加權和再加上偏置項并饋送到激活函數的結果。卷積網絡的架構如圖 2 所示。這種局部連接類的架構在圖像分類問題上 [11] [12] 超越傳統的機器學習算法。

1.5 損失或成本函數

損失函數將一個或多個變量的事件映射到與某個成本相關的實數上。損失函數用于測量模型性能以及實際值 y_i 和預測值 y hat 之間的不一致性。模型性能隨著損失函數值的降低而增加。

如果所有可能輸出的輸出向量是 y_i = {0, 1} 和帶有一組輸入變量 x = (xi , x2 . . . xt) 的事件 x,那么 x 到 y_i 的映射如下:

其中 L(y_i hat , y_i) 是損失函數。很多類型的損失函數應用各不相同,下面給出了其中一些。

2.5.1 均方誤差

均方誤差或稱平方損失函數多在線性回歸模型中用于評估性能。如果 y_i hat 是 t 個訓練樣本的輸出值,y_i 是對應的標簽值,那么均方誤差(MSE)為:

MSE 不好的地方在于,當它和 Sigmoid 激活函數一起出現時,可能會出現學習速度緩慢(收斂變慢)的情況。

這一部分描述的其它損失函數還有均方對數誤差(Mean Squared Logarithmic Error)、L_2 損失函數、L_1 損失函數、平均絕對誤差(Mean Absolute Error)、平均絕對百分比誤差(Mean Absolute Percentage Error)等。

2.5.7 交叉熵

為了最小化代價函數,

在 i 個訓練樣本的情況下,代價函數為:

3 卷積網絡的學習

3.1 前饋推斷過程

卷積網絡的前饋傳播過程可以從數學上解釋為將輸入值與隨機初始化的權重相乘,然后每個神經元再加上一個初始偏置項,最后對所有神經元的所有乘積求和以饋送到激活函數中,激活函數對輸入值進行非線性變換并輸出激活結果。

在離散的色彩空間中,圖像和卷積核可以分別表征為 (H, W, C) 和 (k_1, k_2, c) 的三維張量,其中 m、n、c 分別表示第 c 個圖像通道上第 m 行和第 n 列的像素。前兩個參數表示空間坐標,而第三個參數表示色彩的通道。

如果一個卷積核在彩色圖像上滑動運算,那么多維張量的卷積運算可以表示為:

卷積過程可以用符號 ? 表示。對于灰度標量圖來說,卷積過程可以表示為,

圖 3.1:卷積神經網絡

我們在執行卷積后需要使用非線性激活函數而得到特征圖:

其中σ為 ReLU 激活函數。池化層 P_p,q|m,n 可以通過選取卷積層中最大值的 m,n 來完成構建,池化層的構建可以寫為,

池化層 P^p,q 的輸出可以級聯轉化為一個長度為 p*q 的向量,然后我們可以將該向量饋送到全連接網絡以進行分類,隨后 l-1 層向量化的數據點

可以通過以下方程計算:

長向量從 l 層饋送到 L+1 層的全連接網絡。如果全連接層有 L 個、神經元有 n 個,那么 l 可以表示第一個全連接層,L 表示最后一個全連接層,L+1 為圖 3.2 展示的分類層,全連接層中的前向傳播過程可以表示為:

圖 3.2:全連接層中的前向傳播過程

如圖 3.3 所示,我們考慮全連接層 l 中的單個神經元 (j)。輸入值 a_l-1,i 分別與權重 w_ij 求加權和并加上偏置項 b_l,j。然后我們將最后層的輸入值 z_l,i 饋送到非線性激活函數σ。最后層的輸入值可通過以下方程計算,

其中 z_l,i 為 l 層中神經元 j 的激活函數的輸入值。

因此,第 l 層的輸出為

圖 3.3:第 l 層中神經元 j 的前向傳播過程

其中 a^l 是

W^l 是

同樣地,最后一層 L 的輸出值是

其中

將這些擴展到分類層,則神經元單元 (i) 在 L + 1 層的最終輸出預測值 y_i hat 可以表示為:

如果預測值是 y_i hat,實際標注值為 y_i,那么該模型的性能可以通過以下損失函數方程來計算。根據 Eqn.2.14,交叉熵損失函數為:

以上就是正向傳播的簡要數學過程,本論文還著重介紹了反向傳播的數學過程,不過限于篇幅我們并不在本文中展示,感興趣的讀者可以查閱原論文。

4 結語

本文通過概述對卷積神經網絡架構作出了解釋,其中包括不同的激活函數和損失函數,同時詳細解釋了前饋與反向傳播的各個步驟。出于數學簡明性的考慮,我們以灰度圖像作為輸入信息。卷積核步長值取 1,使用 Padding。中間層和最后層的非線性轉換通過 ReLU 和 sigmoid 激活函數完成。交叉熵損失函數用來測量模型的性能。但是,需要大量的優化和正則化步驟以最小化損失函數,增加學習率,避免模型的過擬合。本文試圖只考慮帶有梯度下降優化的典型卷積神經網絡架構的制定。

文章轉自微信公眾號@算法進階

上一篇:

基于對比學習的時間序列異常檢測方法

下一篇:

時間序列預測的系統總結
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費