∥∇f(wt)∥2≤ϵ,∣f(wt)−f(wt−1)∣≤ϵ\|\nabla f(w_t)\|_2\le\epsilon,\qquad |f(w_t)-f(w_{t-1})|\le\epsilon
∥∇f(wt)−∇f(wt−1)∥2≤ϵ\|\nabla f(w_t)-\nabla f(w_{t-1})\|_2\le\epsilon

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

收斂準則:優化演算法什麼時候該喊停

梯度下降和其他數值優化方法一樣,不能無限跑下去——需要收斂準則(convergence criteria)來決定「夠好了,可以停」。以下是幾種常用判斷方式:

1. 梯度范數夠小

看更新後梯度的 ℓ2\ell_2 范數是否小於門檻 ϵ\epsilon:

∥∇f(w(k+1))∥2≤ϵ, \left\|\nabla f\left(\boldsymbol{w}^{(k+1)}\right)\right\|_{2} \leq \epsilon,

其中 ϵ\epsilon 是很小的正數。直覺來自一階最優性條件:在局部最優點 w∗\boldsymbol{w}^{*} 處,∥∇f(w∗)∥2=0\left\|\nabla f\left(\boldsymbol{w}^{*}\right)\right\|_{2}=0——梯度為零代表「沒有下降方向了」。

⚠️ 非凸陷阱:在非凸設定下,這個準則可能讓你停在鞍點(saddle point)——梯度也是零,但不是真正的最低點。深度學習 loss 地形鞍點很多,實務上要搭配其他準則或技巧。

2. 目標函數(cost)變化夠小

看連續兩步的 loss 差值是否夠小:

∣f(w(k+1))−f(w(k))∣≤ϵ. \left|f\left(\boldsymbol{w}^{(k+1)}\right)-f\left(\boldsymbol{w}^{(k)}\right)\right| \leq \epsilon .

意思是「再迭代也降不了多少了」,適合 loss 已經磨到很平的情況。

3. 梯度本身的變化夠小

也可以看梯度向量前後兩步的差:

∣∇f(w(k+1))−∇f(w(k))∣≤ϵ. \left|\nabla f\left(\boldsymbol{w}^{(k+1)}\right)-\nabla f\left(\boldsymbol{w}^{(k)}\right)\right| \leq \epsilon .

梯度不再大幅改變,代表優化方向趨於穩定。

4. 達到最大迭代次數

最簡單也最常用:預先設好最大迭代次數(max iterations),到了就停。深度學習訓練通常用 epoch 數或 step 數來控制,本質上就是這一條——不管有沒有「數學上收斂」,時間到了就停,拿當前的 w\boldsymbol{w} 當結果。

口語小結

準則 白話意思 注意事項
梯度范數 ≤ϵ\leq \epsilon 「坡度夠平了」 非凸可能卡在鞍點
cost 變化 ≤ϵ\leq \epsilon 「loss 降不動了」 可能還沒到真正最優
梯度變化 ≤ϵ\leq \epsilon 「方向穩定了」 較少單獨使用
最大迭代次數 「時間到,收工」 深度學習最常用

實務上常常組合使用:例如「loss 連續 N 步變化小於 ϵ\epsilon 或 跑滿 100 epoch 就停」。kp4 會看到線搜索版梯度下降在內層調步長、外層檢查收斂的完整流程。

教授祕笈:什麼時候該宣布到站

同學,KP-2 把你蒙眼送上山,沿最陡反方向一步步走。問題立刻變成:什麼時候該宣布到站? 主線比喻就是火車進站——司機不能無限開下去,但也不能把「坡度暫時為零」誤認成終點站。收斂準則(convergence criteria)就是那套進站廣播。

先把任務講成一句人話

數值優化不會自己憑空知道已經站在谷底。它需要幾條「夠好了,可以停」的規矩:坡夠平、高度幾乎不變、方向不再大改,或單純時間到了收工。深度學習訓練設幾個 epoch 就停,本質上就是最後這一條。

鷹架式:先直覺,再符號

直覺:宣布到站,不是因為你看見谷底,而是因為儀表板說「差不多了」。 四種常用儀表如下。

第一種看梯度的 ℓ2\ell_{2} 范數夠不夠小。動機來自一階最優性條件:真正的局部最優點 w∗\boldsymbol{w}^{*} 處,坡度必須是零,

∥∇f(w∗)∥2=0, \left\|\nabla f\left(\boldsymbol{w}^{*}\right)\right\|_{2}=0,

所以實務上改成 ∥∇f(w(k+1))∥2≤ϵ\left\|\nabla f(\boldsymbol{w}^{(k+1)})\right\|_{2}\le\epsilon。第二種看連續兩步的高度差:∣f(w(k+1))−f(w(k))∣≤ϵ\lvert f(\boldsymbol{w}^{(k+1)})-f(\boldsymbol{w}^{(k)})\rvert\le\epsilon,意思是再走也降不了多少。第三種看梯度本身前後差夠不夠小,方向趨於穩定。第四種最土也最常用:預先設好最大迭代次數,到點就停,拿當前的 w\boldsymbol{w} 交差。

真的算一遍:兩套儀表會吵架

繼續用 f(w)=w2f(w)=w^{2},∇f=2w\nabla f=2w,取 η=0.25\eta=0.25、w(0)=1w^{(0)}=1、門檻 ϵ=0.05\epsilon=0.05:

kk w(k)w^{(k)} f(w)f(w) ∣∇f∣\lvert\nabla f\rvert ∣Δf∣\lvert\Delta f\rvert 梯度范數≤ϵ\le\epsilon? cost 變化≤ϵ\le\epsilon?
00 11 11 22 — 否 —
11 0.50.5 0.250.25 11 0.750.75 否 否
22 0.250.25 0.06250.0625 0.50.5 0.18750.1875 否 否
33 0.1250.125 0.0156250.015625 0.250.25 0.0468750.046875 否 是

第三步之後,cost 變化 0.046875≤0.050.046875\le 0.05,高度儀表已經喊「到站」;但梯度范數 0.250.25 還遠大於 0.050.05,坡度儀表說「繼續開」。同一班車,兩套廣播各講各的。

先留一個反轉

更麻煩的是:坡度儀表顯示零,你興奮地宣布抵達谷底——結果那可能只是鞍點(saddle point)。非凸地形上,鞍點的梯度也是零,但它是山口不是谷底:一邊上坡、一邊下坡。深度學習的損失地形鞍點多得很,只靠 ∥∇f∥2≤ϵ\lVert\nabla f\rVert_{2}\le\epsilon 停表,等於把「隧道口的平緩路面」當成終點站。

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

把進站換成「煎牛排」。你可以看中心溫度夠不夠(梯度范數)、連續兩分鐘上色幾乎不變(cost 變化)、火候方向穩了(梯度變化),或計時器響了就起鍋(最大迭代)。請你把上表的 ϵ\epsilon 改成 0.30.3,自己判斷「梯度范數」會在第幾步先亮綠燈——數字不同,判準結構相同。實務上常常組合使用:例如 loss 連續 NN 步變化小於 ϵ\epsilon,或 跑滿 100100 個 epoch 就停。KP-4 的線搜索會在內層調步長,外層仍用這套準則檢查收斂。

大家最容易在這裡搞混

第一個誤解:梯度為零等於找到全域最低點。錯,那只是一階必要條件;非凸時可能是鞍點,連局部最低都未必。第二個誤解:訓練一定要等到數學上「真正收斂」。深度學習幾乎從不這麼做,最常見的是預設 epoch/step 數到了就停。

跨知識點掛勾

這些準則接在 KP-2 的更新規則後面:會走,也要會停。後面隨機梯度下降的「看起來還在抖」更不能只看單步梯度范數。記住:儀表會吵架,所以實務常同時看好幾塊表。

換句話重述

宣布到站有四種廣播:坡夠平、高度幾乎不變、方向穩定、或時間到了收工;非凸時梯度為零可能只是鞍點,深度學習最常用的是最大迭代次數。

一句話收尾: 宣布到站看儀表,別把鞍點山口當成谷底終點站。