導航:首頁 > 網路問題 > 殘差網路如何評價

殘差網路如何評價

發布時間:2023-02-17 15:33:19

㈠ 殘差網路ResNet筆記

作者根據輸入將層表示為學習 殘差函數 。實驗表明,殘差網路更容易優化,並且能夠通過增加相當的深度來提高准確率。
核心是解決了增加深度帶來的副作用(退化問題),這樣能夠通過單純地增加網路深度,來提高網路性能。

網路的深度為什麼重要?

因為CNN能夠提取low/mid/high-level的特徵,網路的層數越多,意味著能夠提取到不同level的特徵越豐富。並且,越深的網路提取的特徵越抽象,越具有語義信息。

為什麼不能簡單地增加網路層數?

怎麼解決退化問題?

深度殘差網路。如果深層網路的後面那些層是恆等映射,那麼模型就退化為一個淺層網路。那現在要解決的就是學習恆等映射函數了。 但是直接讓一些層去擬合一個潛在的恆等映射函數H(x) = x,比較困難,這可能就是深層網路難以訓練的原因。但是,如果把網路設計為H(x) = F(x) + x,如下圖。我們可以轉換為學習一個殘差函數F(x) = H(x) - x. 只要F(x)=0,就構成了一個恆等映射H(x) = x. 而且,擬合殘差肯定更加容易。

其他的參考解釋

這種殘差學習結構可以通過前向神經網路+shortcut連接實現,如結構圖所示。而且shortcut連接相當於簡單執行了同等映射,不會產生額外的參數,也不會增加計算復雜度。 而且,整個網路可以依舊通過端到端的反向傳播訓練。

ImageNet上的實驗證明了作者提出的加深的殘差網路能夠比簡單疊加層生產的深度網路更容易優化,而且,因為深度的增加,結果得到了明顯提升。另外在CIFAR-10數據集上相似的結果以及一系列大賽的第一名結果表明ResNet是一個通用的方法。

F(x)與x相加就是就是逐元素相加,但是如果兩者維度不同,需要給x執行一個線性映射來匹配維度:

用來學習殘差的網路層數應當大於1,否則退化為線性。文章實驗了layers = 2或3,更多的層也是可行的。
用卷積層進行殘差學習: 以上的公式表示為了簡化,都是基於全連接層的,實際上當然可以用於卷積層。加法隨之變為對應channel間的兩個feature map逐元素相加。

key point:

key point:

㈡ 一個殘差網路的簡介【MATLAB】

對於許多應用來說,使用由一個簡單的層序列組成的網路就已足夠。但是,某些應用要求網路具有更復雜的層次圖結構,其中的層可接收來自多個層的輸入,也可以輸出到多個層。這些類型的網路通常稱為有向無環圖 (DAG) 網路。殘差網路就是一種 DAG 網路,其中的殘差(或快捷)連接會繞過主網路層。殘差連接讓參數梯度可以更輕松地從輸出層傳播到較淺的網路層,從而能夠訓練更深的網路。增加網路深度可在執行更困難的任務時獲得更高的准確度。

主分支 - 順序連接的卷積層、批量歸一化層和 ReLU 層。

殘差連接 - 繞過主分支的卷積單元。殘差連接和卷積單元的輸出按元素相加。當激活區域的大小變化時,殘差連接也必須包含 1×1 卷積層。殘差連接讓參數梯度可以更輕松地從輸出層流到較淺的網路層,從而能夠訓練更深的網路。

首先創建網路的主分支。主分支包含五部分。

初始部分 - 包含圖像輸入層和帶激活函數的初始卷積層。

三個卷積層階段 - 分別具有不同的特徵大小(32×32、16×16 和 8×8)。每個階段包含 N 個卷積單元。在示例的這一部分中,N = 2。每個卷積單元包含兩個帶激活函數的 3×3 卷積層。netWidth 參數是網路寬度,定義為網路第一卷積層階段中的過濾器數目。第二階段和第三階段中的前幾個卷積單元會將空間維度下采樣二分之一。為了使整個網路中每個卷積層所需的計算量大致相同,每次執行空間下采樣時,都將過濾器的數量增加一倍。

最後部分 - 包含全局平均池化層、全連接層、softmax 層和分類層。

使用 convolutionalUnit(numF,stride,tag) 創建一個卷積單元。numF 是每一層中卷積過濾器的數量,stride 是該單元第一個卷積層的步幅,tag 是添加在層名稱前面的字元數組。convolutionalUnit 函數在示例末尾定義。

為所有層指定唯一名稱。卷積單元中的層的名稱以 'SjUk' 開頭,其中 j 是階段索引,k 是該階段內卷積單元的索引。例如,'S2U1' 表示第 2 階段第 1 單元。

㈢ 殘差網路

殘差網路(Resial Network簡稱ResNet)是在2015年繼Alexnet Googlenet VGG三個經典的CNN網路之後提出的,並在ImageNet比賽classification任務上拔得頭籌,ResNet因其簡單又實用的優點,現已在檢測,分割,識別等領域被廣泛的應用。
ResNet可以說是過去幾年中計算機視覺和深度學習領域最具開創性的工作,有效的解決了隨著網路的加深,出現了訓練集准確率下降的問題,如下圖所示:

做過深度學習的同學應該都知道,隨著網路層數的增加而導致訓練效果變差的一個原因是梯度彌散和梯度爆炸問題(vanishing/exploding gradients),這個問題抑制了淺層網路參數的收斂。但是這個問題已經通過一些參數初始化的技術較好的解決了,有興趣的同學可以看參考文獻中的以下幾篇文章:[2][3][4][5][6]。
但是即便如此,在網路深度較高的時候(例如圖中的56層網路)任然會出現效果變差的問題,我們在先前的Alexnet Googlenet VGG三個模型中可以看出,網路的深度在圖片的識別中有著至關重要的作用,深度越深能自動學習到的不同層次的特徵可能就越多,那到底是什麼原因導致了效果變差呢?

Fig. 3
左側19層的VGG模型的計算量是 19.6 billion FLOPs 中間是34層的普通卷積網路計算量是3.6 billion FLOPs。
右邊是34層的ResNet計算量是3.6billion FLOPs,圖中實線的箭頭是沒有維度變化的直接映射,虛線是有維度變化的映射。通過對比可以看出VGG雖然層數不多但是計算量還是很大的,後面我們可以通過實驗數據看到34層的ResNet的表現會比19層的更好。

從圖中可以看出在效果上,34層的殘差網路比VGG和GoogleNet都要好,A,B,C三種方案中C方案效果最好,但是B,C方案在計算量上比A方案要大很多,而效果提升的又很少,所以論文作者建議還是使用A方案較為實用。
下面我們介紹層數在50及以上的殘差網路的結構: Deeper Bottleneck Architectures。這種結構是作者為了降低訓練時間所設計的,結構對比如下圖所示:

ResNet通過殘差學習解決了深度網路的退化問題,讓我們可以訓練出更深的網路,這稱得上是深度網路的一個歷史大突破吧。也許不久會有更好的方式來訓練更深的網路,讓我們一起期待吧!
目前,您可以在 人工智慧建模平台 Mo 找到基於tensorflow 的34層的殘差網路(ResNet)實現樣例,數據集是CIFAR-10 (CIFAR的十分類數據集),這個樣例在測試集上的精度為90%,驗證集上的精度為98%。主程序在ResNet_Operator.py中,網路的Block結構在ResNet_Block.py中,訓練完的模型保存在results文件夾中。
項目源碼地址: http://momodel.cn/explore/5d1b0a031afd944132a0797d?type=app
參考文獻:
[1] _K. He, X. Zhang, S. Ren, and J. Sun. Deep resial learning for image recognition. arXiv preprint arXiv:1512.03385,2015.
[2] Y. LeCun, L. Bottou, G. B. Orr, and K.-R.M¨uller. Efficient backprop.In Neural Networks: Tricks of the Trade, pages 9–50. Springer, 1998.
[3] X. Glorot and Y. Bengio. Understanding the difficulty of training deep feedforward neural networks. In AISTATS, 2010.
[4] A. M. Saxe, J. L. McClelland, and S. Ganguli. Exact solutions to the nonlinear dynamics of learning in deep linear neural networks.arXiv:1312.6120, 2013.
[5] K. He, X. Zhang, S. Ren, and J. Sun. Delving deep into rectifiers:Surpassing human-level performance on imagenet classification. In ICCV, 2015.
[6] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by recing internal covariate shift. In ICML, 2015.

Mo (網址: momodel.cn )是一個支持 Python 的 人工智慧在線建模平台 ,能幫助你快速開發、訓練並部署模型。

Mo 人工智慧俱樂部 是由網站的研發與產品設計團隊發起、致力於降低人工智慧開發與使用門檻的俱樂部。團隊具備大數據處理分析、可視化與數據建模經驗,已承擔多領域智能項目,具備從底層到前端的全線設計開發能力。主要研究方向為大數據管理分析與人工智慧技術,並以此來促進數據驅動的科學研究。

㈣ 殘差網路(ResNet)

殘差操作這一思想起源於論文《Deep Resial Learning for Image Recognition》。如果存在某個K層的網路f是當前最優的網路,那麼可以構造一個更深的網路,其最後幾層僅是該網路f第K層輸出的恆等映射(IdentityMapping),就可以取得與f一致的結果;也許K還不是所謂「最佳層數」,那麼更深的網路就可以取得更好的結果。 總而言之,與淺層網路相比,更深的網路的表現不應該更差。但是如下圖所示,56層的神經網路表現明顯要比20層的差。 證明更深的網路在訓練過程中的難度更大,因此作者提出了殘差網路的思想。+

ResNet 的作者將這些問題歸結成了一個單一的假設:直接映射是難以學習的。而且他們提出了一種修正方法: 不再學習從 x 到 H(x) 的基本映射關系,而是學習這兩者之間的差異,也就是「殘差(resial)」。然後,為了計算 H(x),我們只需要將這個殘差加到輸入上即可。假設殘差為 F(x)=H(x)-x,那麼現在我們的網路不會直接學習 H(x) 了,而是學習 F(x)+x。

這就帶來了你可能已經見過的著名 ResNet(殘差網路)模塊:

ResNet 的每一個「模塊(block)」都由一系列層和一個「捷徑(shortcut)」連接組成,這個「捷徑」將該模塊的輸入和輸出連接到了一起。然後在元素層面上執行「加法(add)」運算,如果輸入和輸出的大小不同,那就可以使用零填充或投射(通過 1×1 卷積)來得到匹配的大小。

回到我們的思想實驗,這能大大簡化我們對恆等層的構建。直覺上就能知道,比起從頭開始學習一個恆等變換,學會使 F(x) 為 0 並使輸出仍為 x 要容易得多。一般來說,ResNet 會給層一個「參考」點 x,以 x 為基礎開始學習。

在此之前,深度神經網路常常會有梯度消失問題的困擾,因為 ResNet 的梯度信號可以直接通過捷徑連接回到更早的層,而且它們的表現依然良好。

ResNet本質上就幹了一件事:降低數據中信息的冗餘度具體說來,就是對非冗餘信息採用了線性激活(通過skip connection獲得無冗餘的identity部分),然後對冗餘信息採用了非線性激活(通過ReLU對identity之外的其餘部分進行信息提取/過濾,提取出的有用信息即是殘差)。
其中,提取identity這一步,就是ResNet思想的核心。 對ResNet本質的一些思考

一方面是殘差網路更好的擬合分類函數以獲得更高的分類精度,另一方面是殘差網路如何解決網路在層數加深時優化訓練上的難題。

首先從萬能近似定理(Universal Approximation Theorem)入手。這個定理表明,一個前饋神經網路(feedforward neural network)如果具有線性輸出層,同時至少存在一層具有任何一種「擠壓」性質的激活函數(例如logistic sigmoid激活函數)的隱藏層,那麼只要給予這個網路足夠數量的隱藏單元,它就可以以任意的精度來近似任何從一個有限維空間到另一個有限維空間的波萊爾可測函數(Borel Measurable Function)。
萬能近似定理意味著我們在構建網路來學習什麼函數的時候,我們知道一定存在一個多層感知機(Multilayer Perceptron Model,MLP)能夠表示這個函數。然而,我們不能保證訓練演算法能夠學得這個函數。因為即使多層感知機能夠表示該函數,學習也可能會失敗,可能的原因有兩種。

第二種過擬合情況不在我們的討論范圍之內,因此我們聚焦在前一種情況,為何殘差網路相比簡單的多層網路能更好的擬合分類函數,即找到期望函數的參數值。
對於普通的不帶短連接的神經網路來說,存在這樣一個命題。

事實上對於高維函數,這一特點依然適用。因此,當函數的輸入維度非常高時,這一做法就變的非常有意義。盡管在高維空間這一特點很難被可視化,但是這個理論給了一個很合理的啟發,就是原則上,帶短連接的網路的擬合高維函數的能力比普通連接的網路更強。這部分我們討論了殘差網路有能力擬合更高維的函數,但是在實際的訓練過程中仍然可能存在各種各樣的問題使得學習到最優的參數非常困難,因此下一小節討論殘差在訓練過程中的優越性。

這個部分我們討論為什麼殘差能夠緩解深層網路的訓練問題,以及探討可能的短連接方式和我們最終選擇的殘差的理由。正如本章第三部分討論的一樣,整個殘差卷積神經網路是由以上的殘差卷積子模塊堆積而成。如上一小節所定義的,假設第 層的殘差卷積字子模塊的映射為

㈤ ResNet網路

ResNet (Resial Neural Network,殘差網路)由微軟研究院何凱明等人提出的,通過在深度神經網路中加入殘差單元(Resial Unit)使得訓練深度比以前更加高效。ResNet在2015年的ILSVRC比賽中奪得冠軍,ResNet的結構可以極快的加速超深神經網路的訓練,模型准確率也有非常大的提升。

在ResNet之前,瑞士教授Schimidhuber提出了Highway Network,其原理與ResNet非常相似。通常認為神經網路的深度對其性能非常重要,但是網路越深訓練越困難,Highway Network的目標就是解決極深的神經網路難以訓練的問題。

Highway Network相當於修改了每一層激活函數,此前激活函數只是對輸入做一次非線性變換y=H(x, Wh), 而Highway Network則允許保留一部分比例的原始輸入x,即y=H(x, Wh)* T(x , Wt)+x*C(x, Wc),其中T為變換系數,C為保留系數,論文中令C=1-T。這樣前面一層的信息,有一定比例可以不經過矩陣乘法和非線性變換,直接傳輸到下一層,彷彿一條信息高速公路,因此得名Highway Network。

結果顯示,B比A略好,這是因為A中的零填充確實沒有殘差學習。而C比B稍好,這是由於投影快捷連接引入了額外參數。但A、B、C之間的細微差異表明投影連接對於解決退化問題不是至關重要的,而不/少使用投影連接可以減少內存/時間復雜性和模型大小。而且無參數恆等快捷連接對於瓶頸架構(3層殘差學習單元)尤為重要,因為瓶頸架構中層具有較小的輸入輸出,快捷連接是連接到兩個高維端,此時恆等快捷連接無需參數,而使用投影的話則會顯示時間和模型復雜度加倍。因此,恆等快捷連接可以為瓶頸設計得到更有效的模型。

最後,作者嘗試了更深的1000層以上的神經網路,發現神經網路仍然能夠較好的學習,但是其測試誤差比100多層的殘差網路要差,而訓練誤差則與100多層的殘差網路相似,作者認為這可能是由於過擬合導致的,可通過加大正則化來解決這一問題。

在ResNet V1中,作者研究通過加入殘差單元使得訓練深度達到上百層的神經網路成為可能,解決了梯度消失/爆炸的問題。而在ResNet V2中作者進一步證明了恆等映射(Identity mapping)的重要性。同時作者還提出了一種新的殘差單元(採用了預激活)使得訓練變得更簡單,同時還提高了模型的泛化能力。

在ResNet V2中,作者提出了不止在殘差單元內部,而是在整個神經網路中都創建了『直接』的計算傳播路徑。在ResNet V1中,殘差學習單元的

上式同樣表明了在一個mini-batch中不可能出現梯度消失的現象,因為上式求導的第二部分對於一個mini-batch來說,不可能所有樣本其導數都為-1,因此,可能會出現權重很小的情況,但是不會出現梯度消失的情況。

通過研究這些不同的快捷連接,作者發現大部分快捷連接方式無法很好地收斂,其中很大部分是由於使用這些快捷連接後或多或少會出現梯度消失或者梯度爆炸的現象,最後結果顯示恆等映射效果最好。

雖然恆等映射在這些方法中表寫結果最好,仍需引起注意的是1×1的卷積捷徑連接引入了更多的參數,本應該比恆等捷徑連接具有更加強大的表達能力。事實上,shortcut-only gating 和1×1的卷積涵蓋了恆等捷徑連接的解空間(即,他們能夠以恆等捷徑連接的形式進行優化)。然而,它們的訓練誤差比恆等捷徑連接的訓練誤差要高得多,這表明了這些模型退化問題的原因是優化問題,而不是表達能力的問題。

在上圖b中,採用先加後BN再激活的方法,此時f(x)就包含了BN和ReLU。這樣的結果比原始a要差。這主要是因為BN層改變了流經快捷連接的信號,阻礙了信息的傳遞。

在c中,ReLU在相加之前,此時f(x)=x,為恆等映射。此時殘差單元中的F(x)輸出經由ReLU後變為非負,然而一個「殘差」函數的輸出應該是(−∞,+∞) 的。造成的結果就是,前向傳遞的信號是單調遞增的。這會影響表達能力,結果也變得更差了。

結果顯示,只使用ReLU預激活(d)的結果與原始ResNet結果很接近,這個與ReLU層不與BN層連接使用,因此無法獲得BN所帶來的好處。而當BN和ReLU都使用在預激活上時(e),結果得到了可觀的提升。

預激活的影響有兩個方面:第一,由於f(x)也是恆等映射,相比於V1優化變得更加簡單;第二,在預激活中使用BN能提高模型的正則化。

對於f(x)為恆等映射的好處:一方面若使用f= ReLU,如果信號是負的時候會造成一定的影響,無法傳遞有用的負信號,而當殘差單元很多時,這個影響將會變得尤為突出;另一方面當f是一個恆等映射時,信號在兩個單元間能夠很直接的傳遞。

在ResNet V1中作者提出了殘差學習單元,並從理論和實驗上證明使用直連的shortcuts有助於解決深度達到上百層的神經網路的訓練問題。而在ResNet V2中作者證明了在shortcuts中使用直接映射(即H(x) = h(x) + F(x)中h(x) = x)得到的效果最好。在ResNext中作者將bottleneck拆分成多個分支,提出了神經網路中的第三個維度(另外兩個維度分別為depth,神經網路層數深度,width,寬度,channel數),命名為 Cardinality ,並在多個數據集中證明了將bottleneck拆分能夠降低訓練錯誤率和提高准確率。

ResNext的靈感來源於VGG/ResNet和Inception:(1)在VGG、ResNet中,作者使用了相同結構的卷積層進行了堆疊,構建了層數很深但是結構簡單的神經網路;(2)而在Inception中,提出了一種叫做 split-transform-merge 的策略,將輸入(採用1x1 卷積核)分裂為幾個低維 embedding,再經過一系列特定卷積層的變換,最後連接在一起。

而在ResNet中,作者將原ResNet bottleneck中的一條path拆分為多個分支(multi branch),以此分支數量提出神經網路中的第三個重要維度——Cardinality。這一想法結合了VGG中的相同結構堆疊和Inception中的split-transform-merge策略,即如上圖所示,每個bottleneck 拆分為多個分支進行堆疊,這些分支的結構相同(這里借鑒了VGG的思想),而具體到分支的結構時又採用了Inception的split-transform-merge策略。與Inception不同的是Inception的每個分支結構都是需要認為的設計,而在ResNext中每個分支結構都相同。最終每個bottleneck的輸出就變成了:

這些所有的bottlenecks結構都遵循兩個原則:

作者提出了 三種效果相同的ResNext的表示方法,如下圖所示:

其中a,b 結構相似,只是在merge這一步的地方不同,而c則借鑒了AlexNet中分組卷積的思想,將輸入和輸出都分為多個組。

作者首先評估權衡了cardinality和width的關系。

接著,作者又評估了使用增加cardinality和depth/width來增加模型復雜度後的效果:

最後,作者還研究了shortcuts對於ResNext的重要性,在ResNet-50中,不使用shortcuts准確率下降了7%,而在ResNext-50中准確率也下降了4%,說明shortcuts對於殘差網路來說確實是非常重要的。

簡言之,增加cardinality比增加depth和width效果要好,同時,shortcuts對於模型的准確率也是至關重要的。

參考:
Deep Resial Learning for Image Recognition.
Aggregated Resial Transformations for Deep Neural Networks.
Identity Mappings in Deep Resial Networks.
ResNet論文翻譯——中文版
Identity Mappings in Deep Resial Networks(譯)
TensorFlow實現經典卷積網路. 黃文堅,唐源

㈥ 深度殘差網路是卷積網路的一種嗎

深度殘差網路Resnet實際上就是卷積神經網路的一種,只不過其結構比較特殊,對於非常深的網路優化的比較好

閱讀全文

與殘差網路如何評價相關的資料

熱點內容
網路共享中心沒有網卡 瀏覽:493
電腦無法檢測到網路代理 瀏覽:1350
筆記本電腦一天會用多少流量 瀏覽:476
蘋果電腦整機轉移新機 瀏覽:1349
突然無法連接工作網路 瀏覽:962
聯通網路怎麼設置才好 瀏覽:1191
小區網路電腦怎麼連接路由器 瀏覽:933
p1108列印機網路共享 瀏覽:1187
怎麼調節台式電腦護眼 瀏覽:603
深圳天虹蘋果電腦 瀏覽:841
網路總是異常斷開 瀏覽:584
中級配置台式電腦 瀏覽:895
中國網路安全的戰士 瀏覽:605
同志網站在哪裡 瀏覽:1380
版觀看完整完結免費手機在線 瀏覽:1432
怎樣切換默認數據網路設置 瀏覽:1080
肯德基無線網無法訪問網路 瀏覽:1254
光纖貓怎麼連接不上網路 瀏覽:1377
神武3手游網路連接 瀏覽:938
局網列印機網路共享 瀏覽:975