本論文所提出之硬體架構及實驗結果進行總結。
第二章 基礎理論及技術背景
類神經網路模型架構組成如圖 2-1 所示,它包含了起始的輸入層(Input layer)、
最終的輸出層(Output layer)以及中間的隱藏層(Hidden layer),輸入層及輸出層在 各類神經網路模型中皆只會有一層,而隱藏層數量依據模型設計需求做改變,每 一層由一至多個神經元所組成,每一個神經元都和前一層的神經元運用可以調整
的鏈結值(synaptic weights, 一般稱之權重)相互連接,每個類神經網路都需要經過 訓練階段,藉由訓練修正權重直到每個輸入都能得到正確的輸出分類,在訓練的 過程可以計算出每層輸出與正確輸出的誤差值,在此會使用到一個誤差函數
(cost function)作為權重修正的判斷依據,當誤差函數超過誤差容忍範圍時,便 對權重進行調整,而誤差函數會隨著訓練次數增加逐漸下降,這個過程稱為優化 (optimization),當訓練到達一定程度,誤差函數幾乎維持不做變化。
圖 2-1 類神經網路架構圖
類神經網路訓練方式為自動學習,其主流分為兩種學習方式:非監督式學習 網 路 (Unsupervised Learning Network) 及 監 督 式 學 習 網 路 (Supervised Learning Network),以圖像辨識為例,當龐大的原始資料尚未進行分類,非監督式學習網 路能在缺乏輸出期望結果的情況下將圖像分析分類,在分類的過程中非監督式學 習網路不會知道何種訓練方式才是正確的,但卻能從大量的圖像自行發掘特徵潛 在的規則,並將原始資料作分類處理,而監督式學習網路的原始訓練資料每個輸 入圖像都會有正確的期望輸出(分類結果),與非監督式學習網路訓練方式不同 的地方,監督式學習網路在訓練的過程會將類神經網路辨識的輸出值與期望的輸 出值做比較,當出現偏差時通常會以 cost function 作為是否修改類神經網路內部
權重的判斷依據,直到誤差值下降至容忍範圍。使用的學習方式大多以訓練資料 作為選擇考量,非監督式學習網路的優點在於不需以人工方式輸入訓練資料的標 籤即可做圖像分析,在訓練時自主學習判斷原始資料分群的規則以將相似的資料 群聚,常用在未知的數據分類,監督式學習網路則需要成對的數據資訊,以作為 在訓練調整的依據,本論文所使用的學習方法為監督式學習網路。
在類神經網路訓練階段結束後,會得到一組針對原始資料進行訓練的權重,
對於類神經網路模型期待的不是對原始資料的分類辨識,而是探討經過訓練的類 神經網路模型對原始訓練資料以外的數據分析結果,所以除了訓練資料外還有另 一組測試資料,將測試資料放入模型中觀察輸出是否為我們所期待的結果,此階 段稱為測試階段,當測試階段達到理想辨識率即是完成此類神經網路模型。
第二節 Convolutional Neural Network
近幾年摺積神經網絡(Convolutional Neural Network,CNN)的發展,在高 功效辨識方法廣泛的引起重視,相較其他的神經網路,摺積神經網路在圖像辨識 方面有更好的結果。
摺積神經網路的構想源於 1962 年大衛·休伯爾(David H. Hubel)和托斯坦·
威澤爾(Torsten Nils Wiesel)兩位神經科學家對貓科的腦部視覺皮層研究,這項 研究提出感受野(receptive field)的概念為類神經網路發展開啟新視野,1984 年 日本學者福島邦彥(Kunihiko Fukushima)發表了首次基於感受野概念所設計的 神經網路模型-適用於手寫字元辨識的神經認知機(neocognitron),神經認知機的 技術成為摺積神經網路的最初原型。1994 年 Yann Le Cun 提出深層摺積神經網 路 LeNet5(如圖 2-2),設計用於手寫字體辨識的 LeNet5 是 CNN 的經典結構,隨 後發展出許多摺積神經網路模型,在 2012 年 ImageNet 圖像分類比賽上 Alex Krizhevsky, Ilya Sutskever and Geoffrey Hinton 以深度摺積神經網路結合 GPU 設 計的 AlexNet 贏得冠軍,摺積神經網路就此成為廣泛使用且倍受重視的圖像辨識 方法。
圖 2-2 CNN 經典模型 LeNet5
第三節Convolutional Neural Network 演算法則
摺積神經網絡的架構以摺積層(convolutional layer)、池化層(pooling layer)及 全連接層(fully connected layer)組成,它的運算參數皆使用單經度浮點數,摺積層 對圖像進行摺積運算,利用權重將特徵提取出來,以增強重要特徵訊號,池化層 主要用作圖像採樣以降低網路訓練參數,全連接層可將輸入轉成一維向量,所有 的輸入及輸出皆相互對應,綜合前面的特徵值以提高辨識率。
摺積層並非是將神經元相互連結,而是利用權重的方式將輸入特徵圖(input feature map)作局部特徵提取,摺積層的運作範例如圖 2-3 所示,在運算的過程中,
每個摺積核(convolution kernel)會對局部圖像依序作運算,直到摺積核掃完整張 圖像即可得到輸出特徵圖(output feature map)。
圖 2-3 摺積運算範例
假設𝑋𝑝為第 p 個 input feature map,𝑌𝑞為第 q 個 output feature map,𝑊𝑝,𝑞為 第 p 個 input feature map 對應到第 q 個 output feature map 的摺積核。我們可以將 X 及 Y 的關係以公式(2,1)表示,其中*為摺積運算,M 為 input feature map 個數,
N 為 output feature map 個數。
𝑌
𝑞= ∑
𝑀𝑃=1𝑋
𝑝∗ 𝑊
𝑝,𝑞, 𝑞 = 1, … . , 𝑁
(2,1)當圖像經過摺積運算後,可以利用池化層將 output feature map 作降採樣,本 論文採樣的過程為 non overlapping pooling,可避免將資料重覆採樣,採樣有許多 種方式,其中「最大池化(Max pooling)」是最普遍使用的(如圖 2-4),Max pooling 採樣方式是在局部範圍中提取出最大值,AlexNet 將圖像以 2×2 區塊做分割進行 採樣,Max pooling 能減少下一層摺積運算參數量同時降低過擬合的問題,並減 少訓練過程的計算複雜度。
圖 2-4 最大池化 Max pooling
若 input feature map size 為 LxL,在 Max pooling 後的 output feature map size 為
𝐿
到的運算參數相較摺積層為數更多,因此在摺積神經網路的架構中更需要池化 層的輔助來降低全連接層的計算複雜度,全連接層的示意圖可參照圖 2-5。
圖 2-5 全連接層示意圖
假設共有 N 個輸入及 M 個輸出,以𝑋𝑝表示第 p 個輸入,𝑌𝑞表示第 q 個輸 出,𝑊𝑝,𝑞為第 p 個輸入對應第 q 個輸出之關係權重,全連接層輸入與輸出的關 係示可表示為
𝑌
𝑞= ∑
𝑁𝑝=1𝑋
𝑝∗ 𝑊
𝑝,𝑞, 𝑞 = 1, … , 𝑀
(2,4)摺積神經網路架構可依據不同數據資料需求作設計,不同的摺積層數量與全 連接層數量會圖像辨識率的高低,基本上摺積層數量與辨識率成正比,但每次摺 積後都會縮減圖像大小,因此摺積前會對圖像作 Zero Padding(如圖 2-6)以維持圖 像輸出大小不變。
圖 2-6 Zero Padding
第四節AlexNet Model
本論文的硬體架構是以 AlexNet 網路模型作為基礎,AlexNet 模型最初是為 了 ImageNet 圖像資料庫分類所設計,對於資訊複雜的圖像相較 LeNet-5 有更佳 的辨識率,同時 AlexNet 網路架構不像 VGGNet 過於龐大,是十分適合實作於硬 體的神經網路模型,本節將對 AlexNet 模型作細部討論。
圖 2-7 ImageNet 圖像
AlexNet 模型架構 [3]如圖 2-8 所示,AlexNet 是針對 ImageNet 大小為 256×
256 的圖像,從中隨機提取 224×224 pixel 作輸入圖像來設計模型架構,它包含五 個摺積層、三個採樣層以及三個全連接層,摺積所使用的摺積核尺寸分為 11×11、
5×5 及 3x3,最後一個全連接層的輸出向量為 1000 的 softmax 層,產生 1000 分 類的分布結果。
圖 2-8 AlexNet 模型架構
AlexNet 擁有約 6000 萬個參數和 65 萬個神經元,在當時 AlexNet 受到 GPU 的內存限制,因此使用了兩個 GTX580 進行訓練,這種做法降低了訓練過程的過 擬合,同時提升訓練速度,不過隨著科技進步,以現在的硬體條件使用一個 GPU 即可達到同樣的效果。
AlexNet 在第一層摺積層的摺積核尺寸 11×11 步長為 4,可對較大的局部圖 像作特徵提取,以有效率的取得過大圖像中較重要的資訊,接著將第一層摺積的 結果作 Max pooling 降採樣以降低訓練的參數,第二層摺積層將第一層採樣的結 果作為輸入,以摺積核尺寸 5×5 步長為 1 進行運算,第二層結果同樣作 Max pooling,第三、四和五個摺積層摺積核尺寸皆為 3×3 步長為 1,中間沒有池化層 連接,在第五層摺積完後作最後一次降採樣便進入全連接部分,全連接層兩個 GPU 對彼此的結果作運算,前兩個全連接層皆為總數 4096 個神經元的輸出,最 後一個全連接層數量為 1000 的輸出向量。
本論文將依據 AlexNet 模型架構,設計用於辨識 CIFAR10 資料庫,CIFAR10 的圖像大小僅 32×32,分類總共為 10 類,基於圖像相較 ImageNet 尺寸更小,分 類的類別較少,將會適當減少摺積層及全連接層的數量,以簡化硬體實作的複雜 過程。
第五節 Binarized Neural Network
在本章第三節提到摺積類神經網路是使用單經度浮點數作運算,在運算的過 程中會使用到大量的浮點數加法器及乘法器,同時會使用到大量的記憶體儲存權 重及每個階段的 output feature map,在作硬體架構評估如第一章第二節所述,將 傳統摺積神經網路改為二元化神經網路使用的記憶體資源降低約 32 倍,利於將 AlexNet 網路實現於硬體架構。
二元化神經網路(Binarized Neural Network; BNN) [2]是 Matthieu Courbariaux 於 2016 年所提出的演算方法,它的方法很簡單,就是將傳統摺積神經網路所使 用的 32 位元浮點數權重更改為+1 或-1,以及利用活化函數將每個階段計算的結 果作神經元二元化轉換(Binarized neuron),同時可將乘法器改為簡單的 XNOR 位 元運算,這種方式確實可以大幅減少運行速度和降低硬體資源的消耗,在 M Courbariaux 的 論 文 中 提 出 了 兩 種 二 元 化 的 方 法 , 第 一 種 是 隨 機 型 二 元 化 (Stochastic Binarization),將浮點數權重以隨機的方式作二元化轉換,以公式(2,5) 表示,其中σ為 hard sigmoid function,運算式如(2,6)
𝑥
𝑏= { +1, 𝑤𝑖𝑡ℎ 𝑝𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑡𝑦 𝑝 = 𝜎(𝑥)
機器學習換個角度即為對數據的統計分析,因此機器學習有幾項重要的假設,
首先相同類別的數據必須具有一定的規律性,再來是這些數據必須存在於相同的 空間分布,才能使神經網路有較佳的泛化能力,若這些數據既沒有規律性也不在 相同的分布範圍,那便會使機器學習的能力下降及學習毫無效率,2015 年 Sergey Ioffe 發表的論文 [4]中提出批標準化(Batch Normalization; BN)的方法有效解決了 分布不一致的問題,在神經網路每個階段運算完會將結果進行批標準化,把原始
在二元化神經網路使用的活化函數為 Hard Hyperbolic tangent function (Hard-tanh, 公式(2,9)),X 為輸入資料,X 經過 Hard-tanh 運算後的值會壓縮在正 1 與負 1 之
在二元化神經網路使用的活化函數為 Hard Hyperbolic tangent function (Hard-tanh, 公式(2,9)),X 為輸入資料,X 經過 Hard-tanh 運算後的值會壓縮在正 1 與負 1 之