進階最佳化

近端梯度法(proximal gradient methods)

非常多的目標都拆成兩塊:一個平滑、可微的損失,加上一個非平滑的懲罰,例如鼓勵稀疏的 L1 項,或強制某個約束的指示函數。你沒辦法直接穿過非平滑部分的尖角去取梯度。近端梯度法用交替的方式處理:對平滑部分走一步普通的梯度,然後施加一個近端算子(proximal operator),以閉式精確地處理非平滑部分。

要最小化 f 加 g(f 平滑、g 非平滑),每一步是 x_{t+1} = prox_{eta g}(x_t - eta grad f(x_t)),其中 prox_{eta g}(v) 是「g(x) 加上 2eta 分之一乘以與 v 距離平方」對 x 的最小化點。當 g 是 L1 範數時,近端算子是軟閾值(soft-thresholding),給出 ISTA 演算法;它的加速版 FISTA 再加上 Nesterov 動量。當 g 是某約束集的指示函數時,近端算子就只是歐氏投影,還原成投影梯度下降。

這些方法是稀疏學習、壓縮感知與帶約束訓練的骨幹。它們繼承梯度法的收斂率——一般為 t 分之一,加速時為 t 平方分之一——但只有在近端算子有便宜閉式時才划算。如果連算出那個 prox 本身都很難,這種拆分就一無所獲。

x_{t+1} = \operatorname{prox}_{\eta g}\!\big(x_t - \eta\nabla f(x_t)\big),\quad \operatorname{prox}_{\eta g}(v)=\arg\min_x g(x)+\tfrac{1}{2\eta}\|x-v\|^2

先對平滑部分走一步梯度,再對非平滑部分走一步近端。

L1 範數的近端算子是逐元素的軟閾值,它把每個座標朝零收縮、並把小的座標恰好設成零;正是這種「精確歸零」讓近端方法產生真正稀疏的解。

又称
proximal gradientISTAFISTA近端梯度法