Inception-v4/ResNet 論文拜讀:Inception-v4/ResNet and the Impact of Residual Connections on Learning

原文鏈接:https://arxiv.org/pdf/1602.07261.pdf

0 摘要

非常深的卷積網絡是近年來圖像識別性能最大進步的核心。一個例子是在Inception架構,它已經被證明能夠以相對較低的計算成本獲得非常好的性能。最近,在2015年ILSVRC挑戰賽中,與更傳統的建築相結合的殘差連接的引入產生了最先進的性能;它的性能類似於最新一代的incepep-v3網絡。這就提出了一個問題:將在Inception架構與殘差連接結合起來是否有任何好處。在這裏,我們給出了明確的經驗證據,即使用殘差連接的訓練可以顯著加快初始網絡的訓練。還有一些證據表明,殘差Inception網絡的性能比非殘差連接的昂貴Inception網絡要好得多。我們還提出了一些新的精簡架構,爲殘差和非殘差Inception網絡。這些變化顯著提高了ILSVRC 2012分類任務的單幀識別性能。我們進一步演示了適當的激活縮放如何穩定非常廣泛的殘差Inception網絡的訓練。在三個殘差和一個incepep-v4的情況下,我們在ImageNet分類(CLS)挑戰的測試集上實現了3.08%3.08\%的top-5錯誤。

1 介紹

自2012年ImageNet[11]的競爭贏得Krizhevsky等[8],他們的網絡AlexNet已成功應用於一個更大的各種各樣的計算機視覺任務,例如對象檢測[4],分割[10],人體姿態估計[17],視頻分類[7],對象跟蹤[18],超限分辨[3]。這些例子僅僅是深層卷積網絡成功應用的幾個例子。

在這項工作中,我們研究了兩種最新思想的結合:He等人在[5]中引入的殘餘連接和Inception架構[15]的最新修訂版。在[5]中,認爲殘差連接對於培訓非常深入的架構具有內在的重要性。因爲在Inception網絡往往是非常深入的,所以用殘差連接來取代Inception架構的過濾級聯階段是很自然的。這將使Inception在保留其計算效率的同時獲得殘差方法的所有好處。

除了簡單的集成之外,我們還研究了Inception本身是否可以通過使它更深入、更廣泛來提高效率。爲此,我們設計了一個名爲Inception -v4的新版本,它具有比Inception -v3更統一的簡化架構和更多的Inception模塊。從歷史上看,Inception-v3繼承了許多早期版本的包袱。技術上的限制主要來自於需要使用DistBelief[2]對分佈式訓練的模型進行分區。現在,在將我們的訓練設置遷移到TensorFlow[1]之後,這些約束已經解除,這允許我們顯著地簡化架構。該簡化架構的細節將在第3節中描述。

在這份報告中,我們將比較兩個純粹的Inception版本,v3和v4,以及類似的昂貴的混合版本。不可否認,這些模型是用一種特別的方式挑選出來的,其主要限制是模型的參數和計算複雜性應該與非殘差模型的成本有些類似。事實上,我們已經測試了更大更廣的Inception - Resnet變體,它們在ImageNet分類挑戰[11]數據集上的表現非常相似。

這裏報告的最後一個實驗是對這裏展示的所有最佳模型的集合的評估。顯然,Inception -v4和InceptionResNet-v2的性能都很好,超過了ImageNet驗證數據集上最先進的單幀性能,因此我們希望瞭解這些性能的組合如何推動這個經過充分研究的數據集上的技術水平。令人驚訝的是,我們發現單幀性能的提高並不能轉化爲集成性能的同樣大的提高。儘管如此,它仍然允許我們報告3.1%3.1\%的驗證集上的前5名錯誤,據我們所知,四個模型組合設置了一個新的技術狀態。

在最後一部分中,我們研究了一些分類失敗,並得出結論,集成仍然沒有達到這個數據集上註釋的標籤噪聲,預測仍然有改進的空間。

2 相關工作

卷積網絡在Krizhevsky等人的[8]之後,在大規模圖像識別任務中得到廣泛應用。接下來的一些重要里程碑是Lin等人的網絡內網絡[9],Simonyan等人的VGGNet[12]和Szegedy等人的GoogLeNet (Inception- v1)[14]。

He等人在[9]中介紹了殘差連接,他們在其中給出了令人信服的理論和實踐證據,證明了利用信號的相加合併進行圖像識別,特別是用於目標檢測的優點。兩位作者認爲,對於訓練非常深入的卷積模型而言,殘差連接本質上是必要的。我們的研究結果似乎並不支持這一觀點,至少在圖像識別方面是這樣。然而,它可能需要更多具有更深層架構的測量點,以瞭解由殘差連接提供的有益方面的真實程度。在實驗部分,我們證明了在不利用殘差連接的情況下訓練有競爭力的很深的網絡不是很困難。然而,殘差連接的使用似乎大大提高了訓練速度,這是一個很大的論據爲他們的使用。Inception深度卷積架構是在[14]中引入的,在我們的講解中稱爲GoogLeNet或Inception- v1。後來,Inception架構以各種方式進行了改進,首先是Ioffe等人引入了批處理規範化[6] (Inception-v2)。後來,在第三次迭代[15]中增加了因數分解的思想,從而改進了體系結構。在本報告中,[15]將被稱爲Inception -v3。

3 架構選擇

3.1 純Inception塊

我們以前的Inception模型曾經以一種分區的方式進行訓練,每個副本都被分區到一個多個子網絡中,以便能夠在內存中適應整個模型。然而,Inception架構是高度可調的,這意味着在不同的層中有許多可能的過濾器數量的變化,這些變化不會影響完全訓練的網絡的質量。爲了優化訓練速度,我們對層的大小進行了仔細的調整,以平衡不同模型子網絡之間的計算。相比之下,隨着TensorFlow的引入,我們可以在不分割副本的情況下訓練最新的模型。這在一定程度上是由於最近對反向傳播使用的內存進行了優化,通過仔細考慮梯度計算所需的張量以及構造計算以減少此類張量的數量來實現。在歷史上,我們在改變架構選擇方面一直比較保守,並且限制我們的實驗只改變孤立的網絡組件,同時保持網絡的其他部分穩定。沒有簡化早期的選擇,導致網絡看起來比實際需要的更復雜。在我們的新實驗中,爲了擺脫這種不必要的負擔,我們決定使用Inception-v4,併爲每個網格大小的Inception塊做出統一的選擇。Incepp -v4網絡的大尺度結構如Figure 9所示,其組件的詳細結構如FIgure 3、4、5、6、7、8所示。圖中沒有標記“V”的所有卷積都是相同填充的,這意味着它們的輸出網格與輸入的大小相匹配。用“V”標記的卷積是有效的填充,這意味着每個單元的輸入patch都完全包含在前一層中,輸出激活圖的網格大小也相應減小。

3.2 殘差Inception塊

對於Inception網絡的Residual版本,我們使用比初始Inception更便宜的Inception塊。每個Inception塊後面都有一個filter-expansion 層(1 x 1個沒有激活的卷積),它用於在添加之前放大濾波器組的維數,以匹配輸入的深度。這需要補償由Inception塊引起的維度減少。

我們嘗試了Inception的幾個Residual版本。這裏只詳細介紹了其中的兩個。第一個"Inception - resnet -v1"大致相當於incep -v3的計算成本,而"Inception - resnet -v2"則相當於新引入的Inception -v4網絡的原始成本。兩個變量的大尺度結構如Figure 15所示。(然而,在實踐中,由於層數較多,Inception -v4的步長時間被證明要慢得多。)

我們的殘差變量和非殘差 Inception變量之間的另一個小的技術差異是,在Inception - resnet的情況下,我們只在傳統層上使用批處理規範化,而沒有在總和上使用。完全使用batchnormalization是有好處的,這是合理的,但是我們希望在一個GPU上保持每個模型副本都是可訓練的。結果表明,具有較大激活大小的層的內存佔用佔用了不成比例的內存。通過省略這些層上的批處理規範化,我們能夠大量增加Inception塊的總數。我們希望,隨着計算資源得到更好的利用,這種權衡將變得沒有必要。

3.3 殘差的縮放

我們還發現,如果過濾器的數量超過1000,殘差變量就開始表現出不穩定性,並且網絡在訓練的早期就已經死亡,這意味着在平均池之前的最後一層在經過數萬次迭代之後開始只產生零。這是無法避免的,既不能通過降低學習速率,也不能通過向這一層添加額外的批處理規範化。

我們發現,在將殘差添加到前一層之前,縮小殘差似乎可以穩定訓練。一般來說,我們選取0.1到0.3之間的一些比例因子來調整殘差,然後將它們添加到累積的層激活中(參見Figure 20)。

He等人在[5]中觀察到非常深的殘差網絡也存在類似的不穩定性,他們建議採用兩階段訓練,第一階段熱身以非常低的學習速率完成,第二階段則以較高的學習比例完成。我們發現,如果過濾器的數量非常多,那麼即使非常低(0.00001)的學習率也不足以應對不穩定性,而學習率高的訓練有可能破壞其效果。我們發現,只計算殘差更可靠。

即使在沒有嚴格要求的地方,它似乎也不會影響最終的準確性,但它有助於穩定訓練。

4 訓練方法

我們使用TensorFlow[1]分佈式機器學習系統,在NVidia Kepler GPU上運行20個副本,用隨機梯度訓練我們的網絡。我們早期的實驗使用了0:9衰減的動量[13],而我們最好的模型是通過使用 0.9衰減和ϵ=1.0\epsilon=1.0的RMSProp [16] 。我們使用了0.045的學習率,每兩個epochs衰減一次,使用的是0.94的指數速率。模型評估是使用隨時間計算的參數的運行平均值來執行的。

5 實驗結果

首先,我們觀察四個變量在訓練過程中的前1和前5驗證錯誤的演變。實驗結束後,我們發現我們對驗證集的一個子集進行了持續評估,該子集由於邊界框不佳而遺漏了約1700個黑名單實體。結果發現,這個遺漏應該只在CLSLOC基準上執行,但是與其他報告(包括我們團隊的一些早期報告)相比,它產生了一些無法比擬的(更樂觀的)數字。前1個錯誤的差異約爲0.3%0.3\%前5個錯誤的差異約爲0.15%0.15\%。然而,由於差異是一致的,我們認爲曲線之間的比較是公平的。

另一方面,我們重新運行了包含50000張圖像的完整驗證集的多作物和集成結果。最後的集成結果也在測試集上執行,併發送到ILSVRC測試服務器進行驗證,以驗證我們的調優沒有導致過擬合。我們想強調,最後驗證了只有一次,我們去年已經提交我們的結果只有兩次:一次BN-Inception 論文,後來在ILSVR - 2015 CLSLOC競爭,所以我們相信測試集數據構成一個真正的估計模型的泛化能力。

最後,我們對不同版本的Inception 和 Inception-ResNet進行一些比較。Inception-v3和Inception-v4模型是不利用剩餘連接的深度卷積網絡,而 InceptionResNet-v1 和 IncepepnetResNet -v2 模型是利用殘差連接的深度卷積網絡,而不是過濾器連接。

Table 2顯示了驗證集上各種體系結構的single-model、single-crop的 top 1和 top 5錯誤。

Table 3顯示了少量 crops 的各種模型的性能:10 crops 用於ResNet,如[5]所報道的),對於Inception變量,我們使用了12種 crops 的評估,如[14]所描述的。

Table 4顯示了使用的各種模型的single-model性能。對於殘差網絡,稠密評價結果由[5]報告。對於Inception網絡,144個 crops 策略被使用,如[14]所述。

Table 5比較了集成結果。對於純殘差網絡,從[5]中報告了6個模型的稠密評價結果。在Inception網絡中,4個模型使用了144個 crops 策略進行集成,如[14]所述。

6 總結

我們已經詳細介紹了三種新的網絡架構:

  • Inception-ResNet-v1:混合 Inception 版本的計算成本與從[15]中 Inception-v3 獲取的計算成本類似。
  • Inception-ResNet-v2:一個更昂貴的混合 Inception 版本,具有明顯改善的識別性能。
  • Inception-v4:一個沒有殘差連接的純 Inception 變體,具有與Inception-ResNet-v2大致相同的識別性能。

我們研究瞭如何引入殘差連接來顯著提高 Inception 架構的訓練速度。而且,我們最新的模型(包括和不包括殘差連接)的性能優於我們以前的所有網絡,這僅僅是因爲模型的大小有所增加。

Reference:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章