w∗∈arg⁡min⁡wL(w)\boldsymbol w^* \in \arg\min_{\boldsymbol w}\mathcal L(\boldsymbol w)

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

這一章在講什麼:優化才是訓練神經網路的引擎

還記得 Chap. 1 說過,任何機器學習演算法都可以拆成三個基本步驟嗎?這一章就專攻第三步——怎麼在一大堆可能的模型裡,找到最好的那一個:

  1. 提出假設類別(hypothesis class):先決定你要用什麼樣的模型家族,例如多層神經網路。
  2. 用損失函數排名(loss function):定義「猜錯多少要付多少代價」,讓好模型和壞模型有分數可比。
  3. 搜尋最佳假設(optimization / search):調整參數,把損失壓到最低——這就是本章的主角。

在深度學習裡,這個搜尋過程等於在一個高維、常常是非凸(non-convex)的損失地形上爬山(其實是下山)。概念上很簡單——最小化損失函數——但實務上超難:模型可能有好幾層、幾百萬個參數,地形坑坑洞洞,到處是局部最低點。

突破關鍵:反向傳播(backpropagation)

梯度下降這個概念本身不新,但多層網路一開始沒人知道怎麼算梯度:中間某一層的權重,到底怎麼影響最後的損失?反向傳播演算法解決了這個難題——它用鏈式法則(chain rule)一層一層往回遞推,高效算出整個網路所有參數的梯度。沒有 backprop,深度學習根本訓不起來。

一階 vs 二階:為什麼實務上選梯度下降

二階方法(例如 Newton 法)理論上局部收斂更快,但要算、還要反轉 Hessian 矩陣,在深度學習的規模下算力完全扛不住。而且實驗上還有個有趣現象:一階方法(尤其隨機版)常常找到比較平坦的局部最低點,泛化比較好;二階方法反而可能鑽進很尖的最低點,泛化較差——原因還在研究中,但實務上一階梯度下降就是訓練大規模神經網路的主力。

本章路線圖:先地基,再進階

跟著這張地圖走就不會迷路:

  1. §2 梯度下降基礎(含線搜索、最陡下降):先把「怎麼沿梯度更新參數」這套工具學紮實。
  2. §3 反向傳播(本章核心):backprop 怎麼把梯度下降 + 鏈式法則組合在一起——必讀、必懂。
  3. §4 隨機與 mini-batch 梯度下降:資料太大時怎麼近似梯度、加速訓練。
  4. §5 自適應學習率(AdaGrad、RMSProp、Adam):學習率不用手調那麼痛苦。
  5. §6 Sharpness-Aware Minimization(SAM):進階技巧,找更平坦的最小值。
  6. §7 收斂理論:過參數化網路下的優化行為,給想挖理論的人。

口語小結:訓練神經網路 = 最小化損失;最小化損失 = 優化問題;backprop 讓多層網路能算梯度;一階方法在實務上贏了二階方法。 接下來 kp2 就從最基礎的梯度下降公式講起。

教授祕笈:下山找谷底——本章優化地圖

同學,Chap. 1 把機器學習拆成三步:選菜單、定打分、再搜尋。這一章專攻第三步。主線比喻從頭到尾只有一個:人生下山找谷底。訓練神經網路,不是發明一座新山,而是在損失地形上一直往低處走,直到腳下夠平、夠低。

先把任務講成一句人話

假設類別選好了,損失函數也定了,剩下的麻煩是:參數可能有幾百萬個,地形又高維又非凸(到處是局部低谷,不是一個漂亮的大碗)。你看不見整座山,只能摸腳下的坡。概念上「把損失壓到最低」很單純,實務上這座山坑坑洞洞——這就是優化,也是本章的引擎。

鷹架式:先直覺,再符號

直覺就一句:訓練等於最小化損失,最小化損失就是優化問題。 為什麼還需要反向傳播(backpropagation)?因為多層網路中間某一層的權重,到底怎麼影響最後的損失,早期沒人算得動。Backprop 用鏈式法則一層一層往回推,才讓你「摸得到坡度」。沒有它,深度學習根本訓不起來。

梯度下降是一階方法,只看坡度。Newton 法這種二階方法還要看曲率,理論上局部收斂更快,但要算、還要反轉 Hessian 矩陣。符號上,一階只要梯度 ∇f(w)\nabla f(\boldsymbol{w}),二階還要

H=∇2f(w). H=\nabla^{2} f(\boldsymbol{w}).

Hessian 是「坡度怎麼再變化」的那張大表。

真的算一遍:一階跟二階差幾顆星球

假設每個數字存 88 bytes。梯度是 nn 個數字,Hessian 是 n×nn\times n 個數字:

參數個數 nn 梯度要存 Hessian 要存 Hessian 記憶體(×8\times 8 bytes)
100100 100100 10,00010{,}000 8080 KB
10,00010{,}000 10,00010{,}000 10810^{8} 800800 MB
1,000,0001{,}000{,}000 10610^{6} 101210^{12} 88 TB

一百萬參數在深度學習裡還算小的。梯度只要約 88 MB,Hessian 卻要 88 TB——你的顯卡直接罷工。這就是為什麼實務上選一階、放棄二階。

先留一個反轉

你大概會覺得:二階比較聰明,收斂比較快,應該才是主角。反轉在這裡:算力扛不住只是一半;實驗上,一階隨機方法常常找到比較平坦的谷底,泛化比較好;二階反而可能鑽進很尖的最低點,新資料上一摔就碎。原因還在研究中,但實務結論很清楚:大規模神經網路的主力是一階梯度下降。

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

把「下山」換成「在陌生城市找最便宜的晚餐」。你沒有全市地圖(高維非凸),只能問路人「這條街往哪邊比較便宜」(梯度)。你不會先做一份全市房價曲率表(Hessian)再出門——那張表印出來比城市還大。Chap. 1 的餐廳三步驟,現在輪到廚房真的開火:KP-2 會把「沿坡反方向走一步」寫成公式。

大家最容易在這裡搞混

第一個誤解:以為 backprop 是一種新的優化器。錯,它是用鏈式法則算梯度的演算法,真正下山的還是梯度下降那一套。第二個誤解:以為二階方法永遠比較優,或以為它找不到局部最低點。它找得到,只是代價太高,而且可能鑽進尖谷。

跨知識點掛勾

本章地圖請記在心裡:§2 梯度下降地基(KP-2 到 KP-4)、§3 反向傳播是核心、§4 隨機與 mini-batch、§5 自適應學習率、§6 SAM 找平坦谷底、§7 收斂理論。地基加核心是必讀;後面是進階。下一站 KP-2 就從最基礎的更新公式講起。

換句話重述

訓練神經網路等於最小化損失;最小化損失等於優化;backprop 讓多層網路摸得到坡;一階方法在實務上贏了二階方法。

一句話收尾: 人生下山找谷底——摸坡靠 backprop,走路靠一階,尖谷別鑽。