完整講解與原文對照 / Full explanation and source comparison
線搜索:每一步自動找合適的步長
式 (3) 的理想步長是 ,但 常常未知。線搜索(line search) 的做法是:每一步動態調整步長 ,直到找到能讓 loss 下降的步長。
流程很直覺(Algorithm 1):
- 每輪迭代從初始步長 開始。
- 檢查線搜索條件(式 (5))——更新後 loss 是否下降:
- 若不滿足,步長減半:,再檢查。
- 重複直到式 (5) 成立,然後用這個 做更新:。
為什麼減半到夠小就一定會成功?因為當 足夠小時(式 (6)):
就能保證下降。線搜索會在內層迴圈反覆縮步長,直到找到滿足條件的 ——所以每個梯度下降迭代裡面,還包了一個調步長的內層迴圈。
進階線搜索:Armijo 與 Wolfe
上面這種「不滿足就減半」是最簡單的 backtracking 策略。更進階的方法包括:
- Armijo 規則(又稱 backtracking line search):用一個更精確的「充分下降」條件來判斷步長夠不夠。
- Wolfe 條件:同時要求 loss 下降且步長不會太小(避免步長縮到幾乎不動)。
這些在傳統優化教科書裡很常見,深度學習實務較少用固定學習率或自適應方法代替。
最陡下降:沿梯度方向走最遠
最陡下降(steepest descent) 和梯度下降方向相同(都是 ),但步長策略不同——不是固定 ,也不是減半試探,而是每一步解一個一維優化,找沿梯度方向能讓 降最多的步長(式 (7)):
找到最優步長 後,更新方式和梯度下降一樣:
白話對比:
| 方法 | 步長怎麼定 | 特色 |
|---|---|---|
| 固定學習率 GD | 固定 | 最簡單,深度學習最常用 |
| 線搜索 GD | 從 開始,不滿足就減半 | 保證每步下降,但有內層迴圈 |
| 最陡下降 | 每步解一維 min(式 (7)) | 每步下降最多,但每步要多算 |
口語復盤
線搜索像「試走看,走太大就縮半步再試」;最陡下降像「沿這個方向精算最遠能走多遠」。兩者都比固定 聰明,但每步計算成本更高——深度學習資料量大、參數多,所以寧可固定或自適應學習率,也不常做完整線搜索。理解它們有助於搞懂「步長選擇」這個優化的基本功。
教授祕笈:步子太大就對半砍
同學,KP-2 說理想步長是 ,可是 常常不知道;KP-3 又說走了要會停。今天解決中間那一截:步子太大,一腳跨過谷底,怎麼辦? 主線比喻是同一句——對半砍。試走;跳過頭就步長減半,再試。這叫線搜索(line search)。
先把任務講成一句人話
固定學習率像規定「每步永遠跨一公尺」,容易不是跨過谷底就是挪得像蝸牛。線搜索改成:這一腳先當自己很勇,從 起步;只要落地後高度沒降,就把步子砍成一半,直到這一腳確實在下山。
鷹架式:先直覺,再符號
直覺:走太大就對半砍,砍到這一步真的比較低。 為什麼保證砍得夠小就會成功?因為當 小於 ,理論保證下降。符號上場。每輪從 開始,檢查線搜索條件式 (5)——更新後 loss 必須下降:
不滿足就 ,再檢查。為什麼減半到夠小一定行?因為式 (6) 說,只要
就能保證下降。所以每個梯度下降迭代裡面,還包了一個調步長的內層迴圈。更講究的有 Armijo 規則(充分下降,不只要「有降」)和 Wolfe 條件(還要求步長別縮到幾乎不動)。傳統優化常用;深度學習較少,多用固定或自適應學習率。
最陡下降(steepest descent) 方向仍是 ,但步長不是砍半試探,而是每步解一個一維優化,找沿這個方向能讓 降最多的 ,這是式 (7):
找到後更新仍是 。
真的算一遍: 跨過谷底,砍半才踩中
讓 ,,則 、。此函數 ,所以 。從 試起:
| 嘗試 | 新位置 | 新高度 | 式 (5) ? | 下一步 | |
|---|---|---|---|---|---|
| 第 1 次 | 否( 不成立) | 對半砍 | |||
| 第 2 次 | 是 | 接受,更新 |
剛好跳到山谷對面同一高度,白走;砍半後 精準踩在谷底。式 (6) 也對上了:失敗的 大於 ,成功的 剛好是理想步長。若改做最陡下降,式 (7) 要最小化 ,令 得 ,同一答案——只是它一次解出來,不靠砍半試探。
先留一個反轉
線搜索保證每步下降、最陡下降保證這條線上降最多,聽起來完勝固定 。反轉在這裡:每一步都多包一層迴圈(或解一次一維 min),深度學習資料量大、參數多,這個內層貴到不划算。所以實務寧可固定學習率或用 Adam 這類自適應方法,也不常做完整線搜索。聰明,但太貴。
換個場景,自己找出同一條路
把對半砍換成「過馬路試探車距」:先當自己能一次衝過去();發現會撞,就把距離砍半再看。請你用 、(此時 、)自己做一次減半表——先試 ,不降就砍,直到式 (5) 成立。結構與上表相同,只是谷底在 。
大家最容易在這裡搞混
第一個誤解:以為線搜索、最陡下降跟梯度下降走的方向不同。方向都是 ,差在步長怎麼定。第二個誤解:以為不滿足式 (5) 該把 加倍。講義的 backtracking 是減半 ,把步子砍小,不是拉大。
跨知識點掛勾
式 (5)(6) 是在救 KP-2 裡「 未知、固定 可能拍皮球」的問題;外層什麼時候停,仍用 KP-3 的進站儀表。後面自適應學習率,精神仍是「步長不該永遠同一號」,只是換了更便宜的調法。
換句話重述
線搜索從 試起,不降就對半砍,直到式 (5) 成立;理論靠式 (6) 的 。最陡下降用式 (7) 一次找這條線上最好的步長。兩者都聰明,但內層太貴,深度學習較少用。
一句話收尾: 步子太大會跳過谷底——不降就對半砍,砍到這一腳真的在下山。