深度学习中的优化算法

在深度学习过程中经常会听到**优化 算法云云,优化算法即通过迭代的方法计算目标函数的最优解,为什么要用到优化算法呢?

1、如果是凸优化问题,如果数据量特别大,那么计算梯度非常耗时,因此会选择使用迭代的方法求解,迭代每一步计算量小,且比较容易实现

2、对于非凸问题,只能通过迭代的方法求解,每次迭代目标函数值不断变小,不断逼近最优解

因此优化问题的重点是使用何种迭代方法进行迭代,即求迭代公式。下面简单介绍几种优化算法 :梯度下降法,牛顿法,拟牛顿法,BFGS

梯度下降法:

  梯度下降法是求解无约最优化问题的一种最常用的方法,设f(x)具有一阶连续偏导数的函数,要求解的无约束最优化问题是:

      min f(x)

  X*表示目标函数的的极小点。

主要核心思想: 负梯度方向是使函数值下降最快的方向,在迭代的每一步以负梯度方向更新x的值,从而达到减少函数值的目的。

 

f(x)的一阶泰勒展开:

,gk为Xk处的梯度方向

即函数在x处的值可以通过,Xk处的函数值与Xk处的梯度方向来表示,那么Xk+1可以由Xk与gk来表示,即

, Pk为搜索方向,取负梯度方向,为搜索步长,由一维搜索确定,即使得:

 迭代公式 :

当目标函数是凸函数时,梯度下降法的解是全局最优解。

 由于使用梯度下降法时,每一步都需要计算在当前迭代值xk处的梯度值,而计算梯度需要使得全部样本进行计算, 这样计算量将非常大,因此为了降低计算量,有人提出了随机梯度下降法,即每次随机选择一个样本计算梯度,大大提高了

计算速度。

牛顿法:

  考虑约束问题

      min f(x)

  其中x*为目标函数的极小点。

  f(x)的二阶泰勒展开:

        式(1-1)

  这里gk是f(x)在梯度向量在点xk处的值,H(xk)是f(x)的海森矩阵在点xk处的值。函数有极值的条件的必要条件是在极值点处一阶导数为0,即梯度向量为0。

  牛顿法利用极小点的必要条件:

每次迭代从点Xk开始,求目标函数的极小点,作为第k+1次迭代值x(k+1),假设,由式(1-1)有

                         式(1-2)

,因此

                                   式(1-3)

式(1-3)即为牛顿法的迭代公式 

 

拟牛顿法:

在牛顿法的迭代中,需要计算海赛矩阵的逆矩阵H-1这一计算比较复杂,考虑用一个n阶矩阵来近似代替H-1,这就是拟牛顿法的基本思路。

DFP(Davidon-Fletcher-Powell)使用一个n阶矩阵Gk+1来近似H-1

BFGS(Broyden-Fletcher-Goldfarb-Shanno)使用一个n阶矩阵Bk来逼近H

L-BFGS(Limited -BFGS ):由于上述两种拟牛顿法都要保存一个n阶矩阵,对于内存消耗非常大,因此在此基础上提出了一种节约内存的方法L-BFGS

 

由于牛顿法的迭代公式有考虑目标函数的具体分布,因此相对于梯度下降算法收敛速度更快,在实际应用中经常使用LBFGS方法。

 

关于Conjugate Gradient方法,请参考博文http://www.cnblogs.com/dupuleng/articles/4165092.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值