自適應梯度 是什麼?

AdaGrad:自適應梯度 的完整解釋

根據過去梯度的平方和自動調整各參數學習率的最佳化演算法,使高頻參數學習率較小,低頻參數學習率較大。

核心概念

AdaGrad 的核心理念是參數應該有不同的學習率。在神經網路訓練中,不同參數的梯度分佈並不均勻:某些參數對應的特徵可能出現頻繁,產生大的梯度更新;其他參數對應的特徵可能出現罕見,梯度更新較小。AdaGrad 通過監控每個參數的累積梯度平方和來實現自適應學習率調整。

演算法維護一個累積器向量,逐步累積每個參數的梯度平方。學習率與累積器的平方根成反比。這意味著參數被更新的次數越多,其對應的累積梯度平方和越大,分配給該參數的學習率就越小。

運作原理

AdaGrad 的更新規則如下:

  1. 初始化累積器向量 v = 0(與參數維度相同)
  2. 每個訓練步驟中,計算梯度 g = ∇f(θ)
  3. 累積梯度平方:v = v + g ⊙ g(⊙ 表示元素積)
  4. 更新參數:θ = θ - (η / √(v + ε)) ⊙ g,其中 η 是基礎學習率,ε 是小常數防止除零

核心特性是適應性調整:早期訓練時,累積器 v 較小,學習率較大,參數更新迅速;隨著訓練進行,v 逐漸增大,學習率逐漸減小。這種自動衰減機制無需人工設定學習率衰減計劃。

實際應用

AdaGrad 在稀疏數據和自然語言處理領域特別有效。在詞嵌入訓練中,稀有詞彙對應的參數更新次數少,會保持較大學習率,而常見詞彙參數會逐漸減速。這正好符合自然語言的稀疏性特點。

AdaGrad 在推薦系統中也廣泛應用,因為特徵頻率不均(某些用戶或物品出現頻繁,其他罕見出現)。在廣告點擊率預測中,AdaGrad 能自動平衡高頻和低頻特徵的學習。

Google 的論文原始應用包括線上學習和訓練大規模分布式系統。AdaGrad 的自適應特性使其特別適合非均勻數據分佈的場景。

常見誤區

誤區一:認為 AdaGrad 可以完全不設定學習率。實際上 AdaGrad 仍需設定基礎學習率 η,自適應只調整相對比例,不是完全自動化。

誤區二:認為 AdaGrad 在所有場景都優於固定學習率。實際上 AdaGrad 在學習率單調遞減的情況下可能過早停止學習,特別是在長期訓練中,累積器會變得非常大,學習率趨近於零。

誤區三:忽視累積梯度平方的非負特性。由於平方運算,累積器單調遞增,永遠無法恢復。這在某些應用中可能導致收斂問題。

與相關技術的比較

  • AdaGrad vs SGD:SGD 使用固定學習率,容易在陡峭區域震蕩,在平坦區域進度緩慢。AdaGrad 通過自適應學習率改善了這個問題。

  • AdaGrad vs RMSProp:RMSProp 改進了 AdaGrad 的累積器單調遞增問題,使用指數加權移動平均而非簡單累積,使學習率衰減更溫和。

  • AdaGrad vs Adam:Adam 結合了動量法和自適應學習率,同時使用梯度的一階和二階矩估計。Adam 通常在深度學習中表現更好,但 AdaGrad 在特定稀疏數據場景下仍有優勢。

常見問題