進階最佳化

無 Hessian 最佳化(Hessian-free optimization)

牛頓法靠使用海森矩陣(Hessian,二階導數構成的矩陣)走出縮放得極漂亮的步伐,但對一個百萬參數的網路,那個海森矩陣有一兆個元素,根本無法建出、更別說求逆。無 Hessian 最佳化的洞見是:你其實從不需要海森矩陣本身,你只需要把它乘上向量,而一個海森-向量積(Hessian-vector product)可以用大約多一次反向傳播的成本精確算出。

在每個外層迭代,這個方法用線性共軛梯度(conjugate gradient)近似求解牛頓系統 Hp = -g 以得到步伐 p,這個迭代型求解器只需要海森-向量積、從不需要矩陣本身。每個這樣的積由 Pearlmutter 技巧(R 運算子)取得,而實務上會用半正定的高斯-牛頓矩陣取代真正的海森矩陣,好讓系統保持良態。Levenberg-Marquardt 阻尼維持其條件數,內層的共軛梯度迴圈則提早截斷。

無 Hessian 方法能訓練那些天真的一階方法因病態曲率而停滯的深層與遞迴網路,而且即使每個外層步要花上許多內層迭代,它仍然資訊量很高。在現代實務中,它大致被 K-FAC 與調得好的自適應最佳化器超越,但它仍是「免矩陣二階學習」的概念基礎。

Hv = \nabla\!\big(\nabla L(\theta)^\top v\big),\qquad \text{solve } Hp = -g \text{ by CG}

只需海森-向量積;共軛梯度求解出步伐。

用高斯-牛頓矩陣(或費雪矩陣)取代原始海森矩陣,能保證系統為半正定,於是即使真正的海森矩陣帶有負曲率,共軛梯度也行為良好。

又称
Hessian-freetruncated-Newton無 Hessian 最佳化