优化算法的通项公式:
θargminR(D;θ)=i=1∑nL(yi,f(xi;θ))+Ω(θ)
其目标是找到一个参数 θ 使得结构风险 R 最小,形式化表达为:
θ(t+1)←θ(t)−ηΔ(t)gradient[∇θR(D;θ(t))]
其中 Δ 是一个更新量,表示梯度的函数。
神经网络设计的基本思想就是通过在高维空间中找到一个相对平缓的梯形图(Landscape)使得在一个较好初始点的情况下能够通过优化算法找到全局最小值。
一阶优化方法#
梯度(Gradient)#
通过一阶泰勒展开去近似
一阶方法的不足#
- 高维空间中鞍点较多,仅使用梯度一个信号可能无法达到极小值;
二阶优化方法#
二阶优化方法指的是利用目标函数的二阶导数信息来进行参数更新的优化算法,其使用二阶泰勒展开来近似局部目标函数:
R^(θ)=R(θt)+∇θR(θt)(θ−θt)+21(θ−θt)TH(θ−θt)
海森(Hessian)矩阵#

海森矩阵刻画了梯形图的曲率特征,确保了优化的稳定性。其元素为:
Hij=∂θj∂gi
将其进行特征值分解可以得到:
H=QΛQT,H−1=QΛ−1QT
其中 Λ 为对角矩阵,其对角元素为矩阵 H 的特征值。若特征值全大于 0,则矩阵 H 为正定矩阵,则目标函数在局部存在唯一最小值。若特征值有正有负,则存在鞍点。
牛顿法#
将二阶泰勒展开进行求导并取 0 可得到当前 局部区域 的最优参数 θ∗:
∇θR^(θ∗)=∇θR(θt)+H(θ∗−θt)=0
然后进行参数更新:
θt+1=θt−H−1∇θR(θt)
因为求的是局部最优参数,所以还是需要迭代更新来获得使得全局目标函数最小的参数。
该方法的收敛速度快于梯度下降,但是计算 H−1 需要 O(d2) 的时间以及 O(d3) 的空间, d 是参数的维度。
BFGS#
该方法是一种拟牛顿法, H−1 避免高效开销。
给定一个初始点 x0∈X 以及单位阵 H0=I,步骤为:
- 计算二阶牛顿的梯度方向 - Δt=−Ht−1∇f(xt−1);
- 更新初始点 - xt=xt−1+ηtΔt;
- 计算近似值 - Ht=Ht−1+zTvzzT−vTHt−1vHt−1vvTHt−1
其中 v=xt−xt−1,z=∇f(xt)−∇f(xt−1)。
随机方法#
自适应方法#
非凸优化#