鍵.png)
使用這些基本 REST API 最佳實(shí)踐構(gòu)建出色的 API
圖 2.1:卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)
卷積層是一組平行的特征圖(feature map),它通過在輸入圖像上滑動(dòng)不同的卷積核并執(zhí)行一定的運(yùn)算而組成。此外,在每一個(gè)滑動(dòng)的位置上,卷積核與輸入圖像之間會(huì)執(zhí)行一個(gè)元素對(duì)應(yīng)乘積并求和的運(yùn)算以將感受野內(nèi)的信息投影到特征圖中的一個(gè)元素。這一滑動(dòng)的過程可稱為步幅 Z_s,步幅 Z_s 是控制輸出特征圖尺寸的一個(gè)因素。卷積核的尺寸要比輸入圖像小得多,且重疊或平行地作用于輸入圖像中,一張?zhí)卣鲌D中的所有元素都是通過一個(gè)卷積核計(jì)算得出的,也即一張?zhí)卣鲌D共享了相同的權(quán)重和偏置項(xiàng)。
然而,使用較小尺寸的卷積核將導(dǎo)致不完美的覆蓋,并限制住學(xué)習(xí)算法的能力。因此我們一般使用 0 填充圖像的四周或 Z_p 過程來控制輸入圖像的大小。使用 0 填充圖像的四周 [10] 也將控制特征圖的尺寸。在算法的訓(xùn)練過程中,一組卷積核的維度一般是(k_1, k_2, c),這些卷積核將滑過固定尺寸的輸入圖像(H, W, C)。步長(zhǎng)和 Padding 是控制卷積層維度的重要手段,因此產(chǎn)生了疊加在一起形成卷積層的特征圖。卷積層(特征圖)的尺寸可以通過以下公式 2.1 計(jì)算。
其中 H_1、W_1 和 D_1 分別為一張?zhí)卣鲌D的高度、寬度和深度,Z_p 為 Padding 、Z_s 為步幅大小。
激活函數(shù)定義了給定一組輸入后神經(jīng)元的輸出。我們將線性網(wǎng)絡(luò)輸入值的加權(quán)和傳遞至激活函數(shù)以用于非線性轉(zhuǎn)換。典型的激活函數(shù)基于條件概率,它將返回 1 或 0 作為輸出值,即 op {P(op = 1|ip) or P(op = 0|ip)}。當(dāng)網(wǎng)絡(luò)輸入信息 ip 超過閾值,激活函數(shù)返回到值 1,并傳遞信息至下一層;如果網(wǎng)絡(luò)輸入 ip 值低于閾值,它返回到值 0,且不傳遞信息?;谙嚓P(guān)信息和不相關(guān)信息的分離,激活函數(shù)決定是否應(yīng)該激活神經(jīng)元。網(wǎng)絡(luò)輸入值越高,激活越大。不同類型的激活函數(shù)應(yīng)用各異,一些常用的激活函數(shù)如表 1 所示。
表1:非線性激活函數(shù)
池化層是指下采樣層,它把前層神經(jīng)元的一個(gè)集群的輸出與下層單個(gè)神經(jīng)元相結(jié)合。池化運(yùn)算在非線性激活之后執(zhí)行,其中池化層有助于減少參數(shù)的數(shù)量并避免過擬合,它同樣可作為一種平滑手段消除不想要的噪音。目前最常見的池化方法就是簡(jiǎn)單的最大池化,在一些情況下我們也使用平均池化和 L2 范數(shù)池化運(yùn)算。
當(dāng)采用卷積核的數(shù)量 D_n 和步幅大小 Z_s 用來執(zhí)行池化運(yùn)算,其維度可通過下式被計(jì)算:
池化層之后,三維像素張量需要轉(zhuǎn)換為單個(gè)向量。這些向量化和級(jí)聯(lián)化的數(shù)據(jù)點(diǎn)隨后會(huì)被饋送進(jìn)用于分類的全連接層。全連接層的函數(shù)即特征的加權(quán)和再加上偏置項(xiàng)并饋送到激活函數(shù)的結(jié)果。卷積網(wǎng)絡(luò)的架構(gòu)如圖 2 所示。這種局部連接類的架構(gòu)在圖像分類問題上 [11] [12] 超越傳統(tǒng)的機(jī)器學(xué)習(xí)算法。
損失函數(shù)將一個(gè)或多個(gè)變量的事件映射到與某個(gè)成本相關(guān)的實(shí)數(shù)上。損失函數(shù)用于測(cè)量模型性能以及實(shí)際值 y_i 和預(yù)測(cè)值 y hat 之間的不一致性。模型性能隨著損失函數(shù)值的降低而增加。
如果所有可能輸出的輸出向量是 y_i = {0, 1} 和帶有一組輸入變量 x = (xi , x2 . . . xt) 的事件 x,那么 x 到 y_i 的映射如下:
其中 L(y_i hat , y_i) 是損失函數(shù)。很多類型的損失函數(shù)應(yīng)用各不相同,下面給出了其中一些。
2.5.1 均方誤差
均方誤差或稱平方損失函數(shù)多在線性回歸模型中用于評(píng)估性能。如果 y_i hat 是 t 個(gè)訓(xùn)練樣本的輸出值,y_i 是對(duì)應(yīng)的標(biāo)簽值,那么均方誤差(MSE)為:
MSE 不好的地方在于,當(dāng)它和 Sigmoid 激活函數(shù)一起出現(xiàn)時(shí),可能會(huì)出現(xiàn)學(xué)習(xí)速度緩慢(收斂變慢)的情況。
這一部分描述的其它損失函數(shù)還有均方對(duì)數(shù)誤差(Mean Squared Logarithmic Error)、L_2 損失函數(shù)、L_1 損失函數(shù)、平均絕對(duì)誤差(Mean Absolute Error)、平均絕對(duì)百分比誤差(Mean Absolute Percentage Error)等。
2.5.7 交叉熵
為了最小化代價(jià)函數(shù),
在 i 個(gè)訓(xùn)練樣本的情況下,代價(jià)函數(shù)為:
卷積網(wǎng)絡(luò)的前饋傳播過程可以從數(shù)學(xué)上解釋為將輸入值與隨機(jī)初始化的權(quán)重相乘,然后每個(gè)神經(jīng)元再加上一個(gè)初始偏置項(xiàng),最后對(duì)所有神經(jīng)元的所有乘積求和以饋送到激活函數(shù)中,激活函數(shù)對(duì)輸入值進(jìn)行非線性變換并輸出激活結(jié)果。
在離散的色彩空間中,圖像和卷積核可以分別表征為 (H, W, C) 和 (k_1, k_2, c) 的三維張量,其中 m、n、c 分別表示第 c 個(gè)圖像通道上第 m 行和第 n 列的像素。前兩個(gè)參數(shù)表示空間坐標(biāo),而第三個(gè)參數(shù)表示色彩的通道。
如果一個(gè)卷積核在彩色圖像上滑動(dòng)運(yùn)算,那么多維張量的卷積運(yùn)算可以表示為:
卷積過程可以用符號(hào) ? 表示。對(duì)于灰度標(biāo)量圖來說,卷積過程可以表示為,
圖 3.1:卷積神經(jīng)網(wǎng)絡(luò)
我們?cè)趫?zhí)行卷積后需要使用非線性激活函數(shù)而得到特征圖:
其中σ為 ReLU 激活函數(shù)。池化層 P_p,q|m,n 可以通過選取卷積層中最大值的 m,n 來完成構(gòu)建,池化層的構(gòu)建可以寫為,
池化層 P^p,q 的輸出可以級(jí)聯(lián)轉(zhuǎn)化為一個(gè)長(zhǎng)度為 p*q 的向量,然后我們可以將該向量饋送到全連接網(wǎng)絡(luò)以進(jìn)行分類,隨后 l-1 層向量化的數(shù)據(jù)點(diǎn)
可以通過以下方程計(jì)算:
長(zhǎng)向量從 l 層饋送到 L+1 層的全連接網(wǎng)絡(luò)。如果全連接層有 L 個(gè)、神經(jīng)元有 n 個(gè),那么 l 可以表示第一個(gè)全連接層,L 表示最后一個(gè)全連接層,L+1 為圖 3.2 展示的分類層,全連接層中的前向傳播過程可以表示為:
圖 3.2:全連接層中的前向傳播過程
如圖 3.3 所示,我們考慮全連接層 l 中的單個(gè)神經(jīng)元 (j)。輸入值 a_l-1,i 分別與權(quán)重 w_ij 求加權(quán)和并加上偏置項(xiàng) b_l,j。然后我們將最后層的輸入值 z_l,i 饋送到非線性激活函數(shù)σ。最后層的輸入值可通過以下方程計(jì)算,
其中 z_l,i 為 l 層中神經(jīng)元 j 的激活函數(shù)的輸入值。
因此,第 l 層的輸出為
圖 3.3:第 l 層中神經(jīng)元 j 的前向傳播過程
其中 a^l 是
W^l 是
同樣地,最后一層 L 的輸出值是
其中
將這些擴(kuò)展到分類層,則神經(jīng)元單元 (i) 在 L + 1 層的最終輸出預(yù)測(cè)值 y_i hat 可以表示為:
如果預(yù)測(cè)值是 y_i hat,實(shí)際標(biāo)注值為 y_i,那么該模型的性能可以通過以下?lián)p失函數(shù)方程來計(jì)算。根據(jù) Eqn.2.14,交叉熵?fù)p失函數(shù)為:
以上就是正向傳播的簡(jiǎn)要數(shù)學(xué)過程,本論文還著重介紹了反向傳播的數(shù)學(xué)過程,不過限于篇幅我們并不在本文中展示,感興趣的讀者可以查閱原論文。
本文通過概述對(duì)卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)作出了解釋,其中包括不同的激活函數(shù)和損失函數(shù),同時(shí)詳細(xì)解釋了前饋與反向傳播的各個(gè)步驟。出于數(shù)學(xué)簡(jiǎn)明性的考慮,我們以灰度圖像作為輸入信息。卷積核步長(zhǎng)值取 1,使用 Padding。中間層和最后層的非線性轉(zhuǎn)換通過 ReLU 和 sigmoid 激活函數(shù)完成。交叉熵?fù)p失函數(shù)用來測(cè)量模型的性能。但是,需要大量的優(yōu)化和正則化步驟以最小化損失函數(shù),增加學(xué)習(xí)率,避免模型的過擬合。本文試圖只考慮帶有梯度下降優(yōu)化的典型卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)的制定。
文章轉(zhuǎn)自微信公眾號(hào)@算法進(jìn)階
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)