你應該知道的9篇深度學習論文(CNNs 理解)

你應該知道的9篇深度學習論文(CNNs 理解)

當時看到英文的博客,本想翻譯給感興趣的同學們看看,沒想到已經有人翻譯,於是進行了轉載,留給自己和更多的人學習,本文僅供參考。


英文博客:https://adeshpande3.github.io/adeshpande3.github.io/The-9-Deep-Learning-Papers-You-Need-To-Know-About.html


原文網址:http://blog.csdn.NET/darkprince120/article/details/53024714


 

Introduction

        本文主要總結了卷積神經網絡在機器視覺領域的重要發展及其應用。我們將介紹幾篇重要的公開發表的論文,討論它們爲何重要。前一半的論文(AlexNet到ResNet)將主要涉及整體系統架構的發展和演變,後一半論文將主要集中在一些有趣的子領域應用上。

AlexNet  (2012)

        這篇文章算是深度學習的起源(儘管有些學者認爲Yann LeCun在1998年的論文 paper 纔是真正的起源)。文章標題是“ImageNet Classification with Deep Convolutional Networks”,已經獲得了共6184次引用,並被廣泛認爲是業內最具深遠影響的一篇。Alex Krizhevsky, Ilya Sutskever, 以及Geoffrey Hinton三人創造了一個“大規模、有深度的卷積神經網絡”,並用它贏得了2012年度ILSVRC挑戰(ImageNet Large-Scale Visual Recognition Challenge)。ILSVRC作爲機器視覺領域的奧林匹克,每年都吸引來自全世界的研究小組,他們拿出渾身解數相互競爭,用自己組開發的機器視覺模型/算法解決圖像分類、定位、檢測等問題。2012年,當CNN第一次登上這個舞臺,在前五測試錯誤率top 5 test error rate項目上達到15.4%的好成績。(前五錯誤Top 5 error指的是當輸入一幅圖像時,模型的預測結果可能性前五中都沒有正確答案)。排在它後面的成績是26.2%,說明CNN相對其它方法具有令人震驚的優勢,這在機器視覺領域引起了巨大的震動。可以說,從那時起CNN就變成了業內家喻戶曉的名字。

        這篇文章主要討論了一種網絡架構的實現(我們稱爲AlexNet)。相比現在的架構,文中所討論的佈局結構相對簡單,主要包括5個卷積層、最大池化層、丟包dropout層,以及3個全連通層。該結構用於針對擁有1000個可能的圖像類別進行分類。


        圖中文字:AlexNet架構採用兩個不同的數據“流”使得它看起來比較奇怪。這是因爲訓練過程的計算量極大因此需要將步驟分割以應用兩塊GPU並行計算。

文中要點

  • 利用ImageNet數據庫進行網絡訓練,庫中包含22000種類的1500萬標籤數據。
  • 利用線性整流層ReLU的非線性函數。(利用線性整流層ReLU後,運行速度比傳統雙曲正切函數快了幾倍)
  • 利用了數據擴容方法data augmentation,包括圖像變換、水平反射、塊提取patch extractions等方法;
  • 爲解決訓練集過擬合問題而引入了丟包層dropout layer。
  • 使用批量隨機梯度下降法batch stochastic gradient descent進行訓練,爲動量momentum和權重衰退weight decay設定限定值。
  • 使用兩塊GTX 580 GPU訓練了5~6天。

本文重要性

        本文的方法是機器視覺領域的深度學習和CNN應用的開山怪。它的建模方法在ImageNet數據訓練這一歷史性的難題上有着很好的表現。它提出的許多技術目前還在使用,例如數據擴容方法以及丟包dropout層。這篇文章真真切切地用它在競賽中的突破性表現給業內展示了CNN的巨大優勢。

ZF Net (2013)

        AlexNet在2012年大出風頭之後,2013年隨即出現了大量的CNN模型。當年的的ILSVRC比賽勝者是來自紐約大學NYU的Matthew Zeiler以及Rob Fergus設計的模型,叫做ZF Net。它達到了11.2%的錯誤率。ZF Net的架構不僅對之前的AlexNet進行了進一步的優化,而且引入了一些新的關鍵技術用於性能改進。另外一點,文章作者用了很長的篇幅講解了隱藏在卷積網絡ConvNet之下的直觀含義以及該如何正確地將濾波器及其權重係數可視化。

        本文標題是“Visualizing and Understanding Convolutional Neural Networks”。在文章開頭,Zeiler和Fergus提出CNN的復興主要依靠的是大規模訓練集以及GPU帶來的計算能力飛躍。他們指出,目前短板在於研究人員對模型的內部運行機理知之甚少,若是不能解決這個問題,針對模型的改進就只能依靠試錯。“development of better models is reduced to trial and error”. 雖然相較3年前,我們現在對模型有了進一步的瞭解;然而這依然是一個重要問題。本文的主要貢獻是一個改進型AlexNet的細節及其可視化特徵圖層feature map的表現方式。


文章要點

  • 除了一些微小改進外,模型架構與AlexNet非常相似
  • AlexNet訓練集規模爲1500萬張圖像,ZF Net僅爲130萬張
  • 相比AlexNet在第一層使用的11*11濾波器,ZF Net使用7*7的濾波器及較小步長。如此改進的深層次原因在於,在第一卷積層中使用較小尺寸的濾波器有助於保留輸入數據的原始像素信息。事實證明,在第一卷積層中使用11*11濾波器會忽略大量相關信息。
  • 隨着網絡層數深入,使用的濾波器數量同樣增加。
  • 激活方法activation function使用了線性整流層ReLUs,誤差函數error function(疑爲作者筆誤,應該是損失函數loss function)使用了交叉熵損失函數cross-entropy loss,訓練方法使用了批量隨機梯度下降法batch stochastic gradient descent。
  • 用1塊GTX580 GPU訓練了12天
  • 發明一種卷積網絡可視化技術,名爲解卷積網絡Deconvolutional Network,有助於檢查不同激活特徵以及它們與輸入空間的關係。命名爲“解卷積網絡””deconvnet”是因爲它把特徵投影爲可見的像素點,這跟卷積層把像素投影爲特徵的過程是剛好相反的。

DeConvNet

        解卷積的基本工作原理是,針對訓練後的CNN網絡中的每一層,都附加一個解卷積層deconvnet用於將感知區回溯path back到圖像像素。在CNN的工作流程總,我們把一幅圖像輸入給CNN,一層一層地計算其激活值activations,這是前向傳遞。現在,假設我們想要檢查第四卷積層中針對某個特徵的激活值,我們把這層對應的特徵圖層中的這個激活值保存起來,並把本層中其它激活值設爲0,隨後將這個特徵圖層作爲解卷積網絡的輸入。這個解卷積網絡與原先的CNN有相同的濾波器設置。輸入的特徵圖層通過一系列的反池化(最大池化求反),整流(反整流?),以及濾波(反濾波?),隨後到達輸入端。

        隱藏在這整套流程之下的原因是,我們想要知道當給定某個特徵圖層時,什麼樣的圖像結構能夠激活它。下圖給出了第一和第二層的解卷積層的可視化結果。


        圖中文字:第一層與第二層的可視化表示。每層都表示爲兩幅圖片:其一表示爲濾波器;另一表示爲輸入原始圖像中的一部分結構,在給定的濾波器和卷積層之下,這些結構能夠激發最強的激活信號。圖中第二解卷積層的左圖,展示了16個不同的濾波器。(跟第一層9個組合起來)

        就像我們在Part 1中討論過的,圖中卷積網絡ConvNet的第一層通常是由一些用於檢測簡單邊緣、顏色等信息的低階特徵檢測子組成。從圖中也可以看出,第二層則是更多的圓形特徵。讓我們看看下圖3,4,5層的情形。


        圖中這幾層展示出更進一步的高階特徵,例如狗的臉部特徵或是花朵的特徵等。也許你還記得,在第一卷積層後,我們應用了一個池化層pooling layer用於圖像下采樣(例如,將32*32*3的圖像轉換爲16*16*3)。它帶來的效果是第二層的濾波器視野(檢測範圍scope)更寬了。想要獲取更多有關解卷積網絡以及這篇論文的信息,請參考Zeiler的發表視頻presenting

本文重要性

        ZF Net不僅僅是2013年度競賽的冠軍,而且它爲CNN提供了更加直觀的展示能力,同時提供了更多提升性能的技巧。這種網絡可視化的方法有助於研究人員理解CNN的內部工作原理及其網絡架構。迷人的解卷積網絡可視化以及阻塞實驗讓這篇文章成了我的最愛。

VGG Net (2014)

        簡單但有深度。2014年度ILSVRC其中一個模型最好地利用了這兩個特點達到了7.3%的錯誤率(但並不是當年的冠軍)。牛津大學的Karen Simonyan以及Andrew Zisserman兩位創造了一個19層的CNN,網絡中僅使用了3*3尺寸的濾波器,步長stride和填充padding都爲1,池化層使用2*2的最大池化函數,步長爲2。是不是很簡單?


文章要點

  • 僅使用3*3濾波器,這與之前的AlexNet的首層11*11濾波器、ZF Net的7*7濾波器都大不相同。作者所闡述的理由是,兩個3*3的卷積層結合起來能夠生成一個有效的5*5感知區。因此使用小尺寸濾波器既能保持與大尺寸相同的功能又保證了小尺寸的優勢。優勢其中之一就是參量的減少,另一個優勢在於,針對兩個卷積網絡我們可以使用多一個線性整流層ReLU。(ReLU越多,越能降低系統線性性?)
  • 3個3*3卷積層並排起來相當於一個有效的7*7感知區。
  • 輸入圖像的空間尺寸隨着層數增加而減少(因爲通過每層的卷積或是池化操作),其深度反而隨着濾波器越來越多而增加。
  • 一個有趣的現象是,每個最大池化層之後,濾波器數量都翻倍,這進一步說明了數據的空間尺寸減少但深度增加。
  • 模型不僅對圖像分類有效,同樣能很好地應用在本地化任務中(翻譯任務)。作者在文章中進行了一系列的迴歸分析說明此事。(論文第10頁很好地說明了此事paper
  • 用Caffe工具箱進行建模
  • 在訓練中使用了尺寸抖動技術scale jittering進行數據擴容data augmentation
  • 每卷積層後緊跟一個線性整流層ReLU並使用批量梯度下降法batch gradient descent進行訓練
  • 用4塊Nvidia Titan Black GPU進行訓練2~3周。

本文重要性

        VGG Net是我印象中影響最爲深遠的一篇文章,原因在於它強調了卷積網絡中的深度,CNN必須保證擁有一個足夠深的網絡結構才能體現它在處理視覺數據的層次性。保持深度、保持簡單。

GoogLeNet (2015)

        還記得剛纔我們所說的簡單法則嗎?然而Google在自己的架構Inception Module裏把這個原則拋到了九霄雲外。GoogLeNet是一個22層的CNN,它以6.7%的錯誤率贏得了2014年度ILSVRC的冠軍。據我所知,這是第一個跟傳統方法,也就是卷積層與池化層簡單疊加以形成序列結構的方法不同的一種CNN的新架構。文章作者強調,他們的新模型也特別重視內存與計算量的使用(這是之前我們沒有提到的:多層堆積以及大量濾波器的使用會耗費很多計算與存儲資源,同樣也會提升過擬合的機率)。


Inception Module

        當我們第一眼看到GoogLeNet的架構時,會發現並不是像之前架構那樣,所有流程都是順序執行的。系統的許多部分是並行執行的。

        下圖就稱爲Inception module。讓我們仔細研究一下它的構成。


        底部的綠色模塊就是我們的輸入,而頂部綠色模塊是輸出(把它順時針轉90°就可以跟之前的GoogLeNet架構圖對應起來了)。基本上在傳統卷積網絡ConvNet中,你需要選擇當前輸入是用於執行池化pooling操作還是卷積操作(同樣要選擇濾波器尺寸)。然而在Inception module裏,你可以讓它們同時跑一遍。實際上,這正是作者一開始設計時的“天真”想法。

        爲什麼說它“天真”呢?答案是它會導致太多的輸出。最終我們會得到一個具有極爲巨大深度的數組。爲了解決這個問題,作者在3*3以及5*5卷積層之前,採用了一個1*1卷積操作。1*1卷積(或稱爲網絡中的網絡架構NIN)提供了降維的效果。打個比方,假設你有一個100*100*60的輸入圖像(尺寸無關緊要,可以看成是其中某一層的輸出)。將其進行20個1*1的卷積操作,則會將尺寸變爲100*100*20(不太明白了,估計20個濾波器尺寸應當是1*1*60)。這意味着之後3*3以及5*5卷積所要面對的圖像數據變少了。這就像是一個“特徵池化pooling of features”的操作,就跟在一般模型中的最大池化maxpooling層中降低空間尺寸的操作類似,在這裏我們降低了數據的深度。另外一點在於這些濾波器後跟線性整流層ReLU(有關這些1*1濾波器的作用,更多信息請參考Aaditya Prakash的相關文章great post)。另外同樣提供了一段視頻video介紹了本方法的相關濾波器知識。

        你可能會問“這架構有啥用?”。事實上,在這個由網絡中的網絡NIN層,中型濾波器,大型濾波器以及池化操作組成的架構中,NIN層能夠從輸入數據中提取出極爲精細的圖像細節信息,5*5濾波器能夠覆蓋較大的感知區與提取其內部的信息。同樣,池化操作流程能夠幫你減少空間尺寸,處理過擬合問題。另外,每個卷積層都配有一個線性整流層ReLU,它能夠降低你的系統線性度。基本來說,這個架構能夠以一個可接受的計算量處理這些複雜操作。此外,文章中還提到了一個更高層次的用途,是有關稀疏及稠密連接sparsity and dense connections的。(請參考論文3,4節paper,事實上博主自己還沒看懂,求大神點解)

文章要點

  • 模型裏共使用9個Inception module模塊,深度總計100層!
  • 並沒有使用全連通層,而是用一個平均池化層average pool取而代之,將7*7*1024的數據降低爲1*1*1024。這個構造大大降低了參量個數。
  • 比AlexNet的參量個數少了12倍。
  • 在測試時,使用相同輸入圖像的多個副本multiple crops(?)作爲系統輸入,將其結果進行歸一化指數函數softmax平均操作後得到其最終結果。
  • 在模型中引入了區域卷積網絡R-CNN的概念(之後會提到)
  • Inception module現在不斷更新中(現在版本6,7)
  • “用一些高端GPU訓練1周即可”

本文重要性

        GoogLeNet是最先提出CNN模型中的非序列疊加模型這一概念的。文章作者通過介紹Inception module模塊,爲業內展示了一個獨具創造性的,有着較高運行效率的模型。本文爲隨後出現的一些精彩的模型奠定了基石。

        說得好,小李子。說得好!

Microsoft ResNet (2015)

        想象一個很深的CNN架構,把它的層數翻兩番,它的深度可能還比不上ResNet,它是微軟亞研MRA在2015年提出的架構。ResNet是一個擁有152層網絡架構的新秀,它集分類、檢測與翻譯功能於一身。除開層數破了紀錄,ResNet自身的表現也破了ILSVRC2015的記錄,達到了不可思議的3.6%(通常人類也只能達到5~10%的出錯率,跟專業領域和技能相關。請參考Andrej Karpathy以自身經驗撰寫的,有關ImageNet挑戰中人類與卷積網絡ConvNet競賽的雄文great post

Residual Block

        文章中提出的殘差區塊residual block概念,其設計思路是這樣的:當我們的輸入x通過卷積-線性整流-卷積系列操作後,產生的結果設爲F(x),將其與原始輸入x相加,就有H(x)=F(x)+x。對比傳統CNN,只有H(x)=F(x)。而ResNet需要把卷積結果F(x)與輸入x相加。下圖的子模塊表現了這樣一個計算過程,它相當於對輸入x計算了一個微小變化”delta”,這樣輸出H(x)就是x與變化delta的疊加(在傳統CNN中,輸出F(x)完全是一個全新的表達,它並不包含輸入x的信息)。文章作者認爲,“這種殘差映射關係residual mapping比起之前的無關映射unreferenced mapping更加容易優化”。


        殘差區塊的另外一個優勢在於反向傳播操作時,梯度信息流由於這些附加的計算,從而更加容易傳播flow easily through the effective。

文章要點

  • “極度深寒Ultra-deep” - Yann LeCun
  • 152層…
  • 一個有意思的特點是,最初兩層處理後,輸入圖像的空間尺寸由224*224壓縮至56*56
  • 作者聲明若在平層網絡plain nets中隨意增加層數會導致訓練計算量以及錯誤率上升(參考論文paper圖1
  • 研究團隊曾嘗試使用1202層網絡架構,結果精確度反而降低了,推測原因是過擬合。
  • 訓練使用一個8GPU的機器,持續了2~3周

文章重要性

        模型達到的3.6%錯誤率本身就極具說服力了。ResNet模型是目前最棒的CNN架構,同時是殘差學習residual learning的一項重要創新。2012年以來,隨着錯誤率逐年下降,我很懷疑在ILSVRC2016上是否能看到更好的成績。我想我們也許已經到了一個瓶頸,僅依靠往模型中堆砌更多的卷積層已經難以獲取算法性能上的提升了。就像之前的兩年那樣,今年的競賽一定會有更具創造性的新型模型架構。2016.9.16,這是今年比賽結果揭曉之日。別忘了。

        額外參考文章:ResNets inside of ResNets. Yeah. I went there.

Region Based CNNs (R-CNN - 2013, Fast R-CNN - 2015, Faster R-CNN - 2015)

        也許會有人認爲比起之前所說的那些新架構,R-CNN纔是最重要,對業內影響最大的CNN模型。UC Berkeley的Ross Girshick團隊發明了這種在機器視覺領域有着深遠影響的模型,其相關論文被引量超過了1600次。如同標題所說的,Fast R-CNN以及Faster R-CNN方法使我們的模型能夠更好更快地解決機器視覺中的目標檢測問題。

        目標檢測的主要目的是:給出一副圖像,把其中所有物體都框起來。這個過程可以分爲兩個主要的部分:目標標定、分類。

        作者提出,針對區域標定方法,任何類不可知區域檢測法class agnostic region proposal method都是合適的。其中Selective Search方法特別適用於RCNN模型。Selective Search算法在運行的過程中會生成2000個不同的,有最大可能性標定圖像中的目標的區域標定region proposals。獲取到這些標定區域後,算法把它們“變形warped”轉換爲一幅圖像並輸入一個已訓練好的CNN中(例如AlexNet),進行特徵向量的提取。隨後將這些向量作爲一系列線性SVM分類器的輸入進行分類。同樣將這些向量輸入給區域邊界的迴歸分析器regressor,用於進一步精確獲取目標的位置。


        隨後,模型採用一個非極大值抑制算法用於去除那些互相重疊的區域。

Fast R-CNN

        Fast R-CNN針對之前模型的改進主要集中在這3個方面的問題。多個階段的訓練(卷積網絡ConvNet、SVM、區域邊界迴歸分析)計算負載很大且十分耗時。Fast R-CNN通過優化流程與改變各生成標定區域的順序,先計算卷積層,再將其結果用於多個不同的功能計算模塊,以此解決速度的問題。在模型中,輸入圖像首先通過一個ConvNet,從其最後輸出的特徵圖層中獲取特徵標定區域(更多信息參考論文2.1節paper),最後將其同時輸入全連通層、迴歸分析模塊以及分類模塊。(譯者按:這段基本上爲字面翻譯,然而有許多不合常理的地方。從圖中看出標定區域似乎是在ConvNet之前,跟文中所述矛盾;另外圖中似乎應該有多個ROI區域,並行地進行ConvNet,輸出結果再並行輸入FC,regressor等)


Faster R-CNN

        Faster R-CNN用於解決在R-CNN和Fast R-CNN中的一些複雜的訓練流程。作者在最後一層卷積層後插入了一個區域標定網絡region proposal network(RPN)。RPN能夠從其輸入的特徵圖層中生成標定區域region proposals。之後流程則跟R-CNN一樣(ROI池化、全連通、分類以及迴歸)


文章重要性

        首先它能檢測圖像中的特定物體;更重要的是它能夠找到這個物體在圖像中的具體位置,這是機器學習的一個重要進步。目前,Faster R-CNN已經成爲目標檢測算法的標杆。

Generative Adversarial Networks (2014)

        根據Yann LeCun的說法Yann LeCun,這個網絡架構可以說又是一個大進步。在介紹這篇文章之前,我們先談談對抗樣本adversarial examples。例如,有一個經過ImageNet數據訓練好的CNN,現在給一副圖(如下圖左)加一些擾動或微小修改(中,右),輸入後導致預測錯誤率增加了許多。雖然圖像看起來跟原來似乎是一樣的,但是最終分類卻與原先已經不同了。歸納起來,對抗樣本就是那些故意愚弄並破壞卷積網絡ConvNets結果的圖像。


        圖中文字:左列圖像爲正確樣本,中間一列表示左和右圖之間的擾動,右列圖像的大部分都被歸類爲鴕鳥ostrich。事實上,人眼幾乎難以分辨左右圖之間的差異,然而卷積網絡ConvNet在分類時竟會產生如此誇張的錯誤。

        對抗樣本Adversarial examples (paper) 嚇到了許多研究人員並馬上成爲議論的熱點。現在讓我們談談這個generative adversarial networks模型。這裏有兩個模型:產生模型generative model和判別模型discriminative model。判別模型discriminative model用於判斷某幅圖像是天然的(直接來自數據集裏)還是人爲製造的。產生模型generator則創造樣本供給判別模型discriminator訓練。這可以看成是一個零和zero-sum遊戲或是最小最大minimax遊戲。文章中用的類比是這樣的,產生模型generative model就像是“一羣造假幣的”,而判別模型discriminative model則像是“抓造假幣者的警察”。產生模型不停地試圖欺騙判別模型而判別模型試圖識破欺騙。隨着模型的訓練,二者的能力不斷提升最後達到“贗品和正品已經完全分不清楚了”的程度。

論文重要性

        聽起來這麼的簡單,那爲什麼我們要關注這個模型呢?就像Yann LeCun在Quora網站上的帖子post所述,因爲判別模型discriminator已經能夠識別來自數據集中的真實圖像以及人工仿造的圖像,因此可以說其探悉了“數據的內在表達”。因此,這個模型可用作CNN中的特徵提取器;另外你也可以用它來仿造一些以假亂真的圖像。(link).

Generating Image Descriptions (2014)

        當你把CNN和RNN(循環神經網絡)結合在一起會產生什麼?抱歉,別想錯了,你並不能得到R-CNN;-);但確實能得到一個很不錯的模型。Andrej Karpathy(我個人最喜歡的作者之一)和Fei-Fei Li所寫的這篇文章就是着重於研究將CNN與雙向RNN bidirectional RNN相結合生成用於描述圖像區域的自然語言描述器。基本上這個模型通過輸入一副圖像,產生如下的輸出:


        看起來非常不可思議。讓我們看看它跟普通CNN有什麼不同。在傳統的模型中,針對訓練數據中的每一張圖片,都只有一個確定的標籤與之對應。但本文所描述的模型則通過一個句子(或標題)與圖像相關聯。這種標籤形式被稱爲弱標籤,其語句中的成分與圖像中的(未知)部分相關聯。使用這樣的訓練集,讓一個深度神經網絡模型“推斷語句成分與其描述的圖像區域之間的潛在結合alignment關係(文中語)”;另外還有一個網絡模型則將圖像作爲輸入,生成其文字描述。現在讓我們分別看看這兩個部分:配對alignment與產生generation。

Alignment Model

        這個部分的主要目的在於將視覺信息和文字信息進行配對結合(圖像和描述文字)。模型輸入一幅圖像與一句話,然後對它們倆的匹配程度進行打分作爲輸出(有關這個模型工作的具體細節,作者Karpathy引用了另外一篇論文paper。模型主要使用兼容/不兼容圖文對compatible and incompatible image-sentence pairs進行訓練。

        現在看一下該如何表現一幅圖像。首先,把一幅圖像輸入一個用ImageNet數據訓練過的R-CNN網絡,檢測其中的物體。前19個檢測出來的物體(加上自身)表現爲深度爲500維的維度空間。那麼現在我們有了20個500維向量(文章中表示爲v),這就是圖像中的信息。隨後,我們需要獲取語句中的信息。我們利用雙向RNN架構,把輸入語句嵌入同樣的多模態維度空間。在模型的最高層,輸入的語句內容會以給定的句式(given sentence)表現出來。這樣,圖像的信息和語句信息就處於同一個建模空間內,我們通過計算其內積就可以求得相似度了。

Generation Model

        剛纔說了,配對alignment模型創建了一個存放圖像信息(通過RCNN)和對應文本信息(通過BRNN)的數據集。現在我們就可以利用這個數據集來訓練產生generation模型,讓模型從給定圖像中生成一個新的描述文本信息。模型將一幅圖像輸入CNN,忽略其softmax層,其全連通層的輸出直接作爲另一個RNN的輸入。這個RNN的主要功能則是爲語句的不同單詞形成一個概率分佈函數。(同樣需要另外訓練)

        聲明:這絕對是最難懂的文章之一,如果大家對我的講述有不同意見和建議,請一定在評論區留言。


文章重要性

        對我來說,本文要點在於利用了看起來似乎不同的兩種模型RNN和CNN,創造了一個結合機器視覺和自然語言處理兩方面功能的應用。它打開了新世界的大門,提供了一個新的思路,使得深度學習模型更加聰明並能夠勝任跨學科領域的任務。

Spatial Transformer Networks (2015)

        最後,讓我們介紹一個最近的文章。這篇文章是由Google Deepmind研究組在一年前撰寫的。它提出了一種空間變形模塊Spatial Transformer module。模塊將輸入圖像進行某種變形從而使得後續層處理時更加省時省力。比起修改CNN的主要結構,作者更關注於對輸入圖像進行改造。它進行的改造主要有兩條:姿態正規化pose normalization(主要指圖像場景中的物體是否傾斜、是否拉伸)以及空間聚焦spatial attention(主要指在一個擁擠的圖像中如何聚焦某個物體)。在傳統CNN中,如果想要保證模型對尺度和旋轉具有不變性,那麼需要對應的大量訓練樣本。而在這個變形模塊中,則不需要如此麻煩,下面就讓我們看看它是怎麼做的。

        在傳統CNN中,應對空間不變性的模塊主要是最大池化maxpooling層。其背後的直觀原因在於最大池化層能夠提取特徵信息(在輸入圖像中有着高激活值的那些區域)的相對位置作爲一個重要屬性,而不是絕對位置。而文中所述的空間變形模塊則是通過一種動態的方式對輸入圖像進行變換(扭曲、變形)。這種形式不像傳統的最大池化操作那樣簡單與死板。讓我們看看它的組成:

  • 一個局部網絡結構,通過輸入圖像計算出應該對圖像採用的形變參數並將其輸出。形變參數稱作theta,定義爲一個6維的仿射變換向量。
  • 一個正規化網格經過上述參數的仿射變換之後生成的採樣網格產物。
  • 用作對輸入圖層變換的採樣器sampler

        這樣的一個模塊可以插入於CNN網絡的任何地方,幫助整個網絡結構學習特徵圖層形變,降低訓練成本。


        圖中文字:在一個全連通網絡架構用於扭曲手寫MNIST庫的數字識別的項目中,添加空間變形模塊spatial transformer作爲架構的第一層的運行結果:(a)輸入數據是MNIST手寫庫中的圖像,圖像上施加了隨機變換、縮放、旋轉以及其它干擾噪聲clutter。(b)空間變形模塊預測的圖像形變。(c)通過空間變形模塊處理後的結果。(d)隨後通過全連通網絡分類預測後的結果。附帶空間變形模塊的網絡架構在訓練時僅使用了最後的正確標籤,也就是數字標籤,而並沒有使用正確變形參數作爲標籤進行訓練。

文章重要性

        這篇文章吸引眼球的地方在於它提出這樣的一種可能性:對CNN的改進並不一定要對網絡架構的大規模修改,也不需要創造出另外一個ResNet或Inception module這樣的複雜模型。這篇文章通過實現了一個對輸入圖像進行仿射變換的簡單功能從而讓模型擁有了很強的形變、伸縮、旋轉不變性。如果對本文所述的模型還有興趣的同學,可以看一下這個Deepmind團隊的視頻video,對CNN加空間形變模塊的結果有很好的展示,同時也可以參考這個Quora討論貼discussion

 

        這就是我們的卷積網絡入門的三部曲。希望大家能從中獲益。如果你覺得文中遺漏了什麼重要的信息,請在評論區告知我。如果你想知道更多這方面的信息,我再次強烈推薦Stanford的CS 231n視頻課程,你只需在YouTube上搜一下就能找到。



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