优化算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

优化算法(1)

1. 梯度下降

1)分类

批量梯度下降(BGD ):

i 10110((,...))=()m

j j j j i n j i i j h x x x y x ag t θθθαθ--==---∑ (1)

说明:在实际训练中,上式既可以是将所有样本训练完,计算所有样本的梯度和,然后与前一时刻的参数做差。也可以是训练一个样本就计算梯度然后做差,之后依次迭代下去。

随机梯度下降(SGD )

i 101((,...))j j j j i n j i h x x x y x θθθα-=--

小批量梯度下降(MGD ).

1i 101t

((,...))t x j j j i n j j h x x x y θθθα+--==--∑

2. Momentum

由(1)得到:

t ()ag t θ∆=-

即:参数的更新方向完全取决于当前时刻梯度的方向,因而其更新是十分不稳定的。一个改进的方法就是引入动量的概念:momentum,它模拟物体运动时候的惯性,即在更新的时候不仅考虑梯度的方向,而且在一定程度上保留之前的方向。经实验验证,其能够在一定程度上增加参数更新的稳定性,某些情况下能够加快训练速度,并且具有一定摆脱陷入局部最优的能力。

t 1()t ag t θρθ-∆=∆-

特点:

前后梯度方向一致时,能够加速学习 前后梯度方向不一致时,能够抑制震荡

3. Nestrov Momentum (NAG )

根据之前的动量进行大步跳跃,然后计算梯度进行校正,从而实现参数更新。这种预更新方法能防止大幅振荡,不会错过最小值,并对参数更新更加敏感 与Momentum 的区别在于梯度计算的时刻不同。Nestrov Momentum 方法是先按照原来的方向对参数进行估计,然后使用估计后位置的梯度来纠正方向。

t 11g((;),)t t t t a L x g y θρθθα--∆=∆-+

4. Adagrad

Adagrad 算法能够在训练中自动的对learning rate 进行调整,对不同的参数使用不同的学习速率。可以想象在训练的某个阶段,各个参数的收敛程度是不同的。有的参数接近收敛,需要娇小的学习率,而有的参数还有很大的程度才能收敛,所以各个参数应该具有不同的学习速率。Adagrad 方法可以自适应的为不同参数分配不同的学习速率:

其中,eta 是初始学习速率。

使得在参数空间更为平缓的方向, 会取得更大的进步,并且能够使得陡峭的方向变得平缓,从而加快训练速度。善于处理稀疏梯度。

5. Adadelta

Adagrad 存在的问题:

(1) 学习率单调递减,训练后期学习率非常小。 (2) 需要手动设置一个全局的初始学习率

针对第一个问题,我们只是用距离当前时间较近的梯度项。即:

其中,ρ是衰减系数,相当于将前面的梯度随时间按衰减系数进行衰减,相当于仅适用了离当前时刻较近的梯度。可以发现,学习率并不一定是一个单调的过程。

上面的5种方法都是基于梯度的优化方法,下面将介绍一些其他的优化方法。

6. 牛顿法(牛顿二阶导数法)

基本思想:在极小点的估计值附近,对f(x)做二阶泰勒展开,进而找到极小值的下一个估计值。

考虑下面的无约束优化问题:

令:

由于求的是最值,对上式求导得(后两项求导结果):

则:

当X为多维情况时:

其中,H为Hessian矩阵,g为梯度。

综上,牛顿法的算法流程是:

7. 阻尼牛顿法

上述x的迭代过程可以发现是一个定步长的过程,所以在某些情况下可能越过最小值。阻尼牛顿法是在每次迭代之前寻找最优的步长进行迭代。

步长的计算公式;

(1.13)

其中:

则,阻尼牛顿法的算法流程是:

牛顿法的问题:

目标函数必须有一阶,二阶导数偏导数,且多维情况下的海森矩阵必须是正定的。所以在求解凸优化问题的时候,前提条件是嗨森矩阵是正定的。如果不是正定,不能保证所产生的方向是目标函数在xk处的下降方向。

计算复杂。不仅要计算梯度,还要计算嗨森矩阵及其逆矩阵。计算量和存储量都已维数N的平方比增加。

8. 拟牛顿法

原始牛顿法问题:Hessian矩阵或其逆矩阵计算复杂,且无法保证正定(嗨森矩阵不是正定时,不能保证所产生的方向是目标函数在x k处的下降方向)。拟牛顿法就是采用一定的方法对Hessian矩阵或者其逆矩阵做近似(设分别为BD)。然后按照牛顿法的计算方式进行计算。因为Hessian为对称矩阵,所以可以初始化B(或者D)为单位阵,并通过不断地迭代来使B(D)趋近于原始的Hessian矩阵。其中,DFP算法是近似Hessian矩阵的逆,BFGS算法是近似Hessian矩阵。

这里以拟牛顿方法中的BFGS算法讲述拟牛顿的工作流程:

从拟牛顿条件说起(或者可以解释为牛顿法中海森矩阵应满足的条件):

经过k+1次迭代,我们的目标函数变为:

在两边同时作用一个梯度算子有:

取X=Xk有:

令:

则有:

(1)

上式即称为拟牛顿条件。

BFGS算法的思想是直接使用一个矩阵B逼近海森矩阵H。

因为H为对称阵,所以初始化B为单位阵。并每次迭代更新:

设B的变化量为:

将上式带入(1)得:

本式子推到过程:

令:

则有:

所以:

T T T k k k k k k

K T T k k k k k

y y B s s B B y s s B s ∆=-

给出BFGS 的算法流程(解释前面只是推导B 的迭代过程,在实际算法里面前

面依然借用的是牛顿法的思想。):

9. 期望最大化(EM )

10. 共轭梯度法

共轭方向法(不一定是共轭梯度)的思想就是在N 维优化问题中,每次沿一个方向优化得到极小值,后面再沿其他方向求极小值的时候,不会影响前面已经得到的沿那些方向上的极小值,所以理论上对N 个方向都求出极小值就得到了N 维问题的极小值。这组方向由于两两共轭,所以就叫他共轭方向法。

梯度下降法每次都直接选取当前点的梯度方向,所以就有可能按下葫芦浮起瓢:这次求出的极小值点在之前搜索过的方向上又不是极小值了,这样就导致收敛速度比较慢甚至不收敛。

共轭描述:

PAQ=0;

则称向量P 和Q 是关于A 共轭的,或称P 、Q 是关于A 共轭方向。

共轭方向:

我们认为两个正交向量的方向是互不影响的。推广到更一般的情况:

相关文档
最新文档