MODULE CALC 3 — GRADIENTS & EXTREMA

多變量:梯度與極值

這是微積分這一層的第三關(共五關), 也是 最佳化 01最佳化 03 最佳化那一卷的補課包
導數關問的是「一條曲線在這一點斜多少」; 真實問題有兩個以上的變數,於是問題變成「一座山在這一點,往哪個方向斜、斜多少」 —— 答案是一個向量,叫梯度最佳化 01 ⑤ 那支橘色箭頭就是它。
這一關是微積分 03,不算在主線十六關裡。唯一的前置是 導數關 ② 差商:偏導數就是「把其他變數凍住」之後的一維導數。

① 這關在解什麼問題:先說梯度拿來幹嘛

導數關給了你什麼 導數關f′(x) 只吃一個變數: 一條曲線、一個坡度。但 最佳化 01 關的地形兩個變數、 最佳化 03 關的權重更多。
這一關把「一條曲線的斜率」升維成「一座山的斜率」—— 那就是最佳化 01 ⑤ 那支橘色箭頭 ∇f

先講它能幹嘛,再講它是什麼

多變量微分在這套教材裡只為了三件事存在,而三件事都在最佳化那一卷:

  • 知道往哪邊走會更低−∇f 就是下坡最陡的方向 —— 這就是梯度下降最佳化 01 ⑤⑥), 也是機器學習訓練時每一步在做的事。
  • 知道什麼時候停∇f = 0(一階條件)+ 二階看凹凸)——「停下來的地方是谷底,不是山頂或鞍點」。 最佳化 03 ⑥ 的最低風險組合就是這樣確定的。
  • 知道約束怎麼咬住你∇f 垂直於等高線,所以 最佳化 02 ④ 的「相切」才能翻譯成 ∇f ∥ ∇g,再變成乘子 λ

三件事的共同形狀是「在一個多維地形上找最低點」。 這一關把「地形的坡度」變成一個向量、把「谷底」變成兩條可以動手解的方程式。

梯度與極值在主線十六關的哪些地方已經被用掉了

在哪用到什麼你需要哪一節
最佳化 01 ⑤ 偏導數 ∂f/∂x(只有一句「把 y 當常數的斜率」)、 梯度 ∇f∇f(v) = A(v − c) ② 偏導與梯度
最佳化 01 ④ 凸性(碗 vs 蛋盤)、Hessian ∇²f 這個字 ·
最佳化 01 ⑥ 梯度下降的收斂條件 α < 2/λmax(A) (為什麼是特徵值)
最佳化 02 ④ 相切 ⇔ 法向量平行 ⇔ ∇f ∥ ∇g (∇ 垂直於等高線)
最佳化 03 ⑥ · ⑦ 「把導數設 0 直接解出最低點」、風險等高線的法向量 2Cw ·

五個位置全部集中在最佳化那一卷(最佳化 01–03)。 所以如果你不是為了最佳化來的,這一關可以先放著 —— 導數關積分關跟它沒有依賴。

本頁符號對照表

符號唸法它問的是什麼哪一節
∂f/∂xpartial f partial x 偏導數:只動 x、其他變數當常數時的斜率。 是圓體的 d 最佳化 01 ⑤ 用過
∇fnabla f(或 del f) 梯度:把所有偏導數擺成一個向量。它有方向,所以是向量不是數字 ;最佳化 01 ⑤ 用過
f″f double prime 二階導數:斜率自己的斜率。管的是「彎向哪邊」
∇²fHessian(黑塞矩陣) 二階導數的多維版:四個二階偏導數排成 2×2 最佳化 01 ④ 用過
v*v star 星號代表「答案」、最優解。∇f(v*) = 0 是它的必要條件
正定positive definite 「每個方向都往上彎」。兩個特徵值都是正的就是它 機率統計 05 ② 用過

h → 0f′ 的定義在 導數關 ②(這一關預設你讀過那一節); 積分關,這一頁不會用到。

微積分這一層有五關,你在第 03 關

五關沒有先後綁定(除了這一關與規則關預設你讀過導數關)。卡在哪一關就讀對應那一關:

它回答什麼誰在用
導數「這一點斜多少」最佳化 01 的梯度、最佳化 02 的影子價格、最佳化 03 的「導數設 0」、基礎 01 量過的 eˣ 斜率
積分「這一段總共多少」機率統計 02 的面積 = 機率、機率統計 05 的尾巴、機率統計 01 的臨界值、期望值
多變量(你在這裡)「兩個以上的變數怎麼斜」最佳化 01 ⑤ 的 ∇f、最佳化 01 ④ 的凸性、最佳化 03 ⑦ 的 2Cw、最佳化 02 的相切
規則「不算極限,直接寫下導數」02 ⑤ 的 2x、最佳化 02 ② 的 2(x−2)、機率統計 05 ⑤ 的 λe−λt、反向傳播
應用「這些工具在 ML 與交易的哪裡」選擇權 Delta / Gamma、softmax 與交叉熵、log 報酬的期望
這一關的全部內容,一句話

一次只動一個變數去量斜率(偏導數),把答案擺成向量(梯度); 梯度歸零的地方是候選答案,彎的方向決定它是谷底還是山頂。

前半句是 ,後半句是 。 全部都是 導數關 ② 那一條差商,只是套在不同的方向上。

② 偏導數與梯度:兩個以上的變數怎麼量斜率

導數關給了你什麼 導數關 ②f′(x) 只吃一個變數:一條曲線、一個坡度。 但 最佳化 01 關的地形兩個變數 (xy 決定一個高度), 最佳化 03 關的權重更多。 問題來了:一座山「在某一點的坡度」是多少?這句話本身不完整 —— 你得先說「往哪個方向」。

偏導數:一次只動一個變數

最省事的辦法是一次只問一個方向:先只往 x 走、y 完全不動,那就退回成導數關 ② 的一維問題。

∂f/∂x (x, y) = limh→0 ( f(x + h, y) − f(x, y) ) / h —— 唸 partial(偏),是圓體的 d。用它就是在宣告「還有別的變數,但這次不動它們」。
注意第二個位置的 y兩邊都是同一個 y,一點都沒變。
整條式子讀作:「只把 x 推一小步時,f 變多快」。 這就是 最佳化 01 ⑤ 那句「把 y 當常數的斜率」的完整版。
∂f/∂y 反過來:只推 y,x 當常數。

算法因此完全不用新學:把其他變數當成數字,然後照導數關 ② 那樣微分。 例如 f(x, y) = 3x² + 5xy

梯度:把偏導數擺成一個向量

∇f(x, y) = ( ∂f/∂x , ∂f/∂y ) —— 唸 nabla 或 del。∇f 讀作「f 的梯度」。
它是一個向量,不是一個數字 —— 因為「往哪個方向」這件事本身就需要一個向量來回答。
兩個必記的性質(最佳化 01 ⑤ 現場驗過): ∇f 指向上坡最陡的方向,所以下坡走 −∇f ∇f 永遠垂直於等高線

現場算一次:∇(½vᵀAv) = Av

這條式子在 最佳化 01 ⑤最佳化 03 ⑦直接拿去用(最佳化 03 那支 2Cw 的箭頭就是它)。這裡把它算出來一次,用的只有上面那兩條偏導數。

A = [[a, b], [b, c]]對稱,共變異數矩陣一定對稱), v = (x, y)。先把 ½vᵀAv 攤成一般的兩變數函數:

f(x, y) = ½ vᵀAv = ½ ( a·x² + 2b·xy + c·y² ) 怎麼來的:Av = (ax + by, bx + cy),再跟 v內積
vᵀAv = x(ax + by) + y(bx + cy) = ax² + bxy + bxy + cy² = ax² + 2bxy + cy²
中間那兩個 bxy 之所以能合併成 2bxy就是因為 A 對稱(兩個 b 一樣)。

接著逐座標微分,每一步都用上面那條「其他變數當常數」:

∂f/∂x = ½ ( 2a·x + 2b·y ) = a·x + b·y
∂f/∂y = ½ ( 2b·x + 2c·y ) = b·x + c·y 第一行:a·x² 對 x 微分是 2a·x導數關 ②2x 乘上常數 a); 2b·xy 對 x 微分是 2b·yc·y² 完全沒有 x,是常數,微分是 0
第二行同理,換成對 y 微分。
那個 ½ 的用途現在看出來了:它剛好把微分生出來的 2 抵掉,式子才會這麼乾淨。

最後把兩個結果擺回向量:

∇f(v) = ( a·x + b·y , b·x + c·y ) = Av 右邊那個向量,逐格就是 Av 的定義(矩陣乘向量:第一列點 v、第二列點 v)。
所以:∇(½vᵀAv) = Av沒有任何一步用到「矩陣微分公式」,全部是兩次一維微分。

兩個立刻可用的推論:

這張圖在幹嘛
你會看到什麼:紫色橢圓=等高線(同一圈上高度一樣, 就是 最佳化 01 ② 那張地形圖)、 藍點=你拖的位置 v橘箭頭∇f(箭頭長度按比例縮小畫過,不然會衝出畫面)、 兩支綠色細箭頭=把梯度拆成 ∂f/∂x∂f/∂y 兩個分量。
你可以動什麼:拖藍點;兩顆按鈕換 A (圓碗 / 拉長歪斜的碗)。
要看出什麼:讀數盤有兩排數字:左邊是「用中央差分量出來的」偏導數 (頁面真的把 x 推 0.001 再算一次 f),右邊是「代進 Av 算出來的」兩排永遠對得上,相對誤差是 10−13 級的浮點殘渣 —— 上面那三行代數不是我宣告的,是頁面現場量的。

等高線 f = 常數 ∇f(上坡最陡) 兩個偏導數分量 你站的位置 v
矩陣 A
現在這一格在說

順帶一個名字:把兩個偏導數再各微分一次,會得到四個數字,排成 2×2 矩陣 —— 那就是 最佳化 01 ④ 用過的 Hessian ∇²f。對 ½vᵀAv 來說它剛好就是 A 本人 (因為 ∇f = Av 對 v 再微分一次就是 A)。凹凸是它管的,④ 節接手。

③ 極值:一階條件找候選,二階條件分辨谷底與山頂

上一節與導數關給了你什麼 導數關 ②:一維的斜率 f′。② 節:多變數版的 ∇f最佳化 01 ⑤ 已經讓你看過「把藍點拖到谷底,梯度箭頭縮到消失」。 這一節把那個畫面翻譯成兩條可以動手解的方程式,並補上最佳化 01 關沒有的一維代數版 ——最佳化 03 ⑥ 那句「拋物線把導數設 0 直接解出最低點」就是靠它。

一階條件:谷底的斜率是 0

f′(x*) = 0 (一維)  ∇f(v*) = 0 (多維) x* / v* —— 星號慣例上代表「答案」、最優解。
白話:站在最低點,往哪邊踏都不會更低,所以坡度只能是 0。
滿足這條式子的點叫臨界點(critical point)。它是「候選人」,不是「當選人」。

為什麼只是候選人?因為 f′ = 0 只說「這裡是平的」,而平的地方有三種: 谷底山頂、以及暫時平一下又繼續走(鞍點 / 反曲點)。 最佳化 01 ⑤ 那個「馬鞍點」選項給的就是第三種。

二階條件:看它彎向哪一邊

要分辨這三種,就問斜率自己的斜率

f″(x) = ( f′ )′ (x) ,量法:( f(x+h) − 2f(x) + f(x−h) ) / h² f″ —— 唸「f double prime」,叫二階導數。就是「把 f′ 再微分一次」。
右邊那條是它的中央差分量法:分子是「左右兩邊的高度和,減掉中間那點的兩倍」。
直覺:如果曲線是直的,左右兩點的平均剛好等於中間那點,分子=0; 分子是正的就代表兩側翹起來(碗)、負的代表兩側垂下去(拱)
在臨界點 f′(x*) = 0那是什麼幾何長相
f″(x*) > 0局部最小(谷底)向上彎,碗形
f″(x*) < 0局部最大(山頂)向下彎,拱形
f″(x*) = 0還不知道,要另外查可能是反曲點

多維版本把 f″ > 0 換成「Hessian 是正定的」(完整版在 )—— 也就是 最佳化 01 ④ 那句「所有方向都往上彎」。 而所謂凸函數,就是「f″ ≥ 0 到處成立」, 這保證了臨界點只有一個、而且它就是全域最低點 —— 最佳化 01 關那句「往下走一定到得了谷底」的來歷。

這兩張圖在幹嘛
你會看到什麼:上下兩張圖共用同一條橫軸。 上圖是 f(x) 本人(一條有兩個谷底的曲線)加上你所在位置的 桃紅切線; 下圖是 f′(x) 這條曲線(也就是「上圖每一點的斜率」畫成一條線), 綠點停在 (x, f′(x))。 三條灰虛線標出 f′ = 0 的三個位置。
你可以動什麼:x 滑桿;三顆按鈕直接跳到那三個臨界點。
要看出什麼: 上圖切線變水平的時候,下圖綠點剛好穿過 0 —— 這兩件事是同一件事。 三個臨界點都滿足 f′ = 0, 但 f″ 一個是負的(中間那個是山頂)、兩個是正的(谷底)。 光看一階條件分不出來,這就是需要二階的理由。

f(x)(上圖) 切線 f′(x)(下圖) 你所在的 x
位置 x
現在這一格在說

這一節在工程上的兩個用途
  • 解得出來的時候就直接解最佳化 03 ⑥ 的目標是拋物線, f′(x) = 0 是一條一次方程式,一行就解完,不需要任何迭代。
  • 解不出來的時候就往下走:那就是梯度下降 —— 每一步走 −∇f 那支反向箭頭),走到 ∇f ≈ 0 就停。 最佳化 01 ⑥ 那條收斂條件 α < 2/λ_max 管的是「步伐多大才不會震盪出去」。

還有第三種情況:谷底根本在圍欄外面,此時 ∇f = 0 直接失效 —— 那是 最佳化 02 關整關在處理的事。

④ 二階條件的多維版:Hessian 與「正定」

上一節給了你什麼 ③ 節的一維版很乾淨:f′ = 0 找候選、f″ 的正負分辨谷底與山頂。 多維的一階條件也很乾淨(∇f = 0,② 節那支箭頭縮到消失)。 但「二階」在多維會變成一個矩陣 —— 因為「彎」這件事在每個方向都可以不一樣。 這一節就把那個矩陣講完,它是 最佳化 01 ④ 那個「碗 vs 蛋盤」的代數版。

四個二階偏導數排成一個 2×2

∇²f = [[ ∂²f/∂x² , ∂²f/∂x∂y ] , [ ∂²f/∂y∂x , ∂²f/∂y² ]] ∂²f/∂x² —— 「只動 x」量到的斜率,再對 x 微分一次:沿 x 方向彎多少。
∂²f/∂x∂y —— 先對 y 再對 x:「往 y 走會不會改變往 x 的坡度」。 這一格就是「兩個方向會互相影響」的量。
這個矩陣叫 Hessian最佳化 01 ④ 出現過這個字), 寫成 ∇²fH
它一定對稱∂²f/∂x∂y = ∂²f/∂y∂x,只要函數夠平滑)—— 所以它跟 03 關的共變異數矩陣 C 一樣, 可以用 04 關那把刀去拆。

本關 ② 節那個 f(v) = ½vᵀAv 的 Hessian 特別好算: ② 節算出 ∇f = Av,也就是 (∂f/∂x, ∂f/∂y) = (a·x + b·y, b·x + c·y)。再各微分一次:

∂²f/∂x² = a · ∂²f/∂x∂y = b · ∂²f/∂y² = c ⟹ ∇²f = A 每一格都是「對線性函數微分」,結果就是那個係數 —— 常數,跟位置無關
所以二次型的 Hessian 就是 A 本人,而且整片地形每一點都一樣彎 (這正是「二次型的等高線是同心橢圓」的原因)。

判斷是不是谷底:兩個特徵值都要正

一維只要問「f″ 是正還是負」;多維要問「每一個方向都往上彎嗎」。 這個性質有名字,叫正定

Hessian 的樣子那個臨界點是什麼幾何長相最佳化 01 關怎麼叫它
兩個特徵值都正(正定)局部最小(谷底)各方向都往上彎的碗 「碗」/ 凸
兩個特徵值都負(負定)局部最大(山頂)倒過來的碗
一正一負鞍點(都不是)馬鞍:一個方向往上、另一個往下 最佳化 01 ⑤ 的「馬鞍點」選項
有特徵值等於 0還不知道,要另外查某個方向是平的水溝 退化(秩不滿

為什麼是特徵值?因為 04 關說過: 對稱矩陣的特徵向量是它的主軸,特徵值是沿那根軸的伸縮量。 把地形沿主軸切一刀,切出來的就是一條一維拋物線,而它的 f″ 剛好就是那根軸的特徵值。 所以「每個方向都往上彎」=「每個特徵值都正」。

2×2 的快速判別法:行列式與跡

不用真的去解特徵值也能判斷 —— 因為 兩個特徵值的乘積是行列式、和是跡

det = λ₁·λ₂ · trace = λ₁ + λ₂ det > 0 且 trace > 0 ⟹ 兩個都正 ⟹ 谷底(正定)。
det > 0 且 trace < 0 ⟹ 兩個都負 ⟹ 山頂
det < 0 ⟹ 一正一負(乘積是負的)⟹ 鞍點
det = 0 ⟹ 有一個是 0 ⟹ 退化,這條判別法失效。

把 ② 節那兩個矩陣代進去驗一次(這兩個就是那張圖上的兩顆按鈕):

Adettrace結論圖上看到的
[[1, 0], [0, 1]](圓碗) 12正定 → 谷底 同心圓等高線,原點是最低點
[[2, 0.8], [0.8, 1.4]](拉長歪斜) 2.163.4正定 → 谷底 歪斜橢圓,原點還是最低點
[[1, 0], [0, −1]](馬鞍) −10鞍點 最佳化 01 ⑤ 那個馬鞍選項:梯度是 0 但不是谷底

第二列的算法:det = 2 × 1.4 − 0.8 × 0.8 = 2.8 − 0.64 = 2.16trace = 2 + 1.4 = 3.4。兩個都正 —— 所以 ② 節那顆歪斜的碗真的是碗,你把 v 拖到任何地方都會被梯度指回原點附近。

兩個順手解決的懸案
  • 最佳化 01 ⑥ 那條收斂條件為什麼是特徵值:梯度下降的步伐 α < 2/λmax —— 因為最彎的那個方向決定了你多容易走過頭, 而「最彎」就是最大的特徵值。步伐超過它,沿那根主軸就會來回震盪放大。
  • 最佳化 03 關的 C 為什麼一定是碗:共變異數矩陣 永遠是半正定的(任何方向的變異數都 ≥ 0), 所以 wᵀCw 這個目標的 Hessian(=2C) 不可能出現一正一負 —— 風險地形沒有鞍點,往下走一定到得了谷底。 這就是 最佳化 01 ④ 那句話的來歷。
刻意不教的一段

Hessian 還有一個大用途:牛頓法(用二階資訊決定步伐大小與方向,收斂比梯度下降快得多), 以及二階泰勒展開(把地形在一點附近近似成一個二次碗)。

這套教材沒有任何一處需要它們:最佳化 01–03 關要嘛把導數設 0 直接解、要嘛用梯度下降。 所以這一頁只給你「Hessian 是什麼、怎麼用它判斷谷底」, 不推導牛頓法 —— 需要的時候,你已經有名字可以去查了。

⑤ 這關回答了什麼

為什麼最佳化 01 關非要用「梯度」,不能只講斜率?

因為最佳化 01 關的地形有兩個自變數,「這一點的斜率」這句話沒有唯一答案 —— 往東走跟往北走的坡度不一樣。所以要先問「只動 x 的斜率」與「只動 y 的斜率」 ( 的偏導數),再把兩個答案擺成一個向量,那就是梯度。

擺成向量之後多拿到兩件事,這是純粹的紅利:指向上坡最陡的方向, 所以下坡走 −∇f(梯度下降);垂直於等高線, 所以 最佳化 02 ④「相切」才能翻譯成 「∇f∇g 平行」。

偏導數為什麼可以「把其他變數當常數」?這樣不是漏掉東西了嗎?

沒有漏,因為你問的問題本來就只動一個變數。∂f/∂x 的定義是 (f(x+h, y) − f(x, y)) / h —— 兩邊的 y 是同一個 y,所以只要 y 沒動,它就只是一個數字。

「其他變數也在動」的情況要用兩個偏導數合起來:往任意方向 u 走的坡度是 ∇f · u(梯度跟方向做 內積)。這就是「梯度垂直於等高線」的證明: 沿等高線走高度不變,所以那個內積是 0(最佳化 01 ⑤ 現場驗過)。

∇(½vᵀAv) = Av 是怎麼算出來的?最佳化 03 關那支 2Cw 又是什麼?

三步,全部在 ½vᵀAv 攤成 ½(ax² + 2bxy + cy²)(能合併成 2bxy 是因為 A 對稱); 逐座標微分,得到 ax + bybx + cy 那兩個數字擺回向量,剛好就是 Av 的定義。

沒有 ½ 的版本就多一個 2:∇(vᵀAv) = 2Av最佳化 03 ⑦ 的目標是 wᵀCw(風險), 所以它的等高線法向量是 2Cw —— 那支箭頭就是這麼來的

為什麼「梯度 = 0」還不夠?怎麼分辨谷底、山頂與鞍點?

因為 ∇f = 0 只說「這裡是平的」,而平的地方有三種:谷底、山頂、鞍點。 最佳化 01 ⑤ 那個「馬鞍點」選項就是第三種。

分辨要看二階:一維看 f″ 的正負(), 多維看 Hessian 的特徵值)—— 都正是谷底、都負是山頂、一正一負是鞍點。 2×2 有捷徑:det > 0 且 trace > 0 就是谷底det < 0 就是鞍點

「凸」跟這一關的二階條件是什麼關係?

凸就是「二階條件到處成立」。一維:f″ ≥ 0 在整個定義域都成立; 多維:Hessian 到處半正定。

它買到的東西很值錢:臨界點只有一個,而且它就是全域最低點 —— 所以「往下走一定到得了谷底」(最佳化 01 ④ 那句話)。 而最佳化 03 關的風險 wᵀCw 必然凸,因為 共變異數矩陣半正定(任何方向的變異數都 ≥ 0)。

這一關跟主線十六關、跟另外四關的關係是什麼?

對主線十六關: 那張表列了五個位置,全部集中在最佳化 01–03 最佳化。 所以這一關的讀者幾乎都是「卡在最佳化 01 ⑤ 的梯度」或「想知道最佳化 03 ⑦ 那支 2Cw 哪來的」。

對另外四關:導數關斜率與變化率)是這一關的前置 —— 偏導數就是「把其他變數凍住之後的一維導數」,定義完全一樣。 積分關面積與累積)跟這一關沒有依賴, 兩邊可以隨便先讀哪一關。 規則關微分規則與鏈式法則)給的是「凍住其他變數之後」 要套的那幾條規則,而它的 ④ 節說明了最佳化 01 關那支梯度在真實網路裡是誰算的(反向傳播)。 應用關ML 與交易)把二階導數換個名字叫 Gamma。

從這裡去哪裡

你是為了最佳化 01 關來的:最佳化 01 ⑤ 重讀那張梯度圖 —— 現在讀數盤裡的 ∂f/∂x∇f · t̂ = 0 都有來歷了, 那張圖會變成「驗證」而不是「宣告」。

你是為了 14 / 最佳化 03 關來的:最佳化 02 ④∇f ∥ ∇g 靠的是「梯度垂直於等高線」(); 最佳化 03 ⑦2Cw 靠的是 ∇(vᵀAv) = 2Av(同一節)。

你還沒讀導數關:導數關 ② —— 這一關每一個「量斜率」的動作都踩在那一節的差商上。

你是為了機器學習來的:先去 規則關 ④ (梯度是誰算出來的)再看 應用關 ③(損失函數長什麼樣)。