卷積神經網路 (CNN) 的發展

介紹

Hsiao-En Sun
Taiwan AI Academy
11 min readDec 31, 2019

--

卷積神經網路(Convolutional Neural Network, CNN)是深度學習裡極為重要的一門分支,電腦視覺這領域便是因為它的關係在近幾年有了許多重大的進展,然而這種神經網路的一大特點即為「卷積」。卷積是什麼? 卷積是一種數學的運算,其功用是可以對資料(如: 訊號、影像)做特徵的萃取,萃取出來的特徵會再送到下一個卷積層做進一步的特徵萃取,如此的方式增強了神經網路的學習效率,在圖像辨識上,比起一般的深度神經網路效果高出太多,因此它也成為了各家爭相研究的對象。

Figure 1 卷積的計算方式

CNN的演進

1950s~1960s, Hubel & Wiesel

Figure 2 Hubel(left), Wiesel(right)

1950~1960年代,神經生理學家 Hubel 和 Wiesel 基於對貓和猴子視覺的研究,提出了腦中兩種基本型態的視覺細胞,分別稱為 simple cells 和 complex cells。

Figure 3 simple cells 和 complex cells 的結構示意圖

上圖是 simple cells 和 complex cells 的架構示意圖,這例子說明了 simple cells 會被特定位置的鉛直邊緣形狀給激發,激發後會再將訊號傳給下一階段的 complex cells ,值得注意的是每一個 simple cell 的感知域較小,會受圖形位置的影響激發與否,而 complex cells 再這樣的連結中卻不會受鉛直邊緣圖形所在位置,只要是在橘色長方形框中都可受到激發,所以感知域較大。

1980, Neocognitron

Figure 4 福島邦彥

受到 Hubel 和 Wiesel 的啟發,1980 年日本電腦科學家福島邦彥提出 Neocognitron (神經感知機) ,它可說是現今 CNN 架構的源頭。

Neocognitron 主要是由兩種不同的 cells 分別稱作 S-cells 和 C-cells 交錯堆疊而成。S-cells 對應到大腦中的 simple cells,其功用為 feature extraction。C-cells 對應到大腦中的 complex cells,有較大的 receptive field,具有 downsampling 的效果。

Figure 5 S-cells and C-cells

1987, TDNN (Time Delay Neural Networks)

Figure 6 Alex Waibel

1987 年 Alex Waibel 和 Geoffrey Hinton 等人在日本的 ATR (Advanced Telecommunication Research Institute) 發表時間延遲神經網路 (TDNN)。TDNN 是第一個使用 backpropagation 做梯度下降訓練的卷積神經網路 。

Figure 7 TDNN Architecture

TDNN 是一個語音識別模型,而非圖像識別模型。上圖是 TDNN 的網路架構圖,可以看到在 input layer ,convolutional kernel 延著時間方向掃過抓取聲音特徵。

時間延遲 (time-delay) 是指對同一個音素 (phoneme) /b/, /d/, 或 /g/ 在不同的時間點上進行採樣後,一起作為模型的輸入,如此以提昇模型的準確度。

1989~1998, Yann LeCun

Figure 8 Yann LeCunn

Yann LeCunn 法裔美國電腦科學家,1989~1998年間相繼發表了許多關於CNN的研究,為現代 CNN 架構打下了確實的基礎,他也被稱為卷積網路 (convolutional nets) 之父。

Figure 9 Part of Y. LeCun’s paper in 1989
Figure 10 Y. LeCun’s Neural Network Architecture

1989 年貝爾實驗室 Denker 等人發表了「手寫郵遞區號的神經網路辨識」的方法,該方法運用了卷積做特徵選取。不過此方法中卷積核 (convolutional kernel) 的參數都是人工設計,並非神經網路自動學習得來。

同年,Y. LeCun 等人於貝爾實驗室亦發表了針對「手寫郵遞區號數字辨識」的卷積神經網路。

如此架構的神經網路是 Y. LeCun 基於他先前的論文「Generalization and Network Design Strategies」所提出的概念所設計,不同於 DenKer 等人先前的作法,這次模型卷積核參數的選取完全是機器自動學來,並非人工設計。

Figure 11 LeNet-5’s Architecture

LeNet-5 於 1998 年提出,其架構與現今的 CNN 已經別無二致,且在文字圖像辨識上可說是已經技壓群雄,但受限於當時的算力與資料量,神經網路的優勢在當時並不十分顯著。另一方面,當時正是 SVM 大放異彩的年代,神經網路要能被關注大約是在 10 年後的事。

Figure 12 LeNet-5
Figure 13 LeNets 與其它模型的錯誤率比較圖

2006, GPU-implementation of CNNs

Figure 14 Kumar Chellapilla’s paper

2006 年 Kumar Chellapilla 等人,利用 GPU 平行運算的能力,將 CNN 模型 forwardpropagation 和 backpropagation 速度提昇3~4倍,使 CNN 模型不論是在訓練或測試時,時間都大幅縮短,這也是第一個用GPU進行訓練的 CNN。

2006, ImageNet

Figure 15 李飛飛

ImageNet 是個大型的視覺資料集,超過 1400萬張人工標注的相片,包含 2 萬種以上不同的類別,像是氣球,草莓等日常所能見的物品。

ImageNet dataset 是由史丹佛大學電腦科學教授李飛飛於 2006 年所開創,其目的是希望能擴大及增進訓練 AI 所能使用的資料,ILSVRC 競賽所用的資料庫即為 ImageNet。

2012, AlexNet

Figure 16 AlexNet’s Architecture

AlexNet 是由 Hinton 學生Alex Krizhevsky 所設計的 CNN 架構,於 2012 年參與 ILSVRC 競賽,在圖像分類任務上取得優勝,其 Top 5 error rate 領先當時的第 2 名近 10 個百分點, ILSVRC 競賽是以 ImagNet dataset 當作 database 從中取出一部份作為該年比賽用的資料,訓練資料共包涵 1000個類別,每類別約 1000張照片,總計訓練資料 1200 萬張照片,其 validation set 和 testing set 照片數量各為 5 萬及 10 萬張。

由於 AlexNet 在這一年的競賽中遙遙領先其他使用非 CNN 架構的隊伍,這使得 CNN 受到大家的關注,在往後幾年的比賽中,第一名也都被 CNN 架構的模型所包辦。

AlexNet 是個 8 層的神經網路 (不包含 input 層) ,所接收的圖像大小是 224*224*3,可以看到 AlexNet 在 input 的維度與堆疊的層數上都已較以前的 LeNet-5 來得多與深。

2014, VGG & GoogleNet

Figure 17 VGG and GoogleNet

2014 年牛津大學的 VGG 以 19 層的 CNN 將 Top 5 error rate 從原本 AlexNet 的 16.4% 下降到 7.3%,而 GoogleNet 再以 22 層的 CNN 將 Top 5 error rate 下降到 6.7%,此時距離要達到人類的 Top 5 error rate: 5.1% 已經不遠。

Figure 18 Top 5 error rate

2015, ResNet

隨著 AlexNet, VGG, GoogleNet 在層數上的加深模型表現也越來越好,開始出現一個問題:The deeper, the better?

但答案並非那麼的顯然,甚至人們發現在層數加更深的情況下模型表現反而下降

Figure 19
Figure 20 Residual’s structure

解決這問題的是 2015 年在微軟研究院的何凱明,當時他設計了帶有殘差結構的神經網路,並發表了深達 152 層的 ResNet.。

ResNet 在該年的 ILSVRC 競賽中拿下第一,Top 5 error rate 達到 3.57% ,準確率已經超越人類的 5.1%,ResNet 的出現也為 ILSVRC 的該項分類競賽畫上了句點。

References :

--

--