wt+1=(1−2η)wtw_{t+1}=(1-2\eta)w_t
∣1−2η∣<1 ⟺ 0<η<1|1-2\eta|<1\ \Longleftrightarrow\ 0<\eta<1

完整講解與原文對照 / Full explanation and source comparison

梯度下降:沿著最陡的下坡方向走

反向傳播和很多神經網路優化演算法,底層都靠一階優化方法,其中最經典的就是梯度下降(gradient descent)。歷史上 Cauchy(1874)最早提出這個想法,Hadamard(1908)加以精煉,Curry(1944)分析收斂性。因為 backprop = 梯度下降 + 鏈式法則,我們先從梯度下降本身學起。

問題設定:最小化可微函數

給一個可微函數 f(⋅)f(\cdot),要對變數 w\boldsymbol{w} 做最小化(式 (1)):

minimize⁡wf(w).(1) \underset{\boldsymbol{w}}{\operatorname{minimize}} f(\boldsymbol{w}) . \tag{1}

數值優化從隨機選的初始點 w(0)\boldsymbol{w}^{(0)} 出發,每一步加一個更新量 Δw\boldsymbol{\Delta}\boldsymbol{w}(式 (2)):

w(k+1):=w(k)+Δw.(2) \boldsymbol{w}^{(k+1)}:=\boldsymbol{w}^{(k)}+\boldsymbol{\Delta}\boldsymbol{w} . \tag{2}

一直迭代,直到收斂(或夠接近)最優解 w∗\boldsymbol{w}^{*}。

L-smooth 與理想步長

假設 f(w)f(\boldsymbol{w}) 的梯度是 LL-smooth(LL 是 Lipschitz 常數),代表梯度不會變化太劇烈。在這個設定下,更新規則變成(式 (3)):

Δw=−1L∇f(w(k))⟹w(k+1):=w(k)−1L∇f(w(k)).(3) \boldsymbol{\Delta}\boldsymbol{w}=-\frac{1}{L}\nabla f\left(\boldsymbol{w}^{(k)}\right) \Longrightarrow \boldsymbol{w}^{(k+1)}:=\boldsymbol{w}^{(k)}-\frac{1}{L}\nabla f\left(\boldsymbol{w}^{(k)}\right) . \tag{3}

白話:沿著梯度的反方向走,步長取 1/L1/L,就能保證每步都讓目標函數下降。

學習率 η\eta:實務上的固定步長

問題來了——LL 常常不知道、也算不出來。所以實務上改用固定的正步長 η>0\eta\gt 0,也就是大家熟悉的學習率(learning rate)(式 (4)):

Δw=−η∇f(w(k)),i.e.,w(k+1):=w(k)−η∇f(w(k)).(4) \boldsymbol{\Delta}\boldsymbol{w}=-\eta\nabla f\left(\boldsymbol{w}^{(k)}\right), \quad \text{i.e.,} \quad \boldsymbol{w}^{(k+1)}:=\boldsymbol{w}^{(k)}-\eta\nabla f\left(\boldsymbol{w}^{(k)}\right) . \tag{4}

η\eta 太大可能震盪甚至發散,太小則收斂龜速——調學習率是訓練神經網路最常見的頭痛之一。若是最大化問題,步長改成 +η+\eta,就叫梯度上升(gradient ascent)。

學習率也可以用線搜索(line search)來選,傳統優化常用,深度學習較少——kp4 會細講。

凸 vs 非凸:收斂到哪裡不一樣

口語復盤:梯度下降就是「看現在坡度最陡往哪、就反方向走一步」;理想步長是 1/L1/L,實務上用學習率 η\eta 代替;凸函數找全域最優,非凸只能找局部最優但通常夠用。

教授祕笈:蒙眼下山——梯度下降式(1)到式(4)

同學,KP-1 說訓練就是下山找谷底。今天把眼睛矇起來:你看不到整座山,只能用腳底感覺「哪一邊最陡」,然後永遠走最陡的反方向。這就是梯度下降(gradient descent)。Cauchy 1874 年就想過這招;後來 backprop 不過是「梯度下降加鏈式法則」,所以公式要先在這裡站穩。

先把任務講成一句人話

給你一個可以微分的高度函數,從隨便一個起點出發,每一步加一個位移,一直走到夠接近谷底。蒙眼的人不會一次跳過整座山,他只問:現在腳下,往哪邊降得最快?然後反著坡走一小步。

鷹架式:先直覺,再符號

直覺:看現在坡度最陡往哪,就反方向走一步。 為什麼需要公式?因為「走一步」得講清楚走多遠、往哪走,不然蒙眼的人會掉下懸崖。現在才請符號出場。式 (1) 是任務本身——對變數 w\boldsymbol{w} 最小化可微函數 f(⋅)f(\cdot):

minimize⁡wf(w).(1) \underset{\boldsymbol{w}}{\operatorname{minimize}} f(\boldsymbol{w}). \tag{1}

從隨機初始點 w(0)\boldsymbol{w}^{(0)} 出發,每步加更新量 Δw\boldsymbol{\Delta}\boldsymbol{w},這是式 (2):

w(k+1):=w(k)+Δw.(2) \boldsymbol{w}^{(k+1)}:=\boldsymbol{w}^{(k)}+\boldsymbol{\Delta}\boldsymbol{w}. \tag{2}

若梯度是 LL-smooth(LL 是 Lipschitz 常數,白話:坡度不會突然瘋掉),理想步長取 1/L1/L,這是式 (3):

Δw=−1L∇f(w(k))⟹w(k+1):=w(k)−1L∇f(w(k)).(3) \boldsymbol{\Delta}\boldsymbol{w}=-\frac{1}{L}\nabla f\left(\boldsymbol{w}^{(k)}\right) \Longrightarrow \boldsymbol{w}^{(k+1)}:=\boldsymbol{w}^{(k)}-\frac{1}{L}\nabla f\left(\boldsymbol{w}^{(k)}\right). \tag{3}

麻煩來了:LL 常常不知道、也算不出來。實務上改用固定正步長 η>0\eta\gt 0,也就是學習率,這是式 (4):

w(k+1):=w(k)−η∇f(w(k)).(4) \boldsymbol{w}^{(k+1)}:=\boldsymbol{w}^{(k)}-\eta\nabla f\left(\boldsymbol{w}^{(k)}\right). \tag{4}

若問題改成最大化,把負號改成正號,就叫梯度上升。線搜索怎麼動態選 η\eta,KP-4 再講。

真的算一遍:二次谷底,手算三步

讓 f(w)=w2f(w)=w^{2}(谷底在 00),則 ∇f=2w\nabla f=2w。此函數 L=2L=2,理想步長 1/L=0.51/L=0.5。我們故意用較小的 η=0.1\eta=0.1,從 w(0)=4w^{(0)}=4 出發:

kk w(k)w^{(k)} ∇f=2w\nabla f=2w η∇f\eta\nabla f w(k+1)=w−η∇fw^{(k+1)}=w-\eta\nabla f f(w)f(w)
00 44 88 0.80.8 3.23.2 1616
11 3.23.2 6.46.4 0.640.64 2.562.56 10.2410.24
22 2.562.56 5.125.12 0.5120.512 2.0482.048 6.55366.5536

每步高度都在降:蒙眼走最陡反方向,真的在下山。

先留一個反轉

你可能覺得 η\eta 越大走得越快。把 η\eta 改成 11 試試:w=4−1⋅8=−4w=4-1\cdot 8=-4,高度還是 1616;下一步 −4−1⋅(−8)=4-4-1\cdot(-8)=4,又彈回去。兩點之間永遠對打,谷底 00 一次都沒踩到。步子太大不是加速,是在山谷兩壁拍皮球。

換個場景,自己找出同一條路

同一套蒙眼邏輯,換到「調冷氣」:室溫 28∘C28^{\circ}\mathrm{C}、目標 24∘C24^{\circ}\mathrm{C},誤差函數仍像一口碗。每次只看現在偏熱還是偏冷(梯度),反方向調一格(學習率)。請你自己用 f(w)=(w−1)2f(w)=(w-1)^{2}、w(0)=5w^{(0)}=5、η=0.25\eta=0.25 走兩步——結構與上表完全相同,只是谷底搬到 11。若 ff 是凸的,序列會走到全域最低點 w∗\boldsymbol{w}^{*},而且高度單調不增:f(w(0))≥f(w(1))≥⋯≥f(w∗)f(\boldsymbol{w}^{(0)})\ge f(\boldsymbol{w}^{(1)})\ge\cdots\ge f(\boldsymbol{w}^{*})。深度學習的 loss 幾乎都非凸,只能保證局部最低,途中還可能震盪,但整體仍傾向下降。這也是後面 momentum、Adam 要出場的原因。

大家最容易在這裡搞混

第一個誤解:以為梯度下降一定找到全域最低點。只有凸目標才有這保證;非凸只能承諾局部最低。第二個誤解:以為理想步長 1/L1/L 隨時拿得到。LL 通常未知,所以才用 η\eta 硬扛,也才會有「太大震盪、太小龜速」這門課最常見的頭痛。

跨知識點掛勾

這條更新規則是整章的地基。KP-3 會問蒙眼走了那麼久,什麼時候該宣布到站;KP-4 會把固定 η\eta 換成「試走、太大就砍半」。Chap. 1 的 arg⁡min⁡\arg\min 在這裡變成「一步一步減」。

換句話重述

梯度下降就是蒙眼下山:式 (1) 找谷底,式 (2) 每步加位移,式 (3) 理想步長 1/L1/L,式 (4) 用學習率 η\eta 代替;凸找全域、非凸找局部,但通常夠用。

一句話收尾: 蒙眼下山,永遠走最陡的反方向;步長是 η\eta,太大會拍皮球。