机器学习优化方法小结

来源:互联网 发布:软件挖矿 编辑:程序博客网 时间:2024/05/29 04:16

一. 梯度下降法

一阶最优化算法,梯度其实是有方向的。若找到一个函数的局部极小值,必须向函数上当前点对应梯度的反方向的规定步长距离点进行迭代搜索;若向梯度正方向搜索,会接近函数的局部极大值,称为梯度上升法。

优点:
简单易行

缺点:
靠近极小值时速度减慢。

二. 牛顿法,拟牛顿法,L-BGFS

牛顿法是使用函数f(x)的泰勒级数的前面几项来寻找f(x)=0的根。
基本思想是:在现有极小点估计值的附件对f(x)做二阶泰勒展开,进而找到极小点的下一个估计值。

例子1. 求函数为0的根

选择接近函数f(x)零点的x0,用泰勒一阶展开表示:

f(x):=f(x0)+f(x0)(xx0)=0

会发现得到x1=x0f(x0)/f(x0)更接近方程f(x)=0的解,如此迭代,将越来越逼近真实的值。

例子2. 求解最优化问题

牛顿法可用于求解非线性优化问题,假设任务优化一个目标函数,求f的极大极小问题,可转为求解函数的导数f`(x)=0问题, 这样就可以把优化问题视为求解方程根(f’=0).

由于求最值,由极值必要条件可知,f’(x)=0, 利用产生序列xk逼近f(x)的极小点。

为了求解f’=0 ,把函数f(x)泰勒展开到2阶形式:

f(x):=f(x0)+f(x0)(xx0)+1/2f′′(x0)(xx0)2

f(x)=f(x0)+f′′(x0)(xx0)=0

x=xkf(xk)/f′′(xk)

牛顿法中用到了二阶导数,二阶收敛速度更快,相当于使用曲面去拟合原函数。

对于高维问题,牛顿的迭代公式为:

xk+1=xkH1f(xk)

其中dk=H1f(xk)为迭代搜索的牛顿方向
这里写图片描述

阻尼牛顿法

原始牛顿法为定长步迭代,对于非二次函数,可能有时会使函数值上升,即出现f(xk+1)>f(x),严重情况下还会造成迭代点列xk发散。

λk=argminf(xk+λdk)

三. 拟牛顿法

由于利用牛顿法求解最优问题,在计算过程中要求函数一阶,二阶可导,其二阶导数对于高维函数,即海森矩阵可逆;且对矩阵求逆计算量比较大。
f(xk)=gk, 拟牛顿法条件为:

gk+1gk=H1(xk+1xk)

yk=gk+1gk,δk=xk+1xk:
yk=H1δk

这里是使用矩阵B近似表示海森矩阵:

yk=Bk+1δk

Bk+1=Bk+Pk+Qk

yk=Bk+1δk=Bkδk+Pkδk+Qkδk

令,yk=Pkδk,Bkδk=Qkδk,得:
找到合适的P与Q,得到迭代公式:

BK+1=Bk+ykyTkyTkδkBkδkδTkBkδTkBkδk

算法流程如下:
1. 给定初始值x0与阈值ϵ, Bk=I,k=0
2. 确定牛顿搜索方向:dk=B1kgk
3. 根据一维搜索确定步长λxk+1=xk+λdk
4. 计算gk+1,若||gk+1||<ϵ, 算法停止
5. 否则计算yk=gk+1gk, 进而计算得到Bk+1
6. k = k+1

L-BGFS算法

由于BGFS算法需要用到一个N*N的矩阵,在计算机中存储或计算非常不便,为此,不再存储完整的矩阵,而是仅存取当前计算中所需要的最新的m个δiyi向量,这样存储由原来的O(N2)变为O(mN)

思考与总结

  1. 梯度下降与牛顿法
    A. 梯度下降法利用目标函数的一阶偏导数信息,以负梯度方向作为搜索方向,只考虑目标函数在迭代点的局部性质;

    B. 牛顿法不仅利用一阶导数信息,还进一步利用了目标函数的二阶偏导数,这样就考虑了梯度变化的趋势。

  2. 牛顿法与拟牛顿法
    然而牛顿法有一些缺点:
    A . 函数必须具有连续的一、二阶偏导数,海森矩阵必须正定,若不正定则优化方向会“跑偏”,
    B. 计算复杂度高,计算导数矩阵和它的逆矩阵,尤其随着维数的增加,计算量与存储量都会变大。

    拟牛顿法避免了每次迭代都要计算海森矩阵的逆,收敛速度介于梯度下降法和牛顿法之间。同时拟牛顿法每次迭代不能保证最优的方向,但是迭代生成的近似矩阵都是正定的,因此算法总是朝着最优值的方向搜索。

http://blog.csdn.net/itplus/article/details/21897715

http://blog.csdn.net/zhirom/article/details/38332111

0 0
原创粉丝点击