重读经典:《ImageNet Classification with Deep Convolutional Neural Networks》
9年后重讀深度學習奠基作之一:AlexNet【下】【論文精讀】
這兩天偶然間在B站看了李沐博士對AlexNet論文的重新解讀,收獲滿滿。AlexNet是當今深度學習浪潮奠基作之一,發表在2012年。在視頻中,李沐博士主要是分享了他的三步法快速讀論文。即當我們看一篇新的論文,可以按照下面這種方法去讀:
- 第一遍:論文標題、摘要、結論。順帶看看論文中重要的圖和表。花費十幾分鐘時間判斷論文是否和自己的研究方向相同。
- 第二遍:確定論文值得讀之后,可以快速的把整個論文過一遍,不需要知道所有的細節,但是需要了解重要的圖和表,知道每一個部分在干什么,圈出相關文獻。覺得文章太難理解的話,可以先看看論文中引用的其它文獻,了解相關背景知識。
- 第三遍:最詳細的一遍,知道每一段和每一句話是什么意思,在復現論文時再反復研讀。
AlexNet論文鏈接:https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf
1.第一遍
首先是論文標題,論文標題中文意思是:使用深度卷積神經網絡對ImageNet數據集進行分類。第一次讀論文標題時要注意下面幾個關鍵詞:
- ImageNet:論文使用的數據集是ImageNet,ImageNet數據集具體內容是什么樣的?
- Neural Networks :神經網絡,這篇文章使用了神經網絡技術。
- Deep Convolutional:卷積神經網絡工作原理是什么? 同時作者為什么要使用深度的卷積神經網絡。
下面是論文的作者,論文一作是Alex,這也是本篇論文提出的網絡被稱為AlexNet的原因。可能對論文前兩個作者不是很熟悉,但是論文通信作者是Hinton,長期研究神經網絡和深度學習。
下面是論文摘要,摘要總共六句話。
- 前2句話介紹了自己做的工作,訓練了一個很大很深的卷積神經網絡在LSVRC-2010 contest取得了很好的結果。
- 第3句話介紹了網絡的模型,有6000萬個參數和65萬個神經元,模型包含5個卷積層,以及最大池化層和3個全連接層。
- 第4句和第5句介紹了如何訓練網絡,使用了不飽和的神經元和GPU實現,為了減少全連接層的過擬合,使用了dropout技術。
- 最后一句, 介紹在ILSVRC-2012比賽取得了第一名,錯誤率比第二名低了10.9%,可以看到本文設計的網絡模型效果很好。
最后是論文結論部分,不過本篇論文的結論是討論,和一般論文稍有不同。論文討論有兩段,第一段說我們在有監督學習上取得了很好的效果,證明了網絡的深度很重要。第二段說我們沒有使用任何的無監督預訓練,這直接導致了后面的深度學習研究都集中在有監督學習上;同時作者提出未來會研究視頻數據(當前研究的一個很火方向),因為視頻數據會提供時序信息,這是靜態圖像數據所缺失的。
在第一遍時,可以順帶看看論文中重要的圖和表,如網絡結構圖,可能第一遍不一定能看懂。第一遍讀完后,可以決定后面是否再度第二遍論文,如果是研究圖片分類方向的話,則需要再讀第二遍。
2.第二遍
首先是Introduction部分,分為5段。前3段主要是研究內容背景知識介紹,第4段介紹了本文主要貢獻。本文訓練了一個很大的卷積神經網絡在ILSVRC比賽上取得了最好的結果,同時本文在GPU實現了2D卷積操作。本文訓練的網絡包含一些新的和不常見的特征來提高網絡性能和減少訓練時間,這部分在論文第3節進行了介紹。第4節介紹了新的技術來防止過擬合。整個網絡包含5個卷積層和3個全連接層,同時發現網絡深度是很重要的,即使移除任意一層卷積層,都會導致性能下降。
作者還強調了由于GPU內存的限制,在兩塊GPU上進行訓練時需要5-6天時間,如果能有更快的GPU和更大的數據集,網絡性能還能進一步提升。
然后是ImageNet Dataset部分,分為3段。介紹了整個數據集大約有1500萬張圖片,共有22000類。ILSVRC比賽共有1000類,每一類大約有1000張圖片。在2010的比賽中,可以得到測試集數據標簽,但是在2012年的比賽中則沒有測試集標簽。
由于ImageNet數據集圖片精度并不相同,因此我們每一張圖片下采樣到256×256256\times256256×256。當短邊尺寸小于256時,我們先上采樣到256,然后再從圖片中截取 256×256256\times256256×256 的圖片作為輸入。我們沒有對圖片進行任何的預處理,整個網絡是在每個像素的原始RGB值進行訓練(也就是端到端訓練,這也是深度學習的一大優勢)。
再然后是Architecture部分,分為5個小節。
第一個介紹的是ReLU激活函數,函數形式為 f(x)=max(0,x)f(x)=max(0,x)f(x)=max(0,x),形式比較簡單。作者說這是一個非飽和的非線性函數,比其它激活函數訓練要快(具體原因沒解釋),關于ReLU函數的具體介紹可以看參考文獻[20]。作者做了一個實驗,如圖1所示,在將錯誤率降低到25%時,ReLU比tanh函數訓練時要快6倍。
第2小節-第4小節介紹的是多GPU訓練,歸一化處理、pooling處理,主要是偏工程實現,這些部分可先跳過,在讀第3遍時再看。
第5小節是網絡結構介紹,輸入是 224×224×3224\times224\times3224×224×3 的圖片,然后是5個卷積層,接著是3個全連接層,最后一層是softmax層,輸出為1000個類別標簽的預測概率分布。使用了兩個GPU進行訓練(現在訓練網絡一般可以不同分割模型),將網絡模型切成兩半分別在兩個GPU中進行訓練。第2個、第4個和第5個卷積層的輸入為同一GPU上之前一層卷積層的輸出,而第3個卷積層的輸入為兩個GPU上的第2個卷積層輸出。每個全連接層的輸入都為前一層網絡的全部輸出。可以看到,隨著網絡深度的增加,卷積層中圖像大小在減少,而深度在不斷增加。
接著是Reducing Overfitting部分,作者首先使用了數據增強,增加數據的多樣性,然后使用了新的降低過擬合技術dropout。具體原理作者并沒有解釋,作者使用了50%的概率值來使每一個隱藏層神經元輸出為0。這里dropout技術主要用在前兩個全連接層。
下面是實驗設置,使用SGD進行訓練,同時使用了權重衰減(0.0005)。初始化時使用了均值為0標準差為0.01的高斯分布,第2、4、5層和全連接層偏差初始值為1,其余層為0。在訓練時會手動改變學習率的值,當驗證集上誤差率不再變化時,將學習率除以10,學習率初始值為0.01。
下面是論文實驗結果部分,可以看到在ILSVRC-2010/2012數據上作者都取得了最低的錯誤率,同時作者也在2009年版本的ImageNet全部數據上進行了訓練,不過在ImageNet全部數據集上進行訓練的研究比較少。
作者在訓練時也發現了一些有意思的現象,就是兩個GPU,一個GPU上和卷積核和圖像顏色是有關的,一個和圖像顏色是無關的,這個還待解釋。另一個是圖4所示,當最后一個隱藏層(4096)神經元歐幾里得空間距離相近是,兩張圖片基本上是同一類(深度學習的解釋性也是一個很重要的研究方向)。
至此,論文解讀到此結束,后面如果想復現本篇論文時,就需要再多讀幾遍。
總結
以上是生活随笔為你收集整理的重读经典:《ImageNet Classification with Deep Convolutional Neural Networks》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.深度学习练习:Building yo
- 下一篇: 金发辣妹COS女版祖国人:果然美女也可以