數據科學家必須知道的 10 個深度學習架構
雷鋒網按:本文由圖普科技編譯自《10 Advanced Deep Learning Architectures Data Scientists Should Know!》,雷鋒網獨家首發。
近年來,深度學習的發展勢頭迅猛,要跟上深度學習的進步速度變得越來越困難了。幾乎每一天都有關於深度學習的創新,而大部分的深度學習創新都隱藏在那些發表於ArXiv和Spinger等研究論文中。
本文介紹了部分近期深度學習的進展和創新,以及Keras庫中的執行代碼,本文還提供了原論文的鏈接。
簡潔起見,本文中只介紹了計算機視覺領域內比較成功的深度學習架構。
另外,文章基於已經掌握了神經網路的知識,並且對Keras已經相當熟悉了的基礎。如果你對這些話題還不太了解,強烈建議先閱讀以下文章:
《Fundamentals of Deep Learning – Starting with Artificial Neural Network》
《Tutorial: Optimizing Neural Networks using Keras (with Image recognition case study)》
目錄什麼是深度學習「高級架構」?
不同類型的計算機視覺任務
各種深度學習架構
何為深度學習「高級架構」?
與一個簡單的機器學習演算法相比,深度學習演算法包含了更加多樣的模型。其中的原因是在建立一個完整的模型時,神經網路具有很大的靈活性。
有時,我們還可以把神經網路比作樂高積木,可以用它搭建任何簡單或者複雜的小建築。
我們其實可以將「高級架構」簡單地定義為一個有著成功模型記錄的深度學習架構,這樣的「高級架構」主要出現在類似ImageNet的挑戰中,在這些挑戰中,你的任務是解決問題,比如用給定的數據完成圖像識別。簡單來說,ImageNet就是一項關於數據集的挑戰,而其中的數據集是從ILSVR(ImageNet大規模視覺識別)中獲得的。
就像下文即將提到的架構,其中的每個架構之間都有細微的差別,而正是這些差別使它們區別於普通的模型,讓它們在解決問題的時候發揮出普通模型不具備的優勢。這些架構同樣屬於「深度模型」的範疇,因此它們的性能也很可能優於其相對應的「淺層模型」。
不同類型的「計算機視覺任務」本文主要關注於「計算機視覺」,所以很自然地會涉及到「計算機視覺」的任務。顧名思義,「計算機視覺任務」就是建立一個能夠複製完成人類視覺任務的計算機模型。這實質上意味著,我們視力所見和感知的內容是一個能夠在人造系統中被理解和完成的程序。
計算機視覺任務的主要類型有:物體識別/分類:在物體識別中,你會得到一張原始圖像,而你的任務就是判斷出這張圖像屬於哪一類別。
分類及定位:如果圖像中只有一個對象,那麼你的任務就是找到該對象的位置。這個問題應該更加具體地表述為「定位問題」。
物體檢測:在物體檢測中,你的任務是識別出物體處於圖像中的什麼位置。這些對象可能屬於同一類別,也可能屬於不同類別。
圖像分割:圖像分割是一項稍微複雜的任務,其目的是將圖像的各個像素映射到其對應的各個類別。
目前,我們已經了解了深度學習「高級架構」,並探究了各種類型的計算機視覺任務。那麼接下來,我們將列舉出最重要的深度學習架構,並且對這些架構進行簡單的介紹:
1. AlexNetAlexNet是第一個深度學習架構,它是由深度學習先鋒之一——Geoffrey Hinton和他的同事們共同研究並引入的。AlexNet是一個看似簡單但功能非常強大的網路架構,它為現在深度學習的突破性研究鋪平了道路。下圖是AlexNet架構:
從分解圖中我們可以看出,AlexNet其實就是一個簡單的架構,其中的卷積層和聚積層相互疊加,最頂部的是全連接層。早在二十世紀八十年代,AlexNet模型就已經被概念化描述了。AlexNet區別於其他模型的關鍵在於它的任務規模,以及它用於訓練的GPU規模。在八十年代,用於訓練神經網路的是CPU。而AlexNet率先使用GPU,將訓練的速度提高了十倍左右。
雖然AlexNet現在有些過時了,但它仍然是運用神經網路完成各種任務的起點。不管是完成計算機視覺任務,還是語音識別任務,都仍然需要AlexNet。
Original Paper link
Link for code implementation
2. VGG Net
「VGG Net」是由牛津大學「視覺圖像研究組」的研究人員引入的。VGG網路的最大特點是它的金字塔狀,靠近圖像的底部比較寬闊,而頂部的層相對窄且深。
如圖所示,VGG Net包含了連續的卷積層,卷積層後緊接著聚積層。聚積層負責讓各個層變得更窄。在這篇由組內研究人員共同完成的論文中,他們提出了各種類型的網路,這些網路架構的主要差異是深度不同。
VGG網路的優勢在於:
1.這是對一個特定任務進行基準測試非常有效的網路架構。
2.同時,網上有大量免費的VGG預訓練網路,因此,VGG通常會被用於各種各樣的應用程序。
而另一方面,VGG主要的缺陷在於如果從頭開始訓練的話,其訓練速度會非常慢。即使是用一個相當不錯的GPU,它還是需要超過一周的時間才能正常運行。
Original Paper link
Link for code implementation
3. GoogleNet
GoogleNet(又稱「InceptionNet」)是由谷歌的研究人員們設計的一個網路架構。GoogleNet在2014年的 ImageNet大賽中獲得了冠軍,證明了它是一個功能強大的模型。
在這個網路架構中,研究人員們不僅加深了網路深度(GoogleNet包含22個層,而VGG網路只有19個層),還研究出了一個叫做「Inception模塊」的新方法。
如上圖所示,這個架構與我們之前看到的有序性架構相比,發生了巨大的改變。在單個層中出現了各種各樣的「特徵提取器」。這間接地提高了網路的性能,因為當處理任務時,網路在自我訓練過程中的選擇非常廣泛。它既可以選擇卷積輸入,也可以選擇直接將輸入聚積起來。
最終的架構包含了許多一個個相互疊加的Inception模塊。大部分最上面的層都有它們自己的輸出層,所以GoogleNet的訓練與其他模型有細微的差別。但這些差別能夠幫助模型更快地完成卷積,因為這些層不僅有共同的訓練,還有各自獨立的訓練。
GoogleNet的優勢有:
1.GoogleNet的訓練速度比VGGNet要快。
2.與預訓練的VGG網路相比,預訓練的GoogleNet所佔規模更小。一個VGG模型所佔空間可以超過500MB,而GoogleNet只佔96MB。
目前為止,GoogleNet還沒有直接的缺陷,但是文章中提出了一些有助於GoogleNet進一步完善的改變方案。其中有一個改變方案被稱作「XceptionNet」,在這個網路中,「初始模塊」的散度限制被提高了。理論上來說,其散度現在可以是無限的了。
Original Paper link
Link for code implementation
4. ResNet
ResNet是一個真正地定義了深度學習架構深度的網路架構。「殘差網路」,也就是我們所說的ResNet,包含了許多連續的「殘差模塊」,這些「殘差模塊」構成了ResNet架構的基礎。「殘差模塊」如下圖所示:
簡單來說,一個「殘差模塊」有兩個選擇——它可以選擇在輸入上執行一組函數,也可以選擇跳過這些步驟。
與GoogleNet類似,這些「殘差模塊」相互疊加,從而形成一個完整的網路的。
由ResNet引入的一些新技術有:
1.使用標準的SGD,而不是花哨的「自適應學習」技術。這是通過一個能夠保持正常訓練的初始化函數來完成的。
2.改變輸入預處理的方式,先將輸入分批,然後再輸入至網路。
ResNet的主要優勢在於,成千上萬的殘差層都能用於建立一個網路,而且都能被用於訓練。這與平常的「時序網路」稍有不同,「時序網路」的性能會因為層數的增加而降低。
Original Paper link
Link for code implementation
5. ResNeXt
據稱,ResNeXt是目前為止最先進的物體識別技術。ResNeXt建立於inception和ResNet的基礎之上,是一個全新的、改良的網路架構。下圖總結了ResNeXt的一個殘差模塊:
Original Paper link
Link for code implementation
6.RCNN(Region Based CNN)
RCNN據說是用於解決物體識別問題的深度學習架構中最具影響力的網路架構。為了解決識別檢測問題,RCNN試圖框出圖像中的所有物體,然後再識別圖像中的物體具體是什麼。其操作流程如下:
RCNN的結構如下圖:
Original Paper link
Link for code implementation
7. YOLO (You Only Look Once)
YOLO是目前為止最先進的實時圖像識別系統,它是以深度學習為基礎的。正如我們在下圖中所看到的,它首先將圖像分成一個個小方格;然後將識別演算法一一運行於這些格子,判斷每個格子分別屬於什麼物體類別,之後把同一類別的方格合併起來,形成一個個最準確的物體框。
這些操作都是各自獨立完成的,因此能夠實現實時運行。一秒內最多能夠處理40張圖像。
雖然與其對應的RCNN相比,YOLO的性能降低了,但是它的實時處理功能在處理日常問題中仍有巨大的優勢。以下是YOLO網路架構:
Original Paper link
Link for code implementation
8. SqueezeNet
SqueezeNet架構是一個功能更加強大的網路架構,它在類似移動平台這樣的低寬頻場景中非常有用。這個網路架構僅佔4.9MB的空間,而Inception則佔超過100MB空間。這樣顯著的變化來源於一個叫做「fire模塊」的結構。「fire模塊」如下圖所示:
下圖為squeezeNet的最終架構:
Original Paper link
Original Paper link
Link for code implementation
9. SegNet
SegNet是一個用於解決圖像分割的深度學習架構。它包含了一系列處理層(編碼器)以及一組用於像素分類的對應的解碼器。下圖總結了SegNet的操作過程:
SegNet的一個關鍵特徵是:在分割圖像中保留了高頻率的細節,因為編碼網路的聚積索引與解碼網路的聚積索引是相互連接的。簡言之,信息的傳遞是直接的,而不是通過間接的卷積實現的。SegNet是處理圖像分割問題時的最佳模型。
Original Paper link
Link for code implementation
10. GAN (Generative Adversarial Network)
GAN是一個完全不同的神經網路架構,其中的神經網路被用於生成一個全新的不存在的圖像,這個圖像看似在訓練數據集中出現過,但實際上並沒有。下圖是GAN的分解示意圖。
Original Paper link
Link for code implementation


※CSS2017:13家上市安全企業聯手發布倡議書 賦能基礎設施安全建設
※又有哪些劇集被黑客泄露?HBO:我們不玩了!
※特斯拉員工被爆向預訂者施壓:棄買廉價Model 3 支持Model S
※智能家居被吐槽「智障」?看一把鎖三千年的滄桑變化
※戶外三防最高配置 戰狼2手機AGM X2發布
TAG:雷鋒網 |
※數據科學家必用的25個深度學習的開放數據集!
※數據科學家必備的10種機器學習演算法
※2000多位科學家的「科學秀」
※從圖像處理到語音識別,25款數據科學家必知的深度學習開放數據集
※數據科學與數據科學家
※研究報道:科學家有望復活已經滅絕700年的鳥類
※工業4.0時代下的數據科學家
※科學家揭示:一個精神病患者所擁有的11個習慣
※科學家有望復活已經滅絕700年的鳥類
※中科院已支持近600名拔尖科學家挑戰最前沿科學問題
※資源 | 從圖像處理到語音識別,25款數據科學家必知的深度學習開放數據集
※智能家:美國50個最棒的工作 數據科學家位居首位
※科學家通過分析類星體發現,宇宙實際年齡超過200億歲
※數據科學進階之路:了解數據科學工作,管理數據科學家團隊
※阿里雲數據科學家:學好以下七大技術,年薪50W+不是夢想
※科學家:有一種方法可以存活100萬億年
※科學家預測:2018年中國人工智慧會有哪些新趨勢
※科學家認為人類大腦只開發10%?
※如今的數據科學家,距離深度學習有多遠?
※科學家表示人類真的可以活1000歲了!