徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet

dicksonjyl560101發表於2019-08-17
2019-08-16 13:07:45

機器之心報導

參與:思、一鳴

反向傳播是深度學習演算法中必不可少的組成部分,但是其固有的梯度爆炸(消失),計算速度慢等問題一直困擾著學界。近日,紐西蘭維多利亞惠靈頓大學的研究者提出了一種新型的演算法,可以讓深度學習在不依賴反向傳播的情況下進行收斂,徹底解決了梯度爆炸問題。同時,研究者表示,只需要額外訓練單層的網路就可以達到影象分類中的 SOTA 效能。

論文地址:https://arxiv.org/pdf/1908.01580v1.pdf


  • 平行計算各層梯度並更新引數
  • 解決梯度消失/爆炸問題
  • 降低記憶體佔用


這就是代替反向傳播的 HSIC Bottleneck,反向傳播傳遞的梯度它也能計算,反向傳播帶來的各種缺點它也能彌補。


在這篇論文中,研究者介紹了用於訓練深度神經網路的希爾伯特·施密特獨立準則(Hilbert-Schmidt independence criterion,HSIC)Bottleneck,用它來代替反向傳播簡直非常美妙了。


研究者表示,HSIC-Bottleneck 的表現在 MNIST/FashionMNIST/CIFAR10 分類中的表現與具有交叉熵目標函式的反向傳播演算法相當。且只需要在訓練好的、已凍結引數 HSIC-Bottleneck 網路上再增加一個基於 SGD 且沒有反向傳播一層網路能夠實現影象分類的 SOTA 效能。


徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet


標準反向傳播的視覺化。

廣受讚譽的 HSIC-Bottleneck


雖然很多研究者都知道我們應該找一種比反向傳播更優秀的方法,但反向傳播應用太廣了,也非常直觀優美。因此,很難有研究者提出真正能 Work,且還非常有優勢的 BP 替代品。在這篇論文放到 Reddit 後,很多研究者都非常贊同這項工作,並表示這個領域非常值得關注。


DontShowYourBack 表示:「這篇論文的附加值並不在於它是否達到了 SOTA 結果,在我看來,作者設法使用了一種既不復雜、又不需要對稱反饋的機制,並獲得了很好的效果,這才是真正重要的因素。理論上,它能應用於更低計算力的平臺和更獨特的架構,因為這些是將反向傳播應用到當前硬體和架構上最大的挑戰。」


該使用者表明,他將親自研究這種方法,並希望能快速看到一些有趣的結果。


HSIC Bottleneck 的作者表示,反向傳播計算梯度的複雜度為 O(D^3),其中 D 表示不同層級的神經元數量。因此整個神經網路的反傳複雜度為 O(LD^3),其中 L 表示層級數。但是對於 HSIC 來說,它的計算複雜度為 O(M^2),其中 M 表示樣本數量,這樣整個網路的計算複雜度為 O(LM^2)。


值得注意的是,目前深度模型都是過引數化的,也就是說引數量要遠遠多於資料量,這樣計算量不就大大降低了嗎?


因此有使用者表明:「HSIC 最重要的部分就是將複雜度由反向傳播的 O(D^3) 降低到 O(M^2),這對於擁有數百萬或數十億引數量的神經網路來說極其重要。」


HSIC 還有很多受到關注的屬性,目前機器學習社群也都在討論它。


探索 BP 替代品的這條不歸路


既然神經網路可以視為一個複雜的複合函式,且複合的次數就等於層級數,那麼將複合函式的求導法則「鏈式法則」作為導數的獲取方式就非常直觀了。但最直觀的方法並不一定是最優的方法,反向傳播經常會因為各種缺陷刺激著一批批研究者探索新的方法。


儘管反向傳播非常實用、優美,但它的速度、記憶體佔用、梯度消失/爆炸問題都困惑著一代代研究者。因為前面層級的梯度必須等後面層級的梯度算完,BP 的速度比較慢;因為 BP 需要儲存前向傳播的啟用值,所以視訊記憶體佔用比較高;因為鏈式傳播的連乘方式,梯度非常容易爆炸或消失。


這些都是急需解決的問題,連提出 BP 的 Geoffrey Hinton 都對它充滿了質疑,在 17 年的 CapsNet 中,Hinton 老爺子嘗試通過 Dynamic Routing 找到更好的解,而且這種迭代並不需要反向傳播。Hinton 很早就意識到反向傳播並不是自然界生物大腦中存在的機制,也希望找到更好的反饋機制。



徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet


標準前傳與反傳的計算流程,其中紫色點表示計算結果需要儲存在記憶體中。


針對傳播速度,DeepMind 之前曾提出了一種名為解耦層的方法,它採用合成梯度近似經 BP 傳播的梯度,從而使前面層級與後面層級一同更新。而針對記憶體佔用,OpenAI 也曾嘗試做一個算力與記憶體間的權衡,他會以某種方式重算部分前傳結果,從而降低記憶體佔用。


但只要反傳還是鏈式法則,梯度消失和爆炸就不會真正得到解決。在這篇最新的論文中,研究者表示,如果我們直接最大會隱藏層與標註間的互資訊,最小化隱藏層與輸入的相互依賴性,我們我們就能直接獲得對應的梯度,這種梯度是不需要反向傳播進行分配額的。因此模型在不要那麼多記憶體下快速更新權重引數,同時這樣也不會出現梯度爆炸或消失問題。


HSIC Bottleneck 到底是什麼


在論文中,研究人員說明,即使沒有反向傳播,模型依然可以學習分類任務,並獲得相當有競爭力的準確率。他們因此提出了一種深度學習網路訓練方法。


這一方法由使用近似資訊瓶頸的方法訓練而來。只要最大化隱層表示和標籤之間的互資訊,並在同時最小化隱層表示和輸入的互相依賴關係即可。從資訊瓶頸的角度來說,為了減少模型依賴的引數量,所以要儘可能的讓隱層表示減少從輸入資料中獲得的資訊量,而要儘可能讓隱層最大化地「榨乾」學習到的隱層表示,輸出正確的標籤預測結果。因此這一過程可以在儘可能減少資料依賴的情況下獲得能夠預測結果的資訊。


由於計算互資訊在隨機變數中較為困難,研究人員選擇了基於非引數核的方法——希爾伯特·施密特獨立準則(HSIC),用來刻畫不同層之間的統計學依賴。換句話說,對於每個網路層,研究人員都會同時最大化層和期望輸入之間的 HSIC,並最小化層和輸入之間的 HSIC。


研究人員進一步證明,按照這樣的訓練方式,網路中的隱層單元可以組成很有用的表示。具體來說,凍結訓練好的 HSIC 網路,在不需要反向傳播的情況下,僅更新和訓練一層單層的、使用了卷積 SGD 的網路就可以達到很近似最佳準確率效果的模型


使用 HSIC-Bottleneck 的優勢在於,相比標準的反向傳播演算法,網路可以快速收斂。這是因為 HSIC-Bottleneck 直接在連續隨機變數上進行運算,相比基於丟棄的傳統資訊瓶頸方法更好。這一方法使用了一個傳統的弱訓練網路用於將表示轉換為輸出標籤的形式。在實際中,研究人員使用了一個網路,包括很多層和多種維度(如果是全連線層),或者不同數量的核(如果是卷積層)作為開始。


什麼是希爾伯特·施密特獨立準則


說起希爾伯特·施密特獨立準則,我們需要先談談資訊瓶頸的問題。資訊瓶頸描述的是最小需要多少資料能夠充分預測結果的理論,這是一個隱層表示上的權衡問題,即可以預測輸出所需的資訊量和輸入中應當保留多少資訊之間的權衡。資訊瓶頸原則決定了需要保留多少關於標籤的隱層表示資訊,而需要壓縮多少輸入中的資訊。


根據資訊瓶頸,我們就可以知道,在訓練機器學習模型時,需要對至少多少的輸入資訊進行保留,以便隱層表示能夠預測出和標籤相符結果的資料量。


而要計算這個保留的資訊量是非常困難的。此外,傳統的資訊瓶頸理論大部分基於丟棄資訊的方法,因此作者選擇了基於希爾伯特·施密特獨立準則的資訊瓶頸方法,用於獲得機器學習過程中的梯度。


那麼,什麼是希爾伯特·施密特獨立準則呢?理論上,希爾伯特·施密特獨立準則可以發現變數之間的任意依賴。當給定正確的核大小(如高斯核)的時候,HSIC 當且僅當兩個隨機變數完全獨立時為 0。因此,只要是兩個變數之間具有非獨立的關係,HSIC 就可以以非引數化的方式將其刻畫出來。


用 HSIC 訓練的網路是什麼樣的


使用 HSIC-Bottleneck 目標訓練深度學習的網路被稱為 HSIC-Bottleneck 訓練或預訓練。Bottleneck 訓練網路的輸出包括分類的必要資訊,但不是正確的形式。

研究人員評價了兩種從 HSIC 評價訓練網路產生分類結果的方法。首先,如果輸出是獨熱向量,則可以根據訓練標籤被直接重新排列。在第二個場景下,研究人員將一個單層和 softmax 輸出層連線到了凍結的 Bottleneck 訓練網路後,並使用沒有反向傳播的 SGD 方法訓練這個額外增加的層。這一步驟被稱為後訓練(post-training)。


徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet


圖 1:HSIC 訓練的網路(1a)。這是一個標準的前向傳播網路,但是使用了 HSIC IB 目標函式,這樣可以使最後一層的隱層表示快速地開始訓練。圖 1b 則展示了一個名為「σ-組合」的網路,每個網路分支都有一個特定的σ進行訓練。因此,對於從 HSIC 網路中訓練的每個隱層表示都可能包含在特定尺度下從 HSIC-Bottleneck 目標函式中獲得的不同資訊。之後,聚合器會將隱層表示相加,組成一個輸出表示。


研究人員展示的 HSIC 訓練網路是如下的一個前向輸入網路。

徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet


在網路中,Z = {Zi}, i ∈ {0, ..., L},L 則是隱層的數量。HSIC 訓練網路可以被理解為是優化的編碼 PθT (Zi |X) 層和 PθT (Y |Zi) where i ∈ {0, ..., L} 解碼層。這個網路提供了包含用於分類任務資訊的隱層。


HSIC-trained 神經網路效果怎麼樣


首先,研究者繪製了 HSIC-bottleneck 值與啟用值的分佈,它們都是在訓練中從簡單的模型取樣得出。其次,研究者還提供了 HSIC-bottleneck 和標準反向傳播之間的對比,它們都在相同資料集上使用相同引數量的前饋網路測試得出。


在對比實驗中,研究者在 MNIST/Fashion MNIST/CIFAR-10 資料集上訓練前饋網路,並分析了 HSIC-bottleneck 在處理經典分類任務上的表現。其中,前饋網路還包括非常著名的 ResNet。在研究者完成的所有實驗中,都包含了標準反向傳播、預訓練和後訓練階段,後訓練階段使用的都是 SGD 最優化器。


HSIC-bottleneck 的值長什麼樣


圖 2 展示了 HSIC-bottleneck 的值在訓練深度網路時的變化。


徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet


圖 2:這些實驗展示了,在傳統反向傳播訓練過程中,隨著網路啟用函式 (2a)-(2c) 和深度 (2d)-(2f) 的變化,HSIC-bottleneck 數量 HSIC(X, ZL) 和 HSIC(Y, ZL) 的變化,以及訓練準確率的變化。


圖 3a 和 3b 視覺化了前饋網路中最後一個隱藏層每一個類別的啟用值。


徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet


圖 3:最優一層 tanh 啟用函式值的分佈,其神經網路各層的隱藏單元數為:784-64-32-16-8-4-2-1,它通過 HSIC-bottleneck 目標 (3a) 和反向傳播 (3b) 訓練。


徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet


圖 4:MNIST 輸出類別的分佈,每一張子圖都展示了類別及對應的分類準確率。


HSIC-bottleneck 效果怎麼樣


圖 5 展示了反向傳播和論文提出的 HSIC 評價訓練方法。在第一個訓練輪中,論文提出的方法的表現就超過了標準的機器學習訓練方法,分別在 Cifar 10,FashionMNIST 和 MNIST 上取得了 43%、85% 和 95% 的效果。在訓練結束後,HSIC-Bottleneck 訓練的網路表現和其他標準反向傳播演算法幾乎一致。


徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet


圖 5:論文提出的 HSIC 評價訓練方法在標準的分類問題上的表現。實驗使用了同樣的訓練配置,但是批大小不同。傳統反向傳播使用了 32 和 256 的批大小,但 HSIC 演算法只使用了 256 的批大小。


在圖 8 中,研究人員展示了一個有著 5 個卷積殘差塊的 HSIC 訓練的網路在不同資料集上的表現。每個實驗都包括了 50 個 HSIC 訓練輪,之後每個網路都會進行後訓練——用一個單層分類網路進行,這和標準反向傳播訓練網路不同。


徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet


圖 8:在不同資料集上 ResNet 後訓練的效果。

相關連結:https://arxiv.org/abs/1908.01580v1

https://www.reddit.com/r/MachineLearning/comments/cql2yr/deep_learning_without_backpropagation/

https://www.toutiao.com/a6725627007285068299/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2653977/,如需轉載,請註明出處,否則將追究法律責任。

相關文章