深度学习的优化方法研究
论文信息:Le Q V, Ngiam J, Coates A, et al. On optimization methods for deep learning[C]//Proceedings of the 28th International Conference on Machine Learning, ICML 2011, Bellevue, Washington, USA, June 28 - July 2, 2011. DBLP, 2012.
本文提出时间较早,GPU和集群运算的并行计算还暂不普及
创新点:
- 作者基于当前SGD的局限性和LBFGS和CG方法的优势,对各种常见优化算法进行了比较,找到不同任务的理论上最适应的优化算法极其适应的原因。
- L-BFGS对于低维问题,尤其是卷积模型,L-BFGS具有很强的竞争力,有时甚至优于SGDs/CG。
- 对于高维问题,CG更具竞争力,通常优于L-BFGS和SGDs。
- SGDs使用大型小批处理和行搜索可以提高性能。
Abstract && Introduction
SGD 特点
优点:实现简单,当训练样本足够多时优化速度非常快。
缺点:
1.需要人为调整很多参数,比如学习率,收敛准则等。如果一个人不知道手头的任务,很难找到一个好的学习率或一个好的收敛准则。
2.它是序列的方法,不利于GPU并行或分布式处理。
3.针对SGD的局限性,目前现有的有限内存BFG(L-BFGS)和共轭梯度(CG)线搜索方法,可以极大简化和加快预训练深算法的过程
批处理方法,如有限内存BFG(L-BFGS)或共轭梯度(CG),具有线搜索过程的存在,通常训练起来更稳定,并且更容易检查收敛性。这些方法还通过在GPU上计算梯度和/或跨机器分布计算来享受并行性。
L-BFGS和CG需要计算整个数据集的梯度来进行更新,在数据集的一小部分上计算梯度的小批量训练很好地解决了这一弱点。当数据集较大时,小批量L-BFGS/CG速度很快。
本文分别在自编码器和稀疏自编码器训练上实证研究现成的重点比较L-BFGS、CG和SGDs优化算法的利弊。
概念介绍
-
SGD 随机梯度下降
批量梯度下降(Batch Gradient Descent):它是指在每一次迭代时使用所有样本来进行梯度的更新
随机梯度下降(Stochastic Gradient Descent):随机梯度下降是在每次迭代时使用一个样本来对参数进行更新
小批量梯度下降 (Mini-Batch Gradient Descent):使用一个以上而又不是全部的训练样本。梯度下降法的计算过程就是沿梯度下降的方向求解极小值,也可以沿梯度上升方向求解最大值。 假设模型参数为 θ \theta θ ,损失函数为 J ( θ ) J\left(\theta\right) J(θ) ,损失函数 J ( θ ) J\left(\theta\right) J(θ)关于参数 θ \theta θ 的偏导数,也就是梯度为 ▽ θ J ( θ ) \triangledown {\theta}J\left ( \theta \right ) ▽θJ(θ) ,学习率为 α \alpha α ,则使用梯度下降法更新参数为:
θ t + 1 = θ t − α ⋅ ∇ θ J ( θ ) \theta{t+1}=\theta_t-\alpha \cdot \nabla_\theta J(\theta) θt+1=θt−α⋅∇θJ(θ) -
L-BFGS 有限内存BFGS
L-BFGS由牛顿法发展而来,是为了提高计算效率而提出的近似计算方法,在施行牛顿法的过程中需要计算海森矩阵 H H H的逆 H − 1 H^{-1} H−1,计算矩阵逆工作量巨大,所以采用符合拟牛顿条件的矩阵代替或进行计算,这种方法称为拟牛顿法,其代表性方法有DFP算法和BFGS算法,L-BFGS在BFGS的基础上进一步在有限的内存下进行近似而提高效率的算法。BFGS算法可以只使用 B 0 B_0 B0表达,那么L-BFGS在这个基础上,再一次进行近似,就是只用有限的内存来保存近m个向量的值来进行计算。
-
CG 共轭梯度
使用梯度信息来获得共轭的搜索方向。而这种通过梯度信息来实现共轭方向法的算法被我们称为共轭梯度法(conjugate gradient method)
最优化方法复习笔记--共轭梯度法 -
Autoencoders 自编码器
Auto-Encoder,中文称作自编码器,是一种无监督式学习模型。它基于反向传播算法与最优化方法(如梯度下降法),利用输入数据
X X X 本身作为监督,来指导神经网络尝试学习一个映射关系,从而得到一个重构输出 X R X^R XR 。Auto-Encoder可以学习到输入数据的隐含特征,这称为编码(coding),同时用学习到的新特征可以重构出原始输入数据,称之为解码(decoding)。从直观上来看,自动编码器可以用于特征降维,类似主成分分析PCA,但是其相比PCA其性能更强,这是由于神经网络模型可以提取更有效的新特征。
自编码器
-
Map-Reduce
Map阶段:Map阶段的主要作用是"分",即把复杂的任务分解为若干个"简单的任务"来并行处理。Map阶段的这些任务可以并行计算,彼此间没有依赖关系。
Reduce阶段:Reduce阶段的主要作用是"合",即对map阶段的结果进行全局汇总。
-
MNIST数据集(Mixed National Institute of Standards and Technology database)是美国国家标准与技术研究院收集整理的大型手写数字数据集,包含了60,000个样本的训练集以及10,000个样本的测试集。
结论
作者通过实验得出的结论是:不同的优化算法有不同的优缺点,适合不同的场合,比如LBFGS算法在参数的维度比较低(一般指小于10000维)时的效果要比SGD(随机梯度下降)和CG(共轭梯度下降)效果好,特别是带有convolution的模型。
而针对高维的参数问题,CG的效果要比另2种好。也就是说一般情况下,SGD的效果要差一些,这种情况在使用GPU加速时情况一样,即在GPU上使用LBFGS和CG时,优化速度明显加快,而SGD算法优化速度提高很小。
在单机器训练上,LBFGS的优势主要是利用参数之间的2阶近视特性来加速优化,而CG则得得益于参数之间的共轭信息,需要计算Hessian矩阵。不过当使用一个大的minibatch且采用线搜索的话,SGD的优化性能也会提高。
在单机器训练上比较SGD,LBFGS,CG三种算法的优化性能,当针对Autoencoder模型,SGD效果最差。这主要原因是LBFGS和CG能够使用大的minibatch数据来估算每个节点的期望激发值,这个值是可以用来约束该节点的稀疏特性的,而SGD需要去估计噪声信息。
CG和L-BFG也是可以更好地利用GPU的方法,因为它们偏好更大的小批量。此外,如果使用平铺(局部连接)网络或具有相对少量参数的其他网络,则可以在Map-Reduce框架中计算梯度,并使用L-BFGS加速训练