梯度下降以及牛顿法

回顾一些参数估计的方法,包括梯度下降算法和牛顿法及其扩展

梯度下降算法(Gradient Descent, GD)

目的是优化参数,使得估计值与真实值的误差最小。试用于优化目标形式为:

其中表示特征权重,表示样本的以维特征描述,为样本。

1, 批梯度下降算法(batch gradient decent, BGD)

样本集合损失函数为

 

其中为样本个数,为正确输出。分别对每维的参数求导得

因此每次按照负梯度的方向更新参数

 

2, 随机梯度下降算法(stochastic gradient descent, SGD)

唯一不同于BGD,SGD每次迭代随机选取一个样本,更新参数。

对于单个样本j的损失函数为

由此可以看出,BGD中样本集合的损失函数为单个样本损失函数的和

SGD中,针对单个样本损失函数,对每维的参数求导得

更新参数为

每轮迭代的过程中,SGD比BGD计算量至少缩减了倍,SGD的前提是保证了样本的随机性,同一个样本可能被选取多次。

 

L-BFGS 算法

1,牛顿法

首先将目标函数用Taylor公式在某点展开。Taylor展开式所表示的意义为:

已知函数某点的各个阶导数,可以拟合出函数在这个点周围的值,因此如果某点为极小值附近的点,则可以估算出函数的极小值。

用Taylor公式将函数在某点展开,将此Taylor展开式求导估计可能的极小值

一维:

多维:

对于凸函数一定收敛;而对于非凸函数,是否收敛取决于初始选取的点是否为极小值周围的点。如果远离极小值点则不收敛。因此提出阻尼牛顿法,确定某点的搜索方向做一维搜索,找到当前极小值,然后再重新找搜索方向。

2,阻尼牛顿法

即在更新时先确定搜索方向

然后在此方向上找到可更新的极小值

牛顿法使用的限制条件为二阶导矩阵(Hesse)正定,因此复杂的目标函数很难保证Hesse矩阵可逆,因此导致牛顿法失效,因此提出拟牛顿法

 

3,拟牛顿法 (BFGS)

用方法近似计算Hesse矩阵,用表示近似构造的Hesse矩阵。为单位矩阵,然后同过DFP公式或者BFGS公式计算之后的Hesse矩阵

首先规定 

不加证明地给出DFP公式

BFGS公式为其DFP的对偶公式

在BFGS迭代过程中需要设置中断条件,因此具体算法过程为

a) 初始化 ,k=0,收敛依据e

b) 令为单位矩阵

c) 计算一阶导数矩阵(梯度),确定优化方向

d) 使用一维搜索极小值

e) 判断是否收敛,否则继续6

f) 利用BFGS公式计算,   k=k+1继续c

由于BFGS每次迭代过程都需要记录H(N*N)维矩阵,存储空间至少为N(N+1)/2。优化计算存储空间,则提出L-BFGS

 

4,限域拟牛顿法(Limited Storege BFGS,L-BFGS)

根据BFGS重写H矩阵的修正公式

其中,则

BFGS中H的修正过程为

L-BFGS中H 的修正过程为(只记录最近的m次)

用于限制存储空间,用于BFGS每次迭代过程都需要记录H(N*N)维矩阵,存储空间至少为N(N+1)/2,用于H是由单位矩阵(存储空间为N)一步步修正得来一次,只需记录修正的过程。假设L-BFGS只记录修正前m步修正,则只需记录2m+1个N维向量。

posted @ 2014-06-11 15:26  LeonCrash  阅读(1597)  评论(0编辑  收藏  举报