技術指南

梯度消失和爆炸

在訓練深度網路時,誤差訊號在向後傳播多個層時會縮小到零或放大到無限大。

閱讀時間約2分鐘最後更新

概述

This makes deep and recurrent models painfully slow or impossible to train without specific fixes.

深入探討

神經網路透過反向傳播進行學習,反向傳播使用鍊式法則將梯度逐層相乘。當您堆疊許多層時,這些每層因素會相乘。如果每個因子始終小於 1,則乘積會呈指數級收縮,且早期層幾乎不會更新—即梯度消失問題。如果每個因子都大於 1,產物就會爆炸,產生巨大的不穩定更新或 NaN 值。 sigmoid 和 tanh 等飽和活化函數的導數最大值為 0.25 和 1,是典型的罪魁禍首。這個問題在深度前饋網路和處理長序列的循環網路(RNN)中最為嚴重,其中在每個時間步都重新應用相同的權重矩陣,從而顯著地複合了效果。

技術洞察

在反向傳播中,早期層的梯度是許多雅可比行列式和權重項的乘積。粗略地說,訊號的縮放比例就像提升到深度的每層因子一樣。低於 1 的值向零衰減;超過 1 的值無限增長。對於在 T 個步驟上展開的 RNN,主項的行為類似於循環權重的 T 次方的最大特徵值,因此即使與 1 的微小偏差也會在長序列上消失或爆炸。

戰略影響

成本與預算

多年來,架構決策決定著效能和營運成本。

更明確的決策

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

品質管控

更好的工程選擇可以減少生產中的可靠性事故。

梯度消失和爆炸的未來

核心緩解措施——殘差(跳過)連接、歸一化、門控和仔細初始化——現在已成為標準,因此消失的梯度很少會阻礙現代架構的訓練。變形金剛完全透過使用對序列的注意力而不是重複重新應用一個矩陣來迴避循環複合。對數千層深度的訓練網路、穩定的超長上下文模型以及神經切線核等在單一訓練步驟運行之前預測訊號傳播的理論工具的研究仍在繼續。

現實世界的實施

早期的 RNN 語言模型很難連接長句子中的單詞,因為梯度在許多時間步長中消失,激發了 LSTM 和 GRU。

ResNet 透過添加跳躍連接來訓練 100 多層圖像分類器,為梯度提供直接、未稀釋的向後路徑。

開發人員發現訓練損失突然變為 NaN(梯度爆炸的明顯跡象),並添加梯度裁剪來穩定它。

PyTorch 或 TensorFlow 中的監控工具繪製每層梯度範數,以便工程師可以發現梯度已崩潰至接近零的層。

風險與防護欄

優化一項基準測試可以隱藏更廣泛的系統弱點。

基礎設施和維護成本常常被低估。

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

2

在實際負載和資料條件下進行基準測試。

3

儀器監控錯誤、漂移和使用者影響。

4

在擴展之前準備回滾和事件回應路徑。

不斷探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Vanishing and Exploding Gradients quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

開始測驗

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一步指南

梯度檢查點

常見問題

What is Vanishing and Exploding Gradients?

在訓練深度網路時,誤差訊號在向後傳播多個層時會縮小到零或放大到無限大。這使得深度和循環模型的訓練速度非常緩慢,或者在沒有特定修復的情況下不可能進行訓練。

反向傳播中的什麼數學運算是梯度消失和爆炸的根本原因?

反向傳播應用鍊式法則,將許多每層因子相乘;值小於 1 的產物消失,大於 1 的產物爆炸。

為什麼 sigmoid 和 tanh 活化特別容易出現梯度消失?

Sigmoid 導數峰值為 0.25,tanh 導數峰值為 1;在飽和區域中,兩者都接近於零,因此將它們堆疊起來會導致梯度趨於零。

哪一種架構受長序列梯度問題的影響最嚴重?

RNN 在每個時間步重新應用相同的循環權重矩陣,因此在長序列上,效果會像矩陣的特徵值提升到序列長度一樣複合。

看到訓練損失突然變成 NaN 最有可能顯示哪個問題?

爆炸梯度產生巨大的更新,溢出到無限大或 NaN;梯度消失反而會導致損失停滯。

殘餘(跳過)連接如何幫助解決梯度消失問題?

跳過連接添加了恆定等路徑,因此梯度可以向後流動,而不會被中間層反覆衰減。