摘要:誕生于年,是最早的卷積神經網絡之一,并且推動了深度學習領域的發展。間隔從年到年神經網絡處于孵化階段。與來自谷歌的開始追求減少深度神經網絡的計算開銷,并設計出第一個架構參見。
LeNet5
LeNet5 誕生于 1994 年,是最早的卷積神經網絡之一,并且推動了深度學習領域的發展。自從 1988 年開始,在許多次成功的迭代后,這項由 Yann LeCun 完成的開拓性成果被命名為 LeNet5(參見:Gradient-Based Learning Applied to Document Recognition)。
LeNet5 的架構基于這樣的觀點:(尤其是)圖像的特征分布在整張圖像上,以及帶有可學習參數的卷積是一種用少量參數在多個位置上提取相似特征的有效方式。在那時候,沒有 GPU 幫助訓練,甚至 CPU 的速度也很慢。因此,能夠保存參數以及計算過程是一個關鍵進展。這和將每個像素用作一個大型多層神經網絡的多帶帶輸入相反。LeNet5 闡述了那些像素不應該被使用在第一層,因為圖像具有很強的空間相關性,而使用圖像中獨立的像素作為不同的輸入特征則利用不到這些相關性。
LeNet5 特征能夠總結為如下幾點:
卷積神經網絡使用 3 個層作為一個序列:卷積、池化、非線性 → 這可能是自從這篇 paper 起圖像深度學習的關鍵特征!
使用卷積提取空間特征
使用映射到空間均值下采樣(subsample)
雙曲正切(tanh)或 S 型(sigmoid)形式的非線性
多層神經網絡(MLP)作為最后的分類器
層與層之間的稀疏連接矩陣避免大的計算成本
總體來看,這個網絡是最近大量架構的起點,并且也給這個領域的許多帶來了靈感。
間隔
從 1998 年到 2010 年神經網絡處于孵化階段。大多數人沒有意識到它們不斷增長的力量,與此同時其他研究者則進展緩慢。由于手機相機以及便宜的數字相機的出現,越來越多的數據可被利用。并且計算能力也在成長,CPU 變得更快,GPU 變成了多種用途的計算工具。這些趨勢使得神經網絡有所進展,雖然速度很慢。數據和計算能力使得神經網絡能完成的任務越來越有趣。之后一切變得清晰起來......
Dan Ciresan Net
2010 年的時候,Dan Claudiu Ciresan 和 Jurgen Schmidhuber 發布了最早的 GPU 神經網絡的一個實現。這個實現是在一塊 NVIDIA GTX 280 圖形處理器上運行 9 層的神經網絡,包含前向與反向傳播。
AlexNet
2012 年,Alex Krizhevsky 發表了 Alexet(參見:ImageNet Classification with Deep Convolutional Neural Networks),它是 LeNet 的一種更深更寬的版本,并以顯著優勢贏得了困難的 ImageNet 競賽。
AlexNet 將 LeNet 的思想擴展到了更大的能學習到遠遠更復雜的對象與對象層次的神經網絡上。這項工作的貢獻有:
使用修正的線性單元(ReLU)作為非線性
在訓練的時候使用 Dropout 技術有選擇地忽視單個神經元,以避免模型過擬合
覆蓋進行較大池化,避免平均池化的平均化效果
使用 GPU NVIDIA GTX 580 減少訓練時間
在那時,GPU 相比 CPU 可以提供更多數量的核,訓練時間可以提升 10 倍,這又反過來允許使用更大的數據集和更大的圖像。
AlexNet 的成功掀起了一場小革命。卷積神經網絡現在是深度學習的骨干,它已經變成了「現在能解決有用任務的大型神經網絡」的代名詞。
Overfeat
2013 年的 12 月,紐約大學的 Yann LeCun 實驗室提出了 AlexNet 的衍生——Overfeat(參見:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks)。這篇文章也提出了學習邊界框(learning bounding box),并導致之后出現了很多研究這同一主題的論文。我相信學習分割對象比學習人工邊界框更好。
VGG
來自牛津大學的 VGG 網絡(參見:Very Deep Convolutional Networks for Large-Scale Image Recognition)是第一個在各個卷積層使用更小的 3×3 過濾器(filter),并把它們組合作為一個卷積序列進行處理的網絡。
這看來和 LeNet 的原理相反,其中是大的卷積被用來獲取一張圖像中相似特征。和 AlexNet 的 9×9 或 11×11 過濾器不同,過濾器開始變得更小,離 LeNet 竭力所要避免的臭名昭著的 1×1 卷積異常接近——至少在該網絡的第一層是這樣。但是 VGG 巨大的進展是通過依次采用多個 3×3 卷積,能夠模仿出更大的感受野(receptive field)的效果,例如 5×5 與 7×7。這些思想也被用在了最近更多的網絡架構中,如 Inception 與 ResNet。
VGG 網絡使用多個 3×3 卷積層去表征復雜特征。注意 VGG-E 的第 3、4、5 塊(block):256×256 和 512×512 個 3×3 過濾器被依次使用多次以提取更多復雜特征以及這些特征的組合。其效果就等于是一個帶有 3 個卷積層的大型的 512×512 大分類器。這顯然意味著有大量的參數與學習能力。但是這些網絡訓練很困難,必須劃分到較小的網絡,并逐層累加。這是因為缺少強大的方式對模型進行正則化,或者或多或少約束大量由于大量參數增長的搜索空間。
VGG 在許多層中都使用大特征尺寸,因為推斷(inference)在運行時是相當耗費時間的。正如 Inception 的瓶頸(bottleneck)那樣,減少特征的數量將節省一些計算成本。
網絡中的網絡(Network-in-network)
網絡中的網絡(NiN,參見論文:Network In Network)的思路簡單又偉大:使用 1×1 卷積為卷積層的特征提供更組合性的能力。
NiN 架構在各個卷積之后使用空間 MLP 層,以便更好地在其他層之前組合特征。同樣,你可以認為 1×1 卷積與 LeNet 最初的原理相悖,但事實上它們可以以一種更好的方式組合卷積特征,而這是不可能通過簡單堆疊更多的卷積特征做到的。這和使用原始像素作為下一層輸入是有區別的。其中 1×1 卷積常常被用于在卷積之后的特征映射上對特征進行空間組合,所以它們實際上可以使用非常少的參數,并在這些特征的所有像素上共享!
MLP 的能力能通過將卷積特征組合進更復雜的組(group)來極大地增加單個卷積特征的有效性。這個想法之后被用到一些最近的架構中,例如 ResNet、Inception 及其衍生技術。
NiN 也使用了平均池化層作為最后分類器的一部分,這是另一種將會變得常見的實踐。這是通過在分類之前對網絡對多個輸入圖像的響應進行平均完成的。
GoogLeNet 與 Inception
來自谷歌的 Christian Szegedy 開始追求減少深度神經網絡的計算開銷,并設計出 GoogLeNet——第一個 Inception 架構(參見:Going Deeper with Convolutions)。
那是在 2014 年秋季,深度學習模型正在變得在圖像與視頻幀的分類中非常有用。大多數懷疑者已經不再懷疑深度學習與神經網絡這一次是真的回來了,而且將一直發展下去。鑒于這些技術的用處,谷歌這樣的互聯網巨頭非常有興趣在他們的服務器上高效且大規模龐大地部署這些架構。
Christian 考慮了很多關于在深度神經網絡達到較高水平的性能(例如在 ImageNet 上)的同時減少其計算開銷的方式。或者在能夠保證同樣的計算開銷的前提下對性能有所改進。
他和他的團隊提出了 Inception 模塊:
初看之下這不過基本上是 1×1、3×3、5×5 卷積過濾器的并行組合。但是 Inception 的偉大思路是用 1×1 的卷積塊(NiN)在昂貴的并行模塊之前減少特征的數量。這一般被稱為「瓶頸(bottleneck)」。這部分內容將在下面的「瓶頸層(bottleneck layer)」部分來解釋。
GoogLeNet 使用沒有 inception 模塊的主干作為初始層,之后是與 NiN 相似的一個平均池化層加 softmax 分類器。這個分類器比 AlexNet 與 VGG 的分類器的運算數量少得多。這也促成一項非常有效的網絡設計,參見論文:An Analysis of Deep Neural Network Models for Practical Applications。
瓶頸層(Bottleneck layer)
受到 NiN 的啟發,Inception 的瓶頸層減少了每一層的特征的數量,并由此減少了運算的數量;所以可以保持較低的推理時間。在將數據通入昂貴的卷積模塊之前,特征的數量會減少 4 倍。在計算成本上這是很大的節約,也是該架構的成功之處。
讓我們具體驗證一下。現在你有 256 個特征輸入,256 個特征輸出,假定 Inception 層只能執行 3×3 的卷積,也就是總共要完成 256×256×3×3 的卷積(將近 589,000 次乘積累加(MAC)運算)。這可能超出了我們的計算預算,比如說,在谷歌服務器上要以 0.5 毫秒運行該層。作為替代,我們決定減少需要進行卷積運算的特征的數量,也就是 64(即 256/4)個。在這種情況下,我們首先進行 256 -> 64 1×1 的卷積,然后在所有 Inception 的分支上進行 64 次卷積,接而再使用一個來自 64 -> 256 的特征的 1×1 卷積,現在運算如下:
256×64 × 1×1 = 16,000s
64×64 × 3×3 = 36,000s
64×256 × 1×1 = 16,000s
相比于之前的 60 萬,現在共有 7 萬的計算量,幾乎少了近 10 倍。
而且,盡管我們做了更好的運算,我們在此層也沒有損失其通用性(generality)。事實證明瓶頸層在 ImageNet 這樣的數據集上已經表現出了頂尖水平,而且它也被用于接下來介紹的 ResNet 這樣的架構中。
它之所以成功是因為輸入特征是相關聯的,因此可通過將它們與 1×1 卷積適當結合來減少冗余。然后,在小數量的特征進行卷積之后,它們能在下一層被再次擴展成有意義的結合。
Inception V3(還有 V2)
Christian 和他的團隊都是非常高產的研究人員。2015 年 2 月,Batch-normalized Inception 被引入作為 Inception V2(參見論文:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift)。Batch-normalization 在一層的輸出上計算所有特征映射的均值和標準差,并且使用這些值規范化它們的響應。這相當于數據「增白(whitening)」,因此使得所有神經圖(neural maps)在同樣范圍有響應,而且是零均值。在下一層不需要從輸入數據中學習 offset 時,這有助于訓練,還能重點關注如何較好的結合這些特征。
2015 年 12 月,該團隊發布 Inception 模塊和類似架構的一個新版本(參見論文:Rethinking the Inception Architecture for Computer Vision)。該論文更好地解釋了原始的 GoogLeNet 架構,在設計選擇上給出了更多的細節。原始思路如下:
通過謹慎建筑網絡,平衡深度與寬度,從而較大化進入網絡的信息流。在每次池化之前,增加特征映射。
當深度增加時,網絡層的深度或者特征的數量也系統性的增加。
使用每一層深度增加在下一層之前增加特征的結合。
只使用 3×3 的卷積,可能的情況下給定的 5×5 和 7×7 過濾器能分成多個 3×3。看下圖
因此新的 Inception 成為了:
也可以通過將卷積平整進更多復雜的模塊中而分拆過濾器:
在進行 inception 計算的同時,Inception 模塊也能通過提供池化降低數據的大小。這基本類似于在運行一個卷積的時候并行一個簡單的池化層:
Inception 也使用一個池化層和 softmax 作為最后的分類器。
ResNet
2015 年 12 月又出現了新的變革,這和 Inception V3 出現的時間一樣。ResNet 有著簡單的思路:供給兩個連續卷積層的輸出,并分流(bypassing)輸入進入下一層(參見論文:Deep Residual Learning for Image Recognition)。
這和之前的一些舊思路類似。但 ResNet 中,它們分流兩個層并被應用于更大的規模。在 2 層后分流是一個關鍵直覺,因為分流一個層并未給出更多的改進。通過 2 層可能認為是一個小型分類器,或者一個 Network-In-Network。
這是第一次網絡層數超過一百,甚至還能訓練出 1000 層的網絡。
有大量網絡層的 ResNet 開始使用類似于 Inception 瓶頸層的網絡層:
這種層通過首先是由帶有更小輸出(通常是輸入的 1/4)的 1×1 卷積較少特征的數量,然后使用一個 3×3 的層,再使用 1×1 的層處理更大量的特征。類似于 Inception 模塊,這樣做能保證計算量低,同時提供豐富的特征結合。
ResNet 在輸入上使用相對簡單的初始層:一個帶有兩個池的 7×7 卷基層。可以把這個與更復雜、更少直覺性的 Inception V3、V4 做下對比。
ResNet 也使用一個池化層加上 softmax 作為最后的分類器。
關于 ResNet 的其他洞見每天都有發生:
ResNet 可被認為既是平行模塊又是連續模塊,把輸入輸出(inout)視為在許多模塊中并行,同時每個模塊的輸出又是連續連接的。
ResNet 也可被視為并行模塊或連續模塊的多種組合(參見論文:Residual Networks are Exponential Ensembles of Relatively Shallow Networks)。
已經發現 ResNet 通常在 20-30 層的網絡塊上以并行的方式運行。而不是連續流過整個網絡長度。
當 ResNet 像 RNN 一樣把輸出反饋給輸入時,該網絡可被視為更好的生物上可信的皮質模型(參見論文:Bridging the Gaps Between Residual Learning, Recurrent Neural Networks and Visual Cortex)。
Inception V4
這是 Christian 與其團隊的另一個 Inception 版本,該模塊類似于 Inception V3:
Inception V4 也結合了 Inception 模塊和 ResNet 模塊:
我認為該架構不太簡潔,但也滿滿都是較少透明度的啟發法(heuristics)。很難理解里面的選擇,對作者們而言也難以解釋。
考慮到網絡的簡潔性,可被輕易的理解并修正,那 ResNet 可能就更好了。
SqueezeNet?
SqueezeNet(參見論文:SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size)是最近才公布的,該架構是對 ResNet 與 Inception 里面概念的重新處理。一個更好的架構設計網絡型號要小,而且參數還不需要復雜的壓縮算法。
ENet
我們的團隊計劃結合近期公開的架構的所有特征,做出一個非常高效、低重的網絡,使用較少的參數和計算就能達到頂尖結果。該網絡架構被稱為 ENet,由 Adam Paszke 設計。我們已經使用它進行過單像素標記和場景解析。
詳細了解 ENet 可參見論文 ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation。ENet 是一個編碼加解碼的網絡。編碼器是一個常規的 CNN 設計進行分類。解碼器是一個增采樣(upsampling)網絡,將分類反向傳播給原始圖像進行分割。這只使用了神經網絡,沒有其他算法進行圖像分割。
ENet 被設計為在開始時盡可能使用最小數量的資源。正是如此它有著如此小的腳本,編碼器和解碼器網絡共占有 0.7 MB,16 fp 精度。即使這么小的型號,ENet 在分割的準確度上也類似于或者高于其他神經網絡解決方案。
模塊分析
對 CNN 模塊的分析,該論文(Systematic evaluation of CNN advances on the ImageNet)已經做過了,里面的發現是非常有幫助的:
使用沒有 batchnorm 的 ELU 非線性或者有 batchnorm 的 ReLU。
使用一個學習到的 RGB 的彩色空間轉換。
使用線性學習率衰退策略。
使用平均和較大池化層的和。
使用大約 128 到 256 的 mini-batch 大小。如果這對你的 GPU 而言太大,將學習率按比例降到這個大小就行。
使用完全連接層作為卷積,并為做最后預測平均所有預測。
當研究增加訓練集大小的時候,檢測有一個 plateau 是否沒有達到
數據的整潔要比數據大小更重要。
如果你不能增加輸入圖像的大小,在隨后的層上減少步幅(stride),這樣做有同樣的效果。
如果你的網絡有復雜和高度優化的架構,像是 GoogLeNet,那修改一定要謹慎。
其他值得關注的架構
FractalNet(參見論文:FractalNet: Ultra-Deep Neural Networks without Residuals)使用遞歸架構,它在 ImageNet 上沒有進行測試。該架構是 ResNet 的衍生或者更通用的 ResNet。
未來
我們相信制作神經網絡架構是深度學習領域發展的頭等大事。我們團隊高度推薦仔細閱讀并理解文中提到的論文。
但有人可能會想為什么我們要投入如此多的時間制作架構?為什么不是用數據告訴我們使用什么?如何結合模塊?這些問題很好,但仍在研究中,有一篇論文可以參考:Neural networks with differentiable structure。
要注意到,我們在本文中談到的大部分架構都是關于計算機視覺的。類似神經網絡架構在其他領域內也有開發,學習其他所有任務中的架構變革也是非常有趣的。
如果你對神經網絡架構和計算性能的比較有興趣,可參見論文:An Analysis of Deep Neural Network Models for Practical Applications。
歡迎加入本站公開興趣群商業智能與數據分析群
興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識
QQ群:81035754
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/4404.html
摘要:我想重溫過去幾年深度學習背景下的神經網絡設計史。卷積神經網絡成為深度學習的主力,深度學習是可以完成有用任務的大型神經網絡的新名字。和的開始探索減少深度神經網絡的計算負擔,提出了第一個架構。 深度神經網絡和深度學習是強大、流行的算法。它們的成功常常源于神經網絡架構的精心設計。我想重溫過去幾年深度學習背景下的神經網絡設計史。我們(譯者注:Alfredo Canziani、Adam Paszke、...
摘要:年月日,遷移服務解決方案在城市峰會中正式發布。遷移服務向分布式架構升級的直接路徑基于上述問題和挑戰,同時經過螞蟻十年數據庫架構升級的先進經驗,螞蟻金服為客戶打造了這款一站式數據遷移解決方案遷移服務,簡稱。 2019年1月4日,OceanBase遷移服務解決方案在ATEC城市峰會中正式發布。螞蟻金服資深技術專家師文匯和技術專家韓谷悅共同分享了OceanBase遷移服務的重要特性和業務實踐...
摘要:年月日,遷移服務解決方案在城市峰會中正式發布。遷移服務向分布式架構升級的直接路徑基于上述問題和挑戰,同時經過螞蟻十年數據庫架構升級的先進經驗,螞蟻金服為客戶打造了這款一站式數據遷移解決方案遷移服務,簡稱。 2019年1月4日,OceanBase遷移服務解決方案在ATEC城市峰會中正式發布。螞蟻金服資深技術專家師文匯和技術專家韓谷悅共同分享了OceanBase遷移服務的重要特性和業務實踐...
閱讀 1543·2023-04-26 02:50
閱讀 3549·2023-04-26 00:28
閱讀 1938·2023-04-25 15:18
閱讀 3219·2021-11-24 10:31
閱讀 991·2019-08-30 13:00
閱讀 1006·2019-08-29 15:19
閱讀 1775·2019-08-29 13:09
閱讀 2983·2019-08-29 13:06