博客 / 詳情

返回

吳恩達深度學習課程二: 改善深層神經網絡 第二週:優化算法(三)Momentum梯度下降法

此分類用於記錄吳恩達深度學習課程的學習筆記。
課程相關信息鏈接如下:

  1. 原課程視頻鏈接:[雙語字幕]吳恩達深度學習deeplearning.ai
  2. github課程資料,含課件與筆記:吳恩達深度學習教學資料
  3. 課程配套練習(中英)與答案:吳恩達深度學習課後習題與答案

本篇為第二課的第二週內容,2.6的內容。


本週為第二課的第二週內容,和題目一樣,本週的重點是優化算法,即如何更好,更高效地更新參數幫助擬合的算法,還是離不開那句話:優化的本質是數學
因此,在理解上,本週的難道要相對較高一些,公式的出現也會更加頻繁。
當然,我仍會補充一些更基礎的內容來讓理解的過程更絲滑一些。
本篇的內容關於Momentum梯度下降法(動量梯度下降法),是應用了上一篇指數加權平均邏輯的梯度下降法。

1. Momentum 梯度下降法

1.1梯度下降中的“震盪”現象

我們用課程裏的圖來看一下這個問題:
Pasted image 20251110104620

現在假設這就是我們的網絡的損失圖像,我們通過一次次迭代,讓損失下降到最低點。
這裏展開兩個問題:

(1)為什麼迭代過程會讓損失上下震盪?

因為每個批次的樣本不可能完全相同,不同的特徵傾向會指引參數向不同的方向更新。
甚至如果一個批次中大多是噪聲,反而會讓參數反向更新,增加損失。

就像貓狗分類中,一個批次可能白貓多一些,一個批次可能橘貓多一些,而還有一些批次甚至有和狗長得很像的貓,這都會影響該次迭代中的學習效果,從而影響參數更新,而這前後的不同就會讓損失“震盪”。

(2)為什麼不改變學習率震盪也會越來越小?

因為在收斂的過程中,損失函數變平坦,梯度變小,更新步長隨之減小。
同時,樣本間的梯度差異(噪聲)也隨之變小,使震盪幅度下降。
來看一下參數更新公式:

\[參數 := 參數 - 學習率*梯度 \]

在學習率不變的情況下梯度越來越小了,自然更新量就會變小,影響損失的變化量也會變小。

依舊用下山舉例:就像越靠近山谷底部,地面越平坦,即使走偏一步,你也走不上多高的坡,自然“來回晃動”的幅度越來越小。

這只是理想情況,如果學習率設置不當,就會出現這中情況:

  • 你快到谷底了,卻還在大步流星,根本剎不住車,一腳又上了另一座山。
  • 你走得太慢了,甚至可能在谷底附近的淺坑裏轉圈圈,遲遲到不了真正的低點

而且,説到底,震盪現象依然存在,只是在收斂中隨着整體移動量變小而沒那麼明顯了,如何解決這種情況,又不影響正常收斂呢?

1.2 解決震盪的直接方法

通過上面一部分,我們現在已經知道了,出現震盪的本質原因是批次訓練中樣本的差異導致的單次迭代的結果差異。

那麼你可能已經猜到了一個解決這個問題的最直接的方法:增加批次樣本量
沒錯,只要我們增加批次樣本量,模型一次學習更多的樣本,自然就學到了更多的特徵分佈,出現“噪聲集中”的機率也會變少。
就像剛剛的貓狗分類裏,原來模型看完白貓就學白貓,然後看橘貓學橘貓,之後再看“狗貓”學“狗貓”,就像對什麼都很好奇的小孩,每遇到新的一批樣本,都要調整自己對貓的認知,就是一次震盪。
現在我把黑白紅藍貓一次讓模型看完,模型就知道這些顏色的貓都是貓了,就像見識廣了的成年人,遇到新樣本發現其實裏面的特徵自己之前已經見過了,自然不會有那麼多的震盪。

可是這樣就又出現新問題了,在本週第一部分裏我們就已經論述了選擇Mini-batch梯度下降是成本和性能的權衡考慮,如果不計其他因素地增加批次樣本,那不就是批次梯度下降,即一次就使用所有樣本來訓練嗎?
這會帶來:

  • 顯存暴漲
  • 單步計算量巨增
  • 訓練速度不一定更快
  • 大 batch 收斂容易“卡平坦鞍點”
    Pasted image 20251110125009

因此,Batch 不是越大越好,而是追求成本與梯度穩定之間的平衡。

而這也引出了一個核心動機:我們希望在小 batch 的成本下,獲得“大 batch 才有的穩定梯度效果”。
這正是 Momentum 要解決的。

1.3 Momentum 梯度下降法

我們已經通過氣温的例子學習了指數加權平均的概念。
回憶一下氣温的例子:

每天的氣温都有波動,直接看“當天温度”,得到的曲線會忽高忽低、不夠平滑,就像“震盪”。
但如果對氣温做 EMA,今天的氣温佔 70%,昨天佔 21%,前天佔 6%…那得到的温度曲線就會 更平滑、更穩定、更能代表真實趨勢

再看看我們現在要解決的震盪問題,它的核心在於每次更新只依賴該批次樣本計算的梯度
現在的更新方式是不是就相當於“當天温度”?
那是不是同理,只要我們對梯度進行EMA,讓一次迭代不只依賴本次樣本計算的梯度,而是多批次樣本梯度的指數加權平均,是不是就相當於變相地增加了批次樣本量?

我們再換個角度加深一下理解,再次回看這副圖:
先強調一下,真實的圖像和方向代表的信息要遠比圖裏的複雜的多,我們只是簡化來幫助理解。
Pasted image 20251110133009

就像圖裏畫的一樣,我們抽出其中兩次迭代,並假定他們所代表的特徵。
這樣,如果第二次迭代使用的是EMA梯度,那它就得到了更平衡,更指向核心特徵的信息。
就像把每個人自己獨特的觀點綜合考量,而每個人都贊同的觀點那大概是對的,就大力採納。

而這就是Momentum 梯度下降法的核心觀點

  • 對多次計算的梯度做EMA,用EMA來更新參數。
  • 如果梯度方向總是在某個方向上保持一致,那我們就應該越走越快。
  • 如果梯度方向來回變化,就不要輕易被改變。

其公式如下:
記參數為 \(\theta\),梯度為 \(g_t = \nabla_\theta J(\theta)\),動量項為 \(v_t\),動量係數為 \(\beta \in [0,1)\),學習率為 \(\eta\),則

\[v_t = \beta v_{t-1} + (1 - \beta) g_t \]

\[\theta_t = \theta_{t-1} - \eta v_t \]

其中,\(v_t\)相當於累積了之前多次梯度的“指數加權平均”:

  • 當梯度方向穩定時,\(v_t\) 會越來越大,加快下降速度。
  • 當梯度方向來回變化時,\(v_t\) 會相互抵消,減少震盪。

這樣,我們使用Momentum 梯度下降法,用指數加權平均後的梯度更新參數,既增加了核心特徵上的收斂速度,又緩解了非個性化特徵帶來的震盪現象。

2.“人話版”總結

概念 原理 比喻
梯度下降中的震盪 每個批次樣本不同,導致每次迭代的梯度方向不一致,參數更新“來回晃動”。 就像走山路,有時被小石頭絆偏,走兩步又回到原路,來回搖擺。
學習率不變時震盪減小 隨着收斂,損失函數變平坦,梯度變小,更新步長減小,自然震盪幅度下降。 越靠近山谷底部,地面平坦,即使走偏也不會翻到對面山坡。
增大批次(解決震盪直接方法) 一次學習更多樣本,梯度更穩定,噪聲影響減小。 小孩學貓時只看一種顏色的貓,會不斷調整認知;一次看多種顏色的貓,就穩了。
Momentum 梯度下降法 對多次迭代的梯度做指數加權平均(EMA),用EMA更新參數;穩定方向加速,震盪方向抵消。 就像綜合多個人的意見:大多數人一致的方向就加速採納,意見分歧的方向就減緩。
Momentum 梯度下降法公式 \((v_t = \beta v_{t-1} + (1-\beta) g_t),(\theta_t = \theta_{t-1} - \eta v_t)\) EMA累積前幾次梯度,相當於“記住過去的方向”,走路更穩、更快。
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.