神经网络之最优化方法

最优化方法

优化方法是深度学习中一个比较重要的话题,其实他的知识来自于最优化理论,如果想详细关注这个话题建议读一下最优化理论这本书,注意本书仅供参考,请误商业使用。本文将介绍常用的最优化方法,梯度下降法,牛顿法,拟牛顿法和共轭梯度法。

梯度下降法

梯度下降法是我们接触最多的方法,在目标函数是凸函数的时候能得到全局最优解。

对于一个函数f(x)f(x),它的梯度f(x)f'(x)f(x)f(x)的梯度,对于足够小的α\alpha,会存在如下表达式。

f(xαsign(f(x)))<f(x)(1.1)f(x-\alpha sign(f'(x)))<f(x) \tag{1.1}

所以按照梯度的方向移动是可以找到f(x)f(x)的最小值的,并且也是找到最小值最快的方向,短短几句话就描述了梯度下降法的梗概。其实梯度下降法,越是下降到极值的部分,我们希望α\alpha越小,前进越慢,否则就越过最优点啦。

批量梯度下降

而所谓的批量梯度下降呢,就是用全部数据进行这样的梯度下降,这样无疑是能找到全局最优解的,但是考虑计算资源的情况下就很难找到场景使用啦。

随机梯度下降

顾名思义就是从原始数据中随机抽取一部分数据,进行梯度的计算,但是这样就会带来一个问题,就是往往这种梯度下降法计算结果相对不稳定,容易震荡,不过整体上还是往最优解拟合的。算是一个折中的办法。

动量法

为了解决梯度下降时快时慢的问题,我们在介绍一种动量法,为了表示动量这一概念,我们引入一个变量VV,VV是之前梯度的累加然后加上一定的衰减。

Vn+1=rVn+αJ(θ)(1.2)V_{n+1}=rV_n + \alpha \nabla J(\theta) \tag{1.2}

θn+1=θVn+1(1.3)\theta_{n+1}=\theta - V_{n+1} \tag{1.3}

其中VnV_n表示之前所有的步骤所累积的动量和。

牛顿法,拟牛顿法和共轭梯度法

我们可以看出,梯度下降是基于一阶导数来进行优化的,而牛顿法是基于二阶导数优化的,通常收敛速度更快。该算法通过一阶二阶导数信息来推测整个函数的形状,进而快速求的全局最小值。

不过牛顿法在迭代过程中总是要求目标函数的HESSIAN矩阵,计算比较复杂,当HESSIAN矩阵不可逆的时候就存在盲点,而且即使能够计算复杂度也是n2n^2,计算量太大。

拟牛顿法通过正定矩阵来近似一个HESSIAN矩阵,不需要二阶导数,简化了计算的复杂度。

共轭梯度法是通过迭代下降共轭方向来避免计算HESSIAN矩阵求逆的计算,速度上介于牛顿法和拟牛顿法之间。

Adagrad算法

上面提到的算法都有一个共同的点不知道大家有没有发现,共同点就是都谁用了学习率这一个概念,但是学习率又是事先指定的超参数,对于所有的参数都适用,但是有些数据因为数据量小,可能某一个学习率是不能满足它的变化的,而Adagrad算法就是针对这个问题提出来的。

nt=nt1+gt2(1.4)n_t=n_{t-1}+g_{t}^2 \tag{1.4}

θ=ηnt+ϵ(1.5)\theta = -\frac{\eta}{\sqrt{n_t + \epsilon}} \tag{1.5}

其中gtg_t是当前梯度,η\eta是当前学习率,ϵ\epsilon表示一个比较小的数字,用来保证分母非零,该算法的含义是每个参数随着更新的总距离增多,而减小学习率。

前期gtg_t较小的时候,正则项较大,能够放大梯度,后期gtg_t变大的时候,正则项较小,能够约束梯度,适合处理稀疏梯度。

Adagrad算法存在的问题是:

  • 其学习率单调递减,训练后期学习率很小
  • 需要手工设置一个全局的学习率。

但是Adagrad算法同样需要设计一个全局的学习率η\eta,如果过大会让正则项比较敏感。如果解决这个问题需要使用Adadelta。

Adadelta算法

Adadelta算法就是为了解决Adagrad算法以上几个问题,同样学习率是自适应的,Adagrad算法是累加所有梯度的平方,而Adadelta算法是累加固定的大小项,并且存储这些计算的平均值。

nt=vnt1+(1+v)gt2(1.6)n_t=v*n_{t-1} + (1+v)*g_{t}^2 \tag{1.6}

θ=ηnt+ϵgt(1.7)\theta=\frac{\eta}{\sqrt{n_t+\epsilon}}*g_t \tag{1.7}

Adadelta算法不依赖全局的学习率,训练的初中期加速效果理想,但是训练后期容易反复在局部最小值附近波动。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×