動機
最小二乘把數據擬合化為最佳化問題。正規方程直接描述最優參數,梯度下降則由一個初始估計出發,逐步接近答案。兩種觀點應當互相配合:方程指出目的地,迭代說明每一步如何改變目前的誤差。
二次目標函數的梯度是參數的仿射函數,曲率在各點相同,而特徵向量可以把更新拆成互不干擾的一維遞推。因此,我們能精確算出哪些步長令誤差縮小、哪些令誤差來回擺動,以及哪些令迭代發散。這也解釋了為何把損失乘上一個常數,雖然不會改變擬合結果,卻會改變合適的學習率。
本節把參數向量及梯度都寫成列向量。「最陡」是相對於歐幾里得長度而言,背後仍是投影與主成分分析所用的內積幾何。我們會直接使用實對稱矩陣的譜分解,重點放在特徵值如何控制更新,而不是重新介紹求特徵向量的算法。
定義
定義
二次目標函數與梯度 設參數向量 θ ∈ R d \theta\in\mathbb R^d θ ∈ R d ,考慮
f ( θ ) = 1 2 θ ⊤ Q θ − b ⊤ θ + c , Q = Q ⊤ . f(\theta)=\frac12\theta^\top Q\theta-b^\top\theta+c,
\qquad Q=Q^\top. f ( θ ) = 2 1 θ ⊤ Qθ − b ⊤ θ + c , Q = Q ⊤ . 其中 Q Q Q 是實 d × d d\times d d × d 矩陣,b ∈ R d b\in\mathbb R^d b ∈ R d ,c c c 是純量。梯度及 Hessian 矩陣分別為
∇ f ( θ ) = Q θ − b , ∇ 2 f ( θ ) = Q . \nabla f(\theta)=Q\theta-b,\qquad \nabla^2 f(\theta)=Q. ∇ f ( θ ) = Qθ − b , ∇ 2 f ( θ ) = Q . 若每個非零向量 z z z 都滿足 z ⊤ Q z > 0 z^\top Qz>0 z ⊤ Q z > 0 ,便稱 Q Q Q 為正定矩陣。此時全部特徵值均為正數,記
μ = λ min ( Q ) \mu=\lambda_{\min}(Q) μ = λ m i n ( Q ) 、L = λ max ( Q ) L=\lambda_{\max}(Q) L = λ m a x ( Q ) 。
把 θ \theta θ 改成 θ + h \theta+h θ + h ,二次式中的兩項交叉項因為 Q Q Q 對稱而相等。相減後,關於 h h h 的一次項是 h ⊤ ( Q θ − b ) h^\top(Q\theta-b) h ⊤ ( Qθ − b ) ,餘項是 h ⊤ Q h / 2 h^\top Qh/2 h ⊤ Q h /2 。目標函數前面的 1 / 2 1/2 1/2 正好抵消平方微分帶來的因子 2 2 2 。
定義
固定步長的梯度下降 選取初始參數 θ 0 \theta_0 θ 0 與正步長 η > 0 \eta>0 η > 0 ,依次計算
θ k + 1 = θ k − η ∇ f ( θ k ) = θ k − η ( Q θ k − b ) , k = 0 , 1 , 2 , … . \theta_{k+1}=\theta_k-\eta\nabla f(\theta_k)
=\theta_k-\eta(Q\theta_k-b),
\qquad k=0,1,2,\ldots. θ k + 1 = θ k − η ∇ f ( θ k ) = θ k − η ( Q θ k − b ) , k = 0 , 1 , 2 , … . 每一步先在目前的向量 θ k \theta_k θ k 計算完整梯度,再更新全部座標。
令 g = ∇ f ( θ ) g=\nabla f(\theta) g = ∇ f ( θ ) 。在所有單位方向 v v v 中,方向導數 g ⊤ v g^\top v g ⊤ v 的最小值是 − ∥ g ∥ 2 -\|g\|_2 − ∥ g ∥ 2 ;當 g ≠ 0 g\ne0 g = 0 時,方向 v = − g / ∥ g ∥ 2 v=-g/\|g\|_2 v = − g /∥ g ∥ 2 取得此值。這是 Cauchy–Schwarz 不等式的直接結果。梯度下降使用 − g -g − g 作方向,實際位移長度則是 η ∥ g ∥ 2 \eta\|g\|_2 η ∥ g ∥ 2 。方向決定往哪裏走,步長決定走多遠,兩者的作用需要分開理解。
定理/命題
定理
唯一最小值與精確的目標差距 若 Q Q Q 對稱正定,則 f f f 的唯一全域最小點為
θ ⋆ = Q − 1 b . \theta_\star=Q^{-1}b. θ ⋆ = Q − 1 b . 設 e = θ − θ ⋆ e=\theta-\theta_\star e = θ − θ ⋆ ,則
f ( θ ) − f ( θ ⋆ ) = 1 2 e ⊤ Q e , μ 2 ∥ e ∥ 2 2 ≤ f ( θ ) − f ( θ ⋆ ) ≤ L 2 ∥ e ∥ 2 2 . f(\theta)-f(\theta_\star)=\frac12e^\top Qe,
\qquad
\frac{\mu}{2}\|e\|_2^2
\le f(\theta)-f(\theta_\star)
\le\frac{L}{2}\|e\|_2^2. f ( θ ) − f ( θ ⋆ ) = 2 1 e ⊤ Q e , 2 μ ∥ e ∥ 2 2 ≤ f ( θ ) − f ( θ ⋆ ) ≤ 2 L ∥ e ∥ 2 2 .
常數 c c c 只平移目標函數的值;b b b 決定二次曲面的中心,Q Q Q 決定中心附近的形狀。離開駐點時,正定性令目標差距嚴格為正,因此這裏的駐點確實是唯一的全域最小點。
定理
固定步長收斂的精確條件 設 Q Q Q 對稱正定,並令 e k = θ k − θ ⋆ e_k=\theta_k-\theta_\star e k = θ k − θ ⋆ 。固定實數步長 η \eta η 下,
e k + 1 = ( I − η Q ) e k . e_{k+1}=(I-\eta Q)e_k. e k + 1 = ( I − η Q ) e k . 對每一個初始向量都收斂至 θ ⋆ \theta_\star θ ⋆ ,當且僅當
0 < η < 2 L . 0<\eta<\frac2L. 0 < η < L 2 . 在這個範圍內,記
ρ = max i ∣ 1 − η λ i ( Q ) ∣ < 1. \rho=\max_i|1-\eta\lambda_i(Q)|<1. ρ = i max ∣1 − η λ i ( Q ) ∣ < 1. 則 ∥ e k ∥ 2 ≤ ρ k ∥ e 0 ∥ 2 \|e_k\|_2\le\rho^k\|e_0\|_2 ∥ e k ∥ 2 ≤ ρ k ∥ e 0 ∥ 2 ,以及
f ( θ k ) − f ( θ ⋆ ) ≤ ρ 2 k ( f ( θ 0 ) − f ( θ ⋆ ) ) f(\theta_k)-f(\theta_\star)\le
\rho^{2k}\bigl(f(\theta_0)-f(\theta_\star)\bigr) f ( θ k ) − f ( θ ⋆ ) ≤ ρ 2 k ( f ( θ 0 ) − f ( θ ⋆ ) ) 。
「每一個初始向量」是條件的一部分。如果某次初始誤差在不穩定的特徵向量方向剛好為零,那次計算仍可能成功。定理給出的步長範圍則同時控制所有可能出現的誤差方向,不能單憑一次成功的數值結果擴大它。
證明思路
先展開 f ( θ ⋆ + e ) f(\theta_\star+e) f ( θ ⋆ + e ) 。由於 Q θ ⋆ = b Q\theta_\star=b Q θ ⋆ = b ,所有關於 e e e 的一次項互相抵消,剩下 e ⊤ Q e / 2 e^\top Qe/2 e ⊤ Q e /2 。作譜分解 Q = V Λ V ⊤ Q=V\Lambda V^\top Q = V Λ V ⊤ ,其中 V V V 正交,並令 z = V ⊤ e z=V^\top e z = V ⊤ e ,便有
e ⊤ Q e = ∑ i λ i z i 2 e^\top Qe=\sum_i\lambda_i z_i^2 e ⊤ Q e = ∑ i λ i z i 2 。以 μ \mu μ 或 L L L 代替每個特徵值,就得到目標差距的上下界;正定性亦證明了唯一性。
接着從更新式減去駐點方程:
e k + 1 = θ k − η ( Q θ k − b ) − θ ⋆ = e k − η Q e k . \begin{aligned}
e_{k+1}
&=\theta_k-\eta(Q\theta_k-b)-\theta_\star\\
&=e_k-\eta Qe_k.
\end{aligned} e k + 1 = θ k − η ( Q θ k − b ) − θ ⋆ = e k − η Q e k .
轉到特徵向量座標 z k = V ⊤ e k z_k=V^\top e_k z k = V ⊤ e k 後,各座標分別滿足
z k + 1 , i = ( 1 − η λ i ) z k , i , z k , i = ( 1 − η λ i ) k z 0 , i . z_{k+1,i}=(1-\eta\lambda_i)z_{k,i},
\qquad
z_{k,i}=(1-\eta\lambda_i)^kz_{0,i}. z k + 1 , i = ( 1 − η λ i ) z k , i , z k , i = ( 1 − η λ i ) k z 0 , i .
每個座標都是等比數列。要讓任意起始值都趨近零,必須且只須 ∣ 1 − η λ i ∣ < 1 |1-\eta\lambda_i|<1 ∣1 − η λ i ∣ < 1 ,即 0 < η λ i < 2 0<\eta\lambda_i<2 0 < η λ i < 2 。同時要求全部特徵值滿足此條件,就得到 0 < η < 2 / L 0<\eta<2/L 0 < η < 2/ L 。將座標平方相加可得誤差界,再以 λ i / 2 \lambda_i/2 λ i /2 加權,便得目標差距的收斂界。
當 η = 2 / L \eta=2/L η = 2/ L ,最大特徵值方向的非零誤差每次乘以 − 1 -1 − 1 ,只改變符號而不縮小。當 η > 2 / L \eta>2/L η > 2/ L ,這個乘數的絕對值大於一,該誤差分量便會發散。當 η = 0 \eta=0 η = 0 ,參數永遠停留在起點。這些邊界情形說明了為何收斂範圍的兩端都是嚴格不等式。
曲率、進度與條件數
還可以直接計算一步之後的目標變化。令 g = ∇ f ( θ ) g=\nabla f(\theta) g = ∇ f ( θ ) ,則
f ( θ − η g ) − f ( θ ) = − η ∥ g ∥ 2 2 + η 2 2 g ⊤ Q g ≤ − η ( 1 − η L 2 ) ∥ g ∥ 2 2 . f(\theta-\eta g)-f(\theta)
=-\eta\|g\|_2^2+\frac{\eta^2}{2}g^\top Qg
\le-\eta\left(1-\frac{\eta L}{2}\right)\|g\|_2^2. f ( θ − η g ) − f ( θ ) = − η ∥ g ∥ 2 2 + 2 η 2 g ⊤ Q g ≤ − η ( 1 − 2 η L ) ∥ g ∥ 2 2 .
所以在 0 < η < 2 / L 0<\eta<2/L 0 < η < 2/ L 時,每個非駐點更新都令目標值嚴格下降。若取 η = 1 / L \eta=1/L η = 1/ L ,所有特徵向量座標的乘數都介乎 0 0 0 與 1 − μ / L 1-\mu/L 1 − μ / L 之間,不會交替變號。不過,若 μ \mu μ 比 L L L 小很多,最平坦方向的誤差便只會緩慢縮小:最陡方向限制步長,最平坦方向限制進度。
正定二次函數的條件數為 κ = L / μ \kappa=L/\mu κ = L / μ 。若希望固定步長下最慢方向也盡量收縮,可平衡兩端乘數,令 1 − η μ = − ( 1 − η L ) 1-\eta\mu=-(1-\eta L) 1 − η μ = − ( 1 − η L ) ,得到 η = 2 / ( μ + L ) \eta=2/(\mu+L) η = 2/ ( μ + L ) ,以及 ρ = ( κ − 1 ) / ( κ + 1 ) \rho=(\kappa-1)/(\kappa+1) ρ = ( κ − 1 ) / ( κ + 1 ) 。這個計算以已知的二次函數譜為前提,也指出特徵尺度為何影響迭代:改變座標會改變不同方向的相對曲率。
收縮因子描述的是反覆更新的進度。若 ρ = 3 / 4 \rho=3/4 ρ = 3/4 ,十次更新後的誤差界含有 ( 3 / 4 ) 10 (3/4)^{10} ( 3/4 ) 10 ,相應的目標差距界卻含有 ( 3 / 4 ) 20 (3/4)^{20} ( 3/4 ) 20 。因此,損失明顯下降時,參數仍可能只是在逐漸接近最小點。誤差與目標差距描述同一次計算的不同方面,定理則把兩者的關係寫清楚。
在狹長的二次曲面谷地中,移離陡峭側面可以很快消除一大部分初始損失。此後,剩餘誤差主要沿平坦方向,進度看來就會放慢。每一步仍遵守同一條固定遞推;變化的是誤差中各方向分量的比例,而不是算法突然改變。
例題
例題
1. 一維誤差的縮小、交替與發散 設 f ( t ) = 2 ( t − 3 ) 2 f(t)=2(t-3)^2 f ( t ) = 2 ( t − 3 ) 2 ,則導數為 4 ( t − 3 ) 4(t-3) 4 ( t − 3 ) ,最小點 t ⋆ = 3 t_\star=3 t ⋆ = 3 ,L = 4 L=4 L = 4 ,收斂範圍是 0 < η < 1 / 2 0<\eta<1/2 0 < η < 1/2 。
由 t 0 = − 1 t_0=-1 t 0 = − 1 出發,取 η = 1 / 8 \eta=1/8 η = 1/8 ,誤差每次乘以 1 − 4 η = 1 / 2 1-4\eta=1/2 1 − 4 η = 1/2 ,因此
t 0 = − 1 , t 1 = 1 , t 2 = 2 , t 3 = 5 2 . t_0=-1,\quad t_1=1,\quad t_2=2,\quad t_3=\frac52. t 0 = − 1 , t 1 = 1 , t 2 = 2 , t 3 = 2 5 . 損失依次為 32 32 32 、8 8 8 、2 2 2 、1 / 2 1/2 1/2 。誤差減半時,作為誤差平方的損失會變成四分之一。
若改取 η = 1 / 2 \eta=1/2 η = 1/2 ,乘數變成 − 1 -1 − 1 ,參數會在 − 1 -1 − 1 與 7 7 7 之間交替,損失一直是 32 32 32 。若取 η = 3 / 4 \eta=3/4 η = 3/4 ,乘數是 − 2 -2 − 2 ,前三個迭代值為 − 1 -1 − 1 、11 11 11 、− 13 -13 − 13 ,損失為 32 32 32 、128 128 128 、512 512 512 。三次計算都沿負梯度更新,差別在於步長。
例題
2. 兩個特徵向量方向有不同的進度 考慮
f ( u , v ) = 1 2 ( ( u − 1 ) 2 + 4 ( v + 1 ) 2 ) . f(u,v)=\frac12\bigl((u-1)^2+4(v+1)^2\bigr). f ( u , v ) = 2 1 ( ( u − 1 ) 2 + 4 ( v + 1 ) 2 ) . 此時 Q = diag ( 1 , 4 ) Q=\operatorname{diag}(1,4) Q = diag ( 1 , 4 ) ,θ ⋆ = ( 1 , − 1 ) ⊤ \theta_\star=(1,-1)^\top θ ⋆ = ( 1 , − 1 ) ⊤ ,兩條座標軸本身就是特徵向量方向。取 η = 1 / 4 \eta=1/4 η = 1/4 ,兩個誤差乘數分別是 3 / 4 3/4 3/4 與 0 0 0 。由 ( u 0 , v 0 ) = ( 3 , 1 ) (u_0,v_0)=(3,1) ( u 0 , v 0 ) = ( 3 , 1 ) 出發,得到
( u 1 , v 1 ) = ( 5 2 , − 1 ) , ( u 2 , v 2 ) = ( 17 8 , − 1 ) . (u_1,v_1)=\left(\frac52,-1\right),\qquad
(u_2,v_2)=\left(\frac{17}{8},-1\right). ( u 1 , v 1 ) = ( 2 5 , − 1 ) , ( u 2 , v 2 ) = ( 8 17 , − 1 ) . 第二座標一步到達最優值,第一座標則以等比方式逐漸接近 1 1 1 。損失為 f 0 = 10 f_0=10 f 0 = 10 、f 1 = 9 / 8 f_1=9/8 f 1 = 9/8 、f 2 = 81 / 128 f_2=81/128 f 2 = 81/128 。若改用最小化最差方向收縮率的 η = 2 / 5 \eta=2/5 η = 2/5 ,乘數會變成 3 / 5 3/5 3/5 與 − 3 / 5 -3/5 − 3/5 。因此,誤差交替變號可以與收斂並存,甚至可以改善最差方向的收縮率。
以下 Python 程式先計算兩個梯度分量,再同時更新參數。將輸出與上述精確分數比較,便能逐步核對座標遞推。
u, v = 3.0, 1.0
eta = 0.25
for k in range(4):
loss = 0.5 * ((u - 1.0) ** 2 + 4.0 * (v + 1.0) ** 2)
print(f"{k}: ({u:.6f}, {v:.6f}) f={loss:.6f}")
grad_u, grad_v = u - 1.0, 4.0 * (v + 1.0)
u, v = u - eta * grad_u, v - eta * grad_v
輸出為
0: (3.000000, 1.000000) f=10.000000
1: (2.500000, -1.000000) f=1.125000
2: (2.125000, -1.000000) f=0.632812
3: (1.843750, -1.000000) f=0.355957
例題
3. 梯度下降與回歸方程得到相同擬合 取三筆觀測資料:
A = [ 1 − 1 1 0 1 1 ] , y = [ 0 1 3 ] , f ( θ ) = 1 2 n ∥ A θ − y ∥ 2 2 , n = 3. A=\begin{bmatrix}1&-1\\1&0\\1&1\end{bmatrix},
\qquad y=\begin{bmatrix}0\\1\\3\end{bmatrix},
\qquad f(\theta)=\frac{1}{2n}\|A\theta-y\|_2^2,\quad n=3. A = 1 1 1 − 1 0 1 , y = 0 1 3 , f ( θ ) = 2 n 1 ∥ A θ − y ∥ 2 2 , n = 3. 第一個參數是截距,第二個是斜率。展開可得 Q = A ⊤ A / n = diag ( 1 , 2 / 3 ) Q=A^\top A/n=\operatorname{diag}(1,2/3) Q = A ⊤ A / n = diag ( 1 , 2/3 ) 、b = A ⊤ y / n = ( 4 / 3 , 1 ) ⊤ b=A^\top y/n=(4/3,1)^\top b = A ⊤ y / n = ( 4/3 , 1 ) ⊤ ,故 θ ⋆ = ( 4 / 3 , 3 / 2 ) ⊤ \theta_\star=(4/3,3/2)^\top θ ⋆ = ( 4/3 , 3/2 ) ⊤ 。A A A 的兩列向量線性獨立,故 Q Q Q 正定,而且 L = 1 L=1 L = 1 。
由 θ 0 = ( 0 , 0 ) ⊤ \theta_0=(0,0)^\top θ 0 = ( 0 , 0 ) ⊤ 出發,取 η = 1 \eta=1 η = 1 ,初始梯度為 − b -b − b ,所以 θ 1 = ( 4 / 3 , 1 ) ⊤ \theta_1=(4/3,1)^\top θ 1 = ( 4/3 , 1 ) ⊤ 。殘差為 A θ 1 − y = ( 1 / 3 , 1 / 3 , − 2 / 3 ) ⊤ A\theta_1-y=(1/3,1/3,-2/3)^\top A θ 1 − y = ( 1/3 , 1/3 , − 2/3 ) ⊤ ,故 f ( θ 1 ) = 1 / 9 f(\theta_1)=1/9 f ( θ 1 ) = 1/9 。再更新一次,得到 θ 2 = ( 4 / 3 , 4 / 3 ) ⊤ \theta_2=(4/3,4/3)^\top θ 2 = ( 4/3 , 4/3 ) ⊤ 與 f ( θ 2 ) = 1 / 27 f(\theta_2)=1/27 f ( θ 2 ) = 1/27 。
在最小點,殘差為 ( − 1 / 6 , 1 / 3 , − 1 / 6 ) ⊤ (-1/6,1/3,-1/6)^\top ( − 1/6 , 1/3 , − 1/6 ) ⊤ ,最小損失是 1 / 36 1/36 1/36 。截距誤差一步消失,斜率誤差則每次乘以 1 / 3 1/3 1/3 。最小損失大於零反映資料仍有擬合殘差,並不表示最佳化未完成。
對一般設計矩陣 A ∈ R n × d A\in\mathbb R^{n\times d} A ∈ R n × d ,相同的損失定義給出
∇ f ( θ ) = 1 n A ⊤ ( A θ − y ) , Q = 1 n A ⊤ A . \nabla f(\theta)=\frac1nA^\top(A\theta-y),\qquad
Q=\frac1nA^\top A. ∇ f ( θ ) = n 1 A ⊤ ( A θ − y ) , Q = n 1 A ⊤ A .
滿列秩正是 Q Q Q 正定的條件,因為 z ⊤ Q z = ∥ A z ∥ 2 2 / n z^\top Qz=\|Az\|_2^2/n z ⊤ Q z = ∥ A z ∥ 2 2 / n ;它對每個非零 z z z 都為正,等價於 A A A 的零空間只有零向量。最大曲率為 L = σ max ( A ) 2 / n L=\sigma_{\max}(A)^2/n L = σ m a x ( A ) 2 / n ,把學習率與奇異值直接連繫起來。實際更新時只需算預測值、減去目標、以 A ⊤ A^\top A ⊤ 乘殘差,再除以 n n n ,毋須先求矩陣的逆。
這裏的觀測索引與參數索引有不同角色:預測及殘差各有一個分量對應每筆觀測,梯度則每個分量對應一個參數。乘以 A ⊤ A^\top A ⊤ 會把觀測誤差按特徵累積成參數方向。若某一列全是 1 1 1 ,對應截距的梯度就是平均殘差;其他特徵的梯度,則是該特徵與殘差乘積的平均。梯度為零,正好表示每個特徵列向量都與殘差正交。
因此,迭代收斂時殘差未必趨近零。殘差可以保留一個垂直於 A A A 列空間的分量;所有可用的預測仍在同一個列空間內,改變係數也無法消除這個分量。趨近零的是梯度,也就是殘差中仍能指向可行改善的部分。這便區分了最佳化誤差與數據擬合誤差。
實作時分別計算 A θ A\theta A θ 及 A ⊤ r A^\top r A ⊤ r ,亦可避免先建立 A ⊤ A A^\top A A ⊤ A 。對稠密矩陣,每次乘法的工作量與 A A A 的元素數目成比例。用來證明收斂的二次矩陣,與電腦實際執行更新的乘法步驟,可以分工處理。
損失尺度與停止條件
把 f f f 換成 F = α f F=\alpha f F = α f ,其中 α > 0 \alpha>0 α > 0 ,最小點不變,梯度及 Hessian 卻都乘上 α \alpha α 。要保持相同的迭代值,步長便要除以 α \alpha α 。上例的殘差平方和為 F = 2 n f = 6 f F=2nf=6f F = 2 n f = 6 f ,最大曲率變成 6 6 6 ,收斂範圍是 0 < η < 1 / 3 0<\eta<1/3 0 < η < 1/3 。對它取步長 1 / 6 1/6 1/6 ,才會重現平均損失取步長 1 1 1 的更新。
梯度長度 ∥ ∇ f ( θ k ) ∥ 2 \|\nabla f(\theta_k)\|_2 ∥∇ f ( θ k ) ∥ 2 是有意義的停止量。由 ∇ f = Q e k \nabla f=Qe_k ∇ f = Q e k ,若知道正數下界 μ \mu μ ,便有 ∥ e k ∥ 2 ≤ ∥ ∇ f ( θ k ) ∥ 2 / μ \|e_k\|_2\le\|\nabla f(\theta_k)\|_2/\mu ∥ e k ∥ 2 ≤ ∥∇ f ( θ k ) ∥ 2 / μ 。相反,更新位移很小,亦可能只是 η \eta η 選得非常小。比較計算結果時,要一併列出損失的尺度及停止量,才能理解精度。
常見錯誤
常見錯誤
把負梯度方向當作任意長步都會下降 負梯度在非駐點給出局部下降方向,有限長的步則同時受曲率影響。二次函數的每個誤差分量由 1 − η λ i 1-\eta\lambda_i 1 − η λ i 控制;檢查其絕對值,才能判斷交替變號時是否仍然收斂,或步長是否已導致發散。
常見錯誤
改變損失尺度後沿用原來的學習率 ∥ A θ − y ∥ 2 2 \|A\theta-y\|_2^2 ∥ A θ − y ∥ 2 2 與 ∥ A θ − y ∥ 2 2 / ( 2 n ) \|A\theta-y\|_2^2/(2n) ∥ A θ − y ∥ 2 2 / ( 2 n ) 有相同的最小點,梯度卻相差 2 n 2n 2 n 倍。先寫清楚目標函數,再對它微分;改變乘法尺度時,也要相應調整步長。
總結
正定二次函數的駐點方程給出唯一最小點。從更新式減去駐點方程,會得到誤差的精確線性遞推。在特徵向量座標中,每個誤差分量乘以 1 − η λ i 1-\eta\lambda_i 1 − η λ i ;要全部縮小,條件正是 0 < η < 2 / L 0<\eta<2/L 0 < η < 2/ L 。設計矩陣滿列秩時,最小二乘回歸便屬於這個框架,曲率由平方奇異值及損失尺度共同決定。
練習
思考檢查
1. 設 Q = diag ( 2 , 5 ) Q=\operatorname{diag}(2,5) Q = diag ( 2 , 5 ) 、b = ( 4 , − 5 ) ⊤ b=(4,-5)^\top b = ( 4 , − 5 ) ⊤ 、θ 0 = ( 0 , 1 ) ⊤ \theta_0=(0,1)^\top θ 0 = ( 0 , 1 ) ⊤ 、η = 1 / 5 \eta=1/5 η = 1/5 。求最小點、完整的固定步長收斂範圍及第一次更新。
思考檢查
2. 設 f ( t ) = 3 ( t + 2 ) 2 f(t)=3(t+2)^2 f ( t ) = 3 ( t + 2 ) 2 、t 0 = 0 t_0=0 t 0 = 0 。分別取 η = 1 / 3 \eta=1/3 η = 1/3 與 η = 1 / 4 \eta=1/4 η = 1/4 ,計算接着兩個迭代值。哪次計算會收斂?
思考檢查
3. 在回歸例題中,把 f f f 改成殘差平方和 F = 6 f F=6f F = 6 f 。哪個步長會重現 f f f 取 η = 1 \eta=1 η = 1 的更新?F F F 的收斂範圍是甚麼? 同時追蹤梯度的倍率與 Hessian 的最大特徵值。
思考檢查
4. 設 f ( θ ) = ( θ 1 − 1 ) 2 / 2 f(\theta)=(\theta_1-1)^2/2 f ( θ ) = ( θ 1 − 1 ) 2 /2 、θ 0 = ( 0 , 7 ) ⊤ \theta_0=(0,7)^\top θ 0 = ( 0 , 7 ) ⊤ 、η = 1 \eta=1 η = 1 。求迭代值及全部最小點,並解釋為何唯一性定理不適用。
解答
解答 · 1. 解駐點方程,再套用兩個誤差乘數 最小點為 θ ⋆ = ( 2 , − 1 ) ⊤ \theta_\star=(2,-1)^\top θ ⋆ = ( 2 , − 1 ) ⊤ 。由 L = 5 L=5 L = 5 ,收斂範圍是 0 < η < 2 / 5 0<\eta<2/5 0 < η < 2/5 。初始梯度為 ( − 4 , 10 ) ⊤ (-4,10)^\top ( − 4 , 10 ) ⊤ ,故
θ 1 = ( 0 , 1 ) ⊤ − 1 5 ( − 4 , 10 ) ⊤ = ( 4 / 5 , − 1 ) ⊤ \theta_1=(0,1)^\top-\frac15(-4,10)^\top=(4/5,-1)^\top θ 1 = ( 0 , 1 ) ⊤ − 5 1 ( − 4 , 10 ) ⊤ = ( 4/5 , − 1 ) ⊤ 。
兩個乘數是 3 / 5 3/5 3/5 與 0 0 0 。
解答 · 2. 區分邊界交替與逐漸縮小的交替 導數為 6 ( t + 2 ) 6(t+2) 6 ( t + 2 ) ,誤差乘數是 1 − 6 η 1-6\eta 1 − 6 η 。取 η = 1 / 3 \eta=1/3 η = 1/3 時乘數為 − 1 -1 − 1 ,所以 t 1 = − 4 t_1=-4 t 1 = − 4 、t 2 = 0 t_2=0 t 2 = 0 ,之後持續交替。取 η = 1 / 4 \eta=1/4 η = 1/4 時乘數為 − 1 / 2 -1/2 − 1/2 ,所以 t 1 = − 3 t_1=-3 t 1 = − 3 、t 2 = − 3 / 2 t_2=-3/2 t 2 = − 3/2 ,並收斂至 − 2 -2 − 2 。收斂範圍為 0 < η < 1 / 3 0<\eta<1/3 0 < η < 1/3 ,只有第二次計算在範圍之內。
解答 · 3. 學習率與目標倍率成反比 由 ∇ F = 6 ∇ f \nabla F=6\nabla f ∇ F = 6∇ f ,應取 η F = 1 / 6 \eta_F=1/6 η F = 1/6 才有相同更新。Hessian 的最大特徵值變成 L F = 6 L_F=6 L F = 6 ,故對所有初始向量收斂的範圍是 0 < η F < 2 / 6 = 1 / 3 0<\eta_F<2/6=1/3 0 < η F < 2/6 = 1/3 。
解答 · 4. 平坦方向會保留初始座標 梯度為 ( θ 1 − 1 , 0 ) ⊤ (\theta_1-1,0)^\top ( θ 1 − 1 , 0 ) ⊤ 。第一次更新得到 ( 1 , 7 ) ⊤ (1,7)^\top ( 1 , 7 ) ⊤ ,之後一直停在該點。所有 ( 1 , s ) ⊤ (1,s)^\top ( 1 , s ) ⊤ 、s ∈ R s\in\mathbb R s ∈ R 都是最小點。Hessian 矩陣 diag ( 1 , 0 ) \operatorname{diag}(1,0) diag ( 1 , 0 ) 是半正定而非正定;平坦的第二方向令最小點不唯一。
可接着閱讀最小二乘與殘差 、
SVD 與主成分 ,
或查看課程閱讀書目 。