牛顿法,拟牛顿法,梯度下降,随机梯度下降

本文总结了牛顿法, 拟牛顿法,梯度下降和随机梯度下降的概念和计算公式.

牛顿法

首先考虑一维问题.
对于一个一维的函数,如果这个函数连续可微, 并且导数可以计算,
那么计算这个函数的最优解可以看成求解方程 f(x)=0 的根.
F(x)=f(x) , 这个求解过程就变成了求解方程 F(x)=0 的过程.
使用上述迭代的方法就可以进行计算.

迭代的方程为:

xk+1=xkf(xk)f′′(xk)

对于多维情况, f(x1,x2,x3,,xn) , 需要求这个函数的最优解,
就是求 f(x⃗ )=0⃗  的解.

其中 f(x⃗ )=(f(x⃗ )x0,f(x⃗ )x1,,f(x⃗ )xn)

按照求解一维函数的方法, 设 Fi(x⃗ )=f(x⃗ )xi .
f(x⃗ )=F⃗ (x⃗ ) .

那么对于多维函数来说, 牛顿法的公式为:

{x⃗ =x⃗ k=x⃗ k(DF⃗ (x⃗ k))1F⃗ (x⃗ k),k=0,1,2,

由于求解矩阵的逆的计算复杂度较高, 因此,需要使用替换的方法.
s⃗ =(DF⃗ (x⃗ k))1F⃗ (x⃗ k) ,
DF⃗ (x⃗ k)s⃗ =F⃗ (x⃗ k) .

牛顿法的公式变为:

x⃗ =x⃗ k=x⃗ k+s⃗ DF⃗ (x⃗ k)s⃗ =F⃗ (x⃗ k),k=0,1,2,

拟牛顿法

牛顿法虽然收敛速度很快, 但是计算海森矩阵时计算量特别大.
由此演化出了拟牛顿法.
拟牛顿法是模拟牛顿法的意思, 并不是一种算法, 而是几种算法的总称, 这些算法包括DFP算法, BFGS算法, L-BFGS算法.

牛顿法中, 设 gk=f(xk) 为梯度向量, Hk=2f(xk) 为海森矩阵.
拟牛顿法是对 Hk 或者 H1k 取近似值, 从而减少计算量.
BH , DH1 , yk=gk+1gk , sk=xk+1xk

根据拟牛顿法条件, 可得到近似公式:

Bk+1=yksk

Dk+1=skyk

下面是几种拟牛顿法:

DFP算法

DFP算法采用的是 D ,但并不直接计算 D ,而是计算每一步 D 的增量 D 来间接的求出 D 。这也是很多优化算法的做法,因为一般上一步的中间结果对下一步的计算仍有价值,若直接抛弃重新计算耗时耗力耗内存,重新发明了轮子。

Dk+1=Dk+Dk

D0 通常取单位矩阵 I ,关键导出每一步的 Dk
通过一系列艰苦而又卓绝的推导计算假设取便,最终的导出结果为:

Dk=sksTksTkykDkykyTkDkyTkDkyk

BFGS算法

BFGS算法与DFP算法类似,只是采用的 B 来近似 H 。最终的公式为:

Bk=ykyTkyTkxkBksksTkBksTkBksk

L-BFGS算法

L-BFGS算法对BFGS算法进行改进,不再存储矩阵 Dk ,因为 Dk 有时候比较大,计算机的肚子盛不下。
但是我们用到 Dk 的时候怎么办呢?答案是根据公式求出来。

从上面的算法推导可知, Dk 只跟 D0 和序列 {sk} {yk} 有关。
即我们知道了后者,即可以求得前者。
进一步近似,我们只需要序列 sk yk 的最近m个值即可。
这样说来,我们的计算机内存中只需要存储这两个序列即可.

最终的递推关系为:

Dk+1=VTkDkVk+ρksksTk

其中

ρk=1yTksk,Vk=IρkyksTk

梯度下降法

首先是梯度的介绍, 对于单变量的的函数中, 梯度是导数, 对于线性函数而言, 梯度就是线的斜率.

假设 h(x) 是要拟合的函数, J(θ) 是损失函数, θ 是参数:

g(θ)=nj=0θjxj

J(θ)=12mmi=1(yihθ(xi))2

  1. J(θ) θ 求偏导, 得到每个 θ 对应的梯度:

h(θj)=J(θ)θj=1mmi=1(yihθ(xi))xij

  1. 对于每个 θj 都按照它的梯度负方向更新它的值, 其中 α 为学习速度:

θj=θjαh(θj)

这种算法有许多缺点:

  • 靠近极小值时速度减慢
  • 直线搜索可能会产生一些问题
  • 可能会’之’字型地下降

当数据量比较大时, 这种方法收敛速度比较慢.

随机梯度下降法

同样假设 h(x) 是要拟合的函数, J(θ) 是损失函数, θ 是参数:

g(θ)=nj=0θjxj

J(θ)=12mmi=1(yihθ(xi))2

  1. 与批量梯度下降(上面提到的普通梯度下降)不同, 随机梯度下降选择其中一个 θk .
    J(θ) θk 求偏导, 得到的梯度为:

h(θk)=J(θ)θk=1mmi=1(yihθ(xi))xik

  1. 对于每个 θj , 使用 θk 的梯度负方向更新每个 θ :

θj=θjαh(θk)

相对于批量梯度下降, 随机梯度下降在每次更新操作时, 并没有选择全局最优解, 这也导致随机梯度下降可能陷入局部最优解.

你可能感兴趣的:(牛顿法,拟牛顿法,梯度下降法,随机梯度下降法)