GoogLeNet

GoogLeNet論文請參考[1],另一方面也歡迎先參考 Network In Network解析 [11]一文。

前言

在Image classification的領域上,一定會提到 ILSVRC (見 Fig.1),ILSVRC全名為Large Scale Visual Recognition Challenge,提供大量 標註 的資料集,讓參賽者去提出更加準確的演算法,在Image classification上達到更高的分類準確度。

Fig.1 ILSVRC (http://www.image-net.org/challenges/LSVRC/)

過去幾年準確度有顯著的改進(見 Fig.2),從2012的AlexNet開始,皆為深度學習網路,在2014年時VGGNet與GoogLeNet分別為亞軍與冠軍,共同的特點就是都 增加了網路的深度

Fig.2 ImageNet Competition Result (https://miro.medium.com/max/1000/1*DBXf6dzNB78QPHGDofHA4Q.png)

而GooLeNet身為ILSVRC‘14的冠軍,準確率提高到6.7%,為一個22層,深的網路結構,比VGGNet、AlexNet更深,但最重要的是 參數量卻大幅的降低 (見 Fig.3)。

Fig.3 Parameter Comparison of Models trained on ImageNet ( https://arxiv.org/pdf/1608.06037.pdf )

另一方面GoogLenet到目前歷經多個版本改變(見 Fig.3),包含GoogLenet Inception v1、Inception v2、Inception v3、Inception v4、Inception -Resv2。

在此篇文章,主要討論GoogLenet Inception v1的部分(見 Fig.4),簡單來說他就是一個更複雜的LeNet,接著討論什麼啟發了GoogLeNet。

動機與啟發

回朔CNN的始祖LeNet[2](見 Fig.5),LeNet[2]的設計為Deep Learning 再 Image Classification 的基礎,提出

  1. 使用CNN網路取代傳統DNN
  2. 使用Gradient Descent訓練網路
  3. 採用了非對稱性的架構(見 Fig.6)

在這些基礎上,AlexNet[3]沿用了第一第二點,不斷得 將網路加深 ,隨著網路的加深,運算量隨之大幅的提升(見 Fig.3),AlexNet[3]使用 GPU解決了運算量提升的問題 ,達到了State-of-art的成績。 深度增加模型的準確度 ,GoogLeNet[1]中提到原因可以由兩方面去解釋

  1. Provable bounds for learning some deep representations[4] 中提到,一個概率分佈的Dataset,一定可以藉由將 相關性高的神經元 連結在一起,一層一層的去把網路建構出來,由這篇論文給定了一個前提,只要有Dataset,理論上可以去找出一個神經網路去分類。
  2. 再生物學方面,Hebbian理論[5]的“ Cells that fire together, wire together ”。

由此可知,產生預測Dataset模型的方法,即需增強相關聯性高的神經元之間的連結,將網路稀疏化,整理一下目前的模型設計的重點

  1. 要增強相關聯性高的神經元之間的連結
  2. 卷積的做法可行的原因,可由上述兩篇論文去解釋,卷積的作用即為將本層的神經元只跟上一層某個區域的神經元做連接,而這部分實現了稀疏化,另一方面由於對人類視覺神經的研究,證明 相近的點相關聯性也是較高的,滿足將關聯性高的神經元連結
  3. 非對稱性的結構可見於Lenet[2]第五層卷積(見Fig.5, Fig.6)),其也實現了網路稀疏化,目的也是將高度相關性的神經元連結在一起,但這部份在AlexNet被移除,移除的原因是因為目前硬體在密集矩陣的計算上速度較快。

卷積層與非對稱性的結構都能達到 稀疏化 的目標,GoogLenet[1]希望能在空間上的稀疏之外(卷積層實現),能在現有的硬體限制上去實現對網路更加稀疏化,所以在GoogLenet中,目標就是找出一個 局部最優的結構 (Inception),而且這個結構能 堆疊成更深的神經網路。

Inception模組

目標

找到最佳的稀疏結構,須滿足

  1. 盡可能地將相關性高的神經元連接
  2. 要可堆疊形成更深的神經網路,但要避免參數過多的問題
Fig.7 Inception module ( https://arxiv.org/pdf/1409.4842.pdf )

觀察Inception模組(見 Fig.7 (a)),分成四個部分,1*1卷積、 3*3卷積、 5*5卷積、 pooling

分析

設計重點1.將相關性高的神經元連接,過去卷積已經在空間上有良好的效果,沿用卷積層,並且更進一步取用不同的大小的卷積核,更能將不同範圍的神經元連結在一起,增進將相關性高的神經元連接的效果,這部分的設計參考[6]。

1*1卷積的部分,NIN論文[10][11]中證實不同通道間的神經元關聯性也很高。

Pooling部分主要是因為過去經驗上也有良好的抽取特徵的效果。

設計重點2.可堆疊成更深的神經網路,在目前的CNN網路發展有個很大的問題,我們希望可以加深網路以增加準確性,但這樣操作會造成過多的參數(見 Fig.3 VGGNet參數遠大於AlexNet),這邊設想將Fig.7左邊的結構不斷堆疊,也會遭遇參數量過大的問題,這邊在大卷積的前面加上一個1*1的卷積,這樣有兩個好處

  1. 降低參數量
  2. 將不同通道間的神經元做連接,NIN[10][11]也證實了這通道間神經元關聯性也很高

關於為什麼選擇3*3與5*5,主要是因為這樣的選擇,經過卷積層後能更容易的維持原圖的大小,3*3只要將padding設定為1,而5*5只要將padding設定為2就可輸出跟原圖一樣大小的結果。

Auxiliary network

soft max 0、soft max 1為輔助分類器(見 Fig.4)。

論文中提到增加這部分,是因為發現在淺層的神經網路,分類更加準確,所以在網路中間所產生的特徵圖應該夠有其分辨性,因此使用這些特徵圖做分類,增加額外的分支。

這些分支只有當訓練時會使用,計算方法為計算誤差時,額外分支的誤差會以權重為0.3的方式,加到最後的誤差去做back propagation,預測時不會使用這些分支。文章中提到兩個好處

  1. 加強gradient的回傳
  2. 額外的regularization

Average Pool

使用了Average Pool層取代了其中一個全連結層,好處可參考 Network In Network解析 ,在GoogLeNet中雖然最後還有使用全連結層,但使用Average Pool仍增加了0.6%的top-1準確率,但dropout仍然是必要得。

LRN

這部分可以參考AlexNet等相關說明[3][9]。

結論

GoogLeNet(詳細參數見Fig.8)提出了Inception結構,經由重複堆疊,可增加網路的深度,並且參數也大幅少於之前的深度網路。

參考資料

  1. Going deeper with convolutions
  2. Gradient-Based Learning Applied to Document Recognition
  3. ImageNet Classification with Deep Convolutional Neural Networks
  4. Provable bounds for learning some deep representations
  5. Hebbian theory
  6. Thomas Serre, Lior Wolf, Stanley M. Bileschi, Maximilian Riesenhuber, and Tomaso Poggio. Robust object recognition with cortex-like mechanisms. IEEE Trans. Pattern Anal. Mach. Intell., 29(3):411–426, 2007.
  7. 深度學習:CNN原理
  8. CNN经典模型之GoogLeNet
  9. 深度学习的局部响应归一化LRN(Local Response Normalization)理解
  10. Network In Network
  11. Network In Network 解析
我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章