最优化方法
-
微分方法
根据极值必要条件,求 f ′ ( x ) = 0 {f}'(x)=0 f′(x)=0的根 -
梯度下降法
设 参 数 为 w , 当 前 点 的 梯 度 为 ∂ L ∂ w , 学 习 率 为 η , 则 设参数为w,当前点的梯度为\frac{\partial L}{\partial w},学习率为\eta,则 设参数为w,当前点的梯度为∂w∂L,学习率为η,则
w = w − η ∂ L ∂ w w = w - \eta \frac{\partial L}{\partial w} w=w−η∂w∂L
往梯度的负方向走来迭代求根,即极小值点(正方向即为极大值点)-
批量梯度下降法 BGD
每次迭代利用所有的样本计算梯度
-
随机梯度下降法 SGD
每次迭代利用一个样本计算梯度
-
小批量梯度下降法 MBGB
每次迭代利用部分样本计算梯度
缺点:如果梯度没有指向极值点,那么搜索效率就会很低(在等高线上呈“之”字形移动)
-
-
梯度下降法的改造
- Momentum
设 冲 量 ( 速 度 ) 为 ν , 冲 量 系 数 为 α ( 相 当 于 摩 擦 力 或 阻 力 ) , 则 设冲量(速度)为\nu ,冲量系数为\alpha (相当于摩擦力或阻力),则 设冲量(速度)为ν,冲量系数为α(相当于摩擦力或阻力),则
v = α v − η ∂ L ∂ w v = \alpha v - \eta \frac{\partial L}{\partial w} v=αv−η∂w∂L
w = w + v
每个参数都有一个对应的v值,v初始值可以赋0
越是一直往梯度的某个方向上前进,则在该方向上的速度越快(前进距离越多),比如在梯度的某个方向上一直是正数,则迭代时在该方向上前进的距离越多。相反则正反方向抵消,前进的距离越小。
- AdaGrad
h = h + ∂ L ∂ w ∗ ∂ L ∂ w 矩 阵 对 应 位 置 相 乘 h = h + \frac{\partial L}{\partial w} * \frac{\partial L}{\partial w} 矩阵对应位置相乘 h=h+∂w∂L∗∂w∂L矩阵对应位置相乘
w = w − 1 h η ∂ L ∂ w w = w - \frac{1}{\sqrt{h}} \eta \frac{\partial L}{\partial w} w=w−h1η∂w∂L
h记录了随着迭代,每个参数对应偏导数的平方和,即梯度的每个数值的平方和。
每个参数都有一个对应的h值,h初始值可以赋0
与梯度下降相比,多了一个系数来调整学习率的值。随着迭代,某一个参数对应的偏导数(即梯度中对应的分量)越大,则该参数的学习率越小。一般来说,随着迭代,h的值越大越大,所以参数的学习率也就会越来越小
- RMSProp
h = a h + ( 1 − a ) ∂ L ∂ w ∗ ∂ L ∂ w 矩 阵 对 应 位 置 相 乘 h = ah +(1-a) \frac{\partial L}{\partial w} * \frac{\partial L}{\partial w} 矩阵对应位置相乘 h=ah+(1−a)∂w∂L∗∂w∂L矩阵对应位置相乘
w = w − 1 h η ∂ L ∂ w w = w - \frac{1}{\sqrt{h}} \eta \frac{\partial L}{\partial w} w=w−h1η∂w∂L
AdaGrad的改良版,越接近当前期的梯度平方和权重越大,越之前的则越小。实际上就是指数平滑,让梯度平方和的权重呈指数衰减
-
Adam
结合了Momentum和RMSProp算法,通常会有比较好的效果
- Momentum
-
牛顿法
求f(x)导数的一阶泰勒展开(切线)=0的根,以迭代的方法近似求f(x)导数=0的根-
前提
- 任何一点二阶可微(任何一点的二阶偏导数连续)
- 一元函数二阶导数 > 0,函数为凹函数
多元函数海森矩阵正定(正定即对角线元素>0,即各维度的二阶偏导数>0,各维度为凹函数)
凹函数保证极值点只有一点,且为极小值点,且为最小值点,即局部最优点就是全局最优点
-
优点
- 考虑了二阶导数的信息(一阶导数的变化率),二次收敛,收敛速度快(二次函数只需要一步)
-
缺点
- 需要计算海森矩阵和其逆矩阵,计算量大
- 海森矩阵规模为N方,当N很大时,海森矩阵变得很大
- 受初始点影响大
- 驻点, f ′ ′ ( x ) {f}''(x) f′′(x)=0,分母不能为0
- f ′ ( x ) = x 1 3 {f}'(x)=x^{\frac{1}{3}} f′(x)=x31,迭代的x点越来越远离0
- f ′ ( x ) = ∣ x ∣ 1 2 {f}'(x)=|x|^{\frac{1}{2}} f′(x)=∣x∣21,迭代的点不断地循环震荡
- 有多个极值的函数f(x),即 f ′ ( x ) {f}'(x) f′(x)有多个零点,根据初始值不同,会收敛到不同的极值点
-
-
拟牛顿法
满足拟牛顿条件下,求一个正定矩阵作为海森矩阵的近似,避免直接求海森矩阵-
DFP算法
通过迭代的方式构造D矩阵作为海森矩阵的逆矩阵的近似矩阵
D k + 1 = D k + Δ D K = D k + α u u T + β v v T D_{k+1}=D_{k}+\Delta D_{K}=D_{k}+\alpha uu^{T}+\beta vv^{T} D
-