梯度下降

大學電腦科學針對二變數損失函數、使用精確梯度的固定步長最佳化演算法

使用通行證解鎖此實驗

通行證可解鎖網站上的所有模擬,包括課堂展示模式。下方的教學筆記仍免費開放給所有人。

一次性付款,無需訂閱。

關於此實驗

訓練神經網路意味著沿著損失曲面向下移動。梯度下降法沿著梯度的反方向邁出一步,步長由學習率縮放。這個簡單的規則背後隱藏著許多行為:步伐太小會進展緩慢,太大則會振盪甚至發散;狹窄的谷底會讓它走出之字形,也可能使它陷入局部最小值。選擇一個曲面並點擊起點,接著在地圖和損失曲線上逐步比較一般梯度下降法、動量法和 Adam。

學習目標

  • 寫出梯度下降的更新公式,並說明學習率的作用
  • 推導二次損失的穩定性界限 η < 2/λ_max,並進行測試
  • 說明為什麼病態谷底會使梯度下降走出之字形,以及動量如何提供幫助
  • 描述 Adam 如何利用梯度的移動平均重新縮放各個座標
  • 辨認出收斂到的是局部最小值,而非全域最小值

使用方法

  1. 1在梯度下降法中選擇「圓形碗」。嘗試將學習率設為 0.1、1 和 2.1,並描述這三條路徑。
  2. 2選擇「狹窄山谷」。找出仍能收斂的最大學習率,並將它與滑桿下方顯示的穩定極限進行比較。
  3. 3在「狹窄山谷」中將 η 設為 0.05。數一數梯度下降法達到損失 1e-6 所需的步數,然後切換到 Momentum,將 β 設為 0.9,再數一次。
  4. 4選擇「香蕉山谷」(Rosenbrock 函數)。比較執行 300 步後梯度下降法、Momentum 和 Adam 的表現。
  5. 5選擇「兩個極小值」。從預設起點執行梯度下降法會停在右側較淺的谷底。在山脊兩側點選設定起點:哪些起點能到達較深的谷底?
  6. 6返回預設起點,切換到 Momentum,並將 β 設為 0.9、η 設為 0.1。為什麼現在路徑能越過山脊?

模型

學習率為 η 的梯度下降法
重球動量法:速度會記住過去的梯度
Adam:按座標使用經過偏差校正的平均值,β₂ = 0.999
對於 Hessian 特徵值為 λᵢ 的二次函數,每個方向每一步都會按 1 − ηλᵢ 的比例收縮。

假設

  • 梯度是精確的。在實際訓練中,梯度由小批次資料估算,因此會引入雜訊(隨機梯度下降)。
  • 損失曲面是固定的二變數函數:圓形碗面 ½(x² + y²)、狹窄山谷 ½(0.5x² + 5y²)、Rosenbrock 函數 (1 − x)² + 10(y − x²)²,以及傾斜的雙井函數。
  • 每次執行都使用固定學習率,並在 300 步後停止。沒有學習率排程。
  • 執行是決定性的:相同的起點和設定總會得到相同的路徑。

在課堂上試試這個實驗

  1. Q1在狹窄山谷中,穩定性極限由陡峭方向決定,但進展受平緩方向限制。請用因子 1 − ηλ 加以說明。
  2. Q2為什麼動量法每一步使用相同的梯度,卻仍能更快收斂?
  3. Q3Adam 的步長大致為 η,不受曲面陡峭程度影響。這在什麼情況下是優勢,又在什麼情況下會成為問題?
  4. Q4神經網路的損失函數有數百萬個維度。你認為局部極小值和鞍點,哪一個會成為更大的障礙?為什麼?
  5. Q5請提出一種學習率排程方案,讓模型既能在早期快速取得進展,又能精確收斂。

常見問題

為什麼學習率過大會導致損失增加?

每一步都會越過谷底,落到對面更高的斜坡上。對於二次函數,每次越過都會使距離乘以 |1 − ηλ|;當 η 大於 2/λ 時,這個乘數就大於 1。

在狹窄的谷底,動量有什麼作用?

橫越谷底的鋸齒狀梯度方向彼此相反,會在累積速度中相互抵銷;而沿著谷底方向的較小梯度都指向同一方向,因此會相加。如此一來,運動軌跡會變得平直,並沿著谷底加速前進。

Adam 總是比梯度下降更好嗎?

不。Adam 穩健且幾乎不需要調參,因此常用於訓練網路;但對於簡單且條件良好的問題,一般梯度下降或動量法可能收斂得更快,或得到更好的解。