TensorFlow實戰—Google Inception Net

(1) 與VGG同在2014年出現,取得了ILSVRC 2014比賽第一名。網絡

(2) Inception V1有22層深,控制參數量的同時提升性能。控制參數量的緣由:性能

  • 參數越多模型越龐大,須要供模型學習的數據量就越大,而目前高質量的數據很是昂貴
  • 參數越多,耗費的計算資源也會更大。

(3) 參數少、模型深、表達能力強:學習

  • 去除了最後的全鏈接層,用全局平均池化層(將圖片尺寸變爲1*1)來取代它。全鏈接層佔AlexNet 90%的參數,去除後訓練快、減輕過擬合。
  • Inception Module提升了參數的利用效率

(4) 通常,卷積層要提高表達能力,主要依靠增長輸出通道數,反作用:計算量增大和過擬合。優化

  • 一個輸出通道對應一個濾波器,同一個濾波器共享參數,只能提取一類特徵,所以一個輸出通道只能作一種特徵處理。
  • 能夠在輸出通道之間進行信息組合。

(5) Inception Moduleorm

  • 包含3種不一樣尺寸的卷積核1個最大池化,增長了網絡對不一樣尺度的適應性,與Multi-scale相似。
  • Inception Net的主要目標是找到最優的稀疏結構單元,即Inception Module
  • 一個好的稀疏結構,應該把相關性高的一簇神經元節點鏈接在一塊兒。普通數據中經過聚類,圖像中臨近區域的數據相關性高。
  • 並且可能有多個卷積核,同一空間位置但在不一樣通道的卷積核的輸出結果相關性極高。
  • 1*1的卷積能夠把這些相關性很高的、在同一個空間位置可是不一樣通道的特徵鏈接在一塊兒
  • 1*1鏈接的節點相關性最高,使用大一點的卷積核3*3/5*5鏈接節點的相關性也很高,增長多樣性。
  • 整個網絡中有多個堆疊的Inception Module,但願靠後的Module能捕獲更高階的抽象特徵,所以靠後的Module的卷積的空間集中度應該逐漸下降,3*3和5*5大面積的卷積核的佔比(輸出通道數)應該更多。

(6) Inception Net 有22層深,使用輔助分類節點(auxiliary classifiers),將中間某一層的輸出用做分類,用較小的權重(0.3)加到最終分類中。圖片

(7) Inception 不一樣版本ci

  • Inception V1,Going Deeper with Convolutions,2014年9月(top5 error = 6.67%)
  • Inception V2,Batch normalization:Accelerating Deep Network Training by Reducing Internal Covariate, 2015年2月 (top5 error = 4.8%)
  • Inception V3, Rethinking the Inception Architecture for Computer Vision, 2015年12月 (top5 error = 3.5%)
  • Inception V4, Inception-ResNet and the Impact of Residual Connections on Learning, 2016年2月 (top5 error = 3.08%)

(8) Inception V2資源

  • 學習VGG,用兩個3*3的卷積替代5*5的大卷積,下降參數量並減輕過擬合
  • 提出了Batch normalization,有效的正則化方法,讓大型卷機網絡的訓練速度加快不少倍,同時收斂後的分類準確率也能夠獲得大幅提升。
    • BN在用於神經網絡某層時,會對每個mini-batch數據的內部進行標準化處理,輸出規範到 N(0,1)的正態分佈,減小了Internal Covariate Shift(內部神經元分佈的改變)。
    • 傳統的深度神經網絡在訓練時,每一層的輸入的分佈都在變化,致使訓練變得困難,只能使用一個很小的學習速率解決這個問題。對每層使用BN後就能夠有效解決這個問題。
    • BN還起到了正則化的做用,能夠減小或取消Dropout,簡化網絡結構。
  • 除了BN外,提升增益的其餘調整:
    • 增大學習速率並加快學習衰減速度以適用BN規範後的數據
    • 去除Dropout並減輕 L2 正則
    • 去除 LRN
    • 更完全地對訓練樣本進行shuffle
    • 減小數據加強過程當中對數據的光學畸變,由於BN訓練更快,每一個樣本被訓練的次數更少,所以更真實的樣本對訓練更有幫助。

(9) Inception V3it

  • 引入了Factorization into small convolutions,將一個較大的二維卷積拆成兩個較小的一維卷積,eg:7*7拆成1*7和7*1的卷積,3*3拆成1*3和3*1.節約了參數,減輕過擬合,同時增長了一層非線性擴展模型表達能力。非對稱結構,比對稱拆分爲相同的小卷積效果更明顯,能夠處理更多/更豐富的空間特徵,增長特徵多樣性。
  • 優化了Inception Module的結構,有35*35 17*17 和8*8三種不一樣結構。只在網絡後部出現,前部仍是普通卷積曾。在Inception Module使用分支,分支中又實用分支。

(10) Inception V4io

  • 將Inception Module與ResNet結合。

 

參考資料:

《TensorFlow實戰》黃文堅  唐源 著

相關文章
相關標籤/搜索