• 沒有找到結果。

第三章 類神經網路架構

3.1 卷積神經網路

卷積神經網路(Convolution Neural Network,CNN)為現今主流之類神經網 路基底架構,其主要構成為卷積層(Convolution)、池化層(Pooling)、Flatten、

全連接層(Full Connection)。以下說明各層功能。

3.1.1 卷積層

使用一自行設定大小之卷積核(Convolution Kernel),此一卷積核會覆蓋 於輸入之上,輸入中之元素會與卷積核上對應之元素進行相乘,然後將所有 相乘出來之結果相加即完成一次卷積操作。完成後卷積核會於輸入上滑動,

在進行下一次卷積操作,此一步驟會持續至卷積核滑動至輸入最尾端。每個 卷積核中元素都會利用反向傳播演算法(Backpropagation)得到。以下將卷積 層運作方式以數學式表示。設定初始輸入為X,令

𝑀

𝑖為CNN 第

𝑖

層的Feature Maps,

𝑀

0=X。其運算過程如以下公式:

𝑀

𝑖

= f((𝑀

𝑖−1

) ⊗ 𝑊

𝑖

+ 𝑏

𝑖

)

(3.1)

其中

𝑊

𝑖表示第

𝑖

層卷積核的權重(Weight);運算符號⊗則代表著卷積核與第 i-1 層 Feature Maps 進行卷積操作,其輸出再與第

𝑖

層的偏移向量(Bias)

𝑏

𝑖相加,

最終透過激勵函數(Activation Function)

f()

得到第

𝑖

層的特徵圖

𝑀

𝑖。透過不同 的卷積層進行卷積操作,能從輸入中提出不同的特徵。而經過了越多卷積層 之後,所抽取之特徵會越來越複雜且抽象,而其對位置之敏銳度則會降低。

圖3-1 將卷積層運作圖像化,藍綠色底表輸入,紫色底為卷積核。一般為保 持原圖像大小,會於沒有數據的地方補零,第一次卷積操作為紅色框範圍,

得到之數據為0,第二次卷積操作為藍色框範圍,得到之數據為 1,以此類 推。而一般卷積核表示式為AxB/C。AxB 表示卷積核大小、C 表示步長,為 每次操作後卷積核移動的長度。在圖3-1 中的卷積層表示即為 2x2/1。

圖 3-1 卷積操作圖像化

3.1.2 池化層

一般而言,類神經網路之卷積層,並不會單只有一卷積核,而是使用多 層卷積核,每一層卷積核即代表一個與前一層 Feature Maps 相同大小之 Feature Maps。倘若持續進行卷積操作下去,其運算量會十分龐大,以致於 系統無法負荷,因此需要有池化層來進行降維度。池化層操作與卷積層相當 雷同。以最大池化為例子,首先會先指定一池化大小,而後於Feature Maps 上滑動,每一次滑動僅會取出該範圍最大的元素。假設使用2 x 2 之池化層,

則原本大小為256 x 256 x 3 之 Feature Maps 會被降維至 128 x 128 x 3。目前 大多數神經網路池化層採用最大池化(Max Pooling),其餘池化層尚有平均池 化(Mean Pooling)等。圖 3-2 是為最大池化之實例,途中左邊為 6 x 8 之輸入,

經過2 x 2 之最大池化運算後,會獲得右邊 3 x 4 的結果

圖 3-2 最大池化示意圖

3.1.3 Flatten

當進行完卷積層各種運算後獲得的Feature Maps,需要將其變為一維向 量,而此一過程稱之為Flatten。

3.1.4 全連接層

在最終的Feature Maps 被攤平為一維向量後,需要接至最後的神經元,

這些神經元每個都將會連接至 Feature Maps 攤平後之向量的所有元素,因 此又稱之為全連接層。

相關文件