Py学习  »  机器学习算法

综述 | 深度学习中的优化理论

数据派THU • 3 年前 • 292 次点击  

来源:运筹OR帷幄

本文约5200字,建议阅读10+分钟。
展望未来研究趋势,拒绝做调参侠从我开始。

标签:人工智能


神经网络的训练主要通过求解一个优化问题来完成,但这是一个困难的非线性优化问题,传统的优化理论难以直接应用。在神经网络和优化的交叉领域,长期以来研究人员积累了大量的理论研究和知识,不过这些研究或过于理论而不被大部分实践者所了解,或过于偏工程而不被理论学者所理解和欣赏。

本文概述了神经网络的算法和优化理论。对苦于调参常感到困惑的工程师而言,本文可以提供一些已有的理论理解以供参考,并提供一些思考的方式。对理论学者而言,本文力图解释其作为数学问题的困难之所在以及目前的理论进展,以期吸引更多研究者投身神经网络优化理论和算法研究。

原文二维码和链接:


一、导言

优化问题一直是神经网络研究的重要组成部分。神经网络的特殊性,导致其优化问题看上去似乎很简单,但实际上因为非线性函数组合的原因而变得非常复杂。打开神经网络的“黑箱”,其内部结构宛若一个庞大的迷宫。如果能够理解它们并且合理的利用它们,我们将获得非常强大的工具。但现有的非线性优化理论远远不足以解释神经网络训练的实际行为。一些实践看似简单的方法,虽然有很好的效果,但无法借助现有的理论远来解释它们的有效性。这篇综述将重点关注前馈神经网络的监督学习问题。神经网络的优化问题可以分为三个步骤:第一步是确保算法能够运行,并能收敛到一个合理的解;第二步是使算法尽可能快地收敛;第三步是确保算法收敛到例如全局最小这样的更好的解,即收敛性、收敛速度和全局质量。

二、有监督机器学习优化问题


假设给定个数据点,其中分别代表样本点的特征向量与相应的标签向量。有监督机器学习任务通常是利用的信息来预测相应的。当我们使用一个神经网络 来近似的映射函数时,需要选择神经网络中的参数,使得预测输出最接近真实输出。这种接近程度可以用某种距离测度进行度量。假设代表之间的距离,那么优化问题就变成寻找最优参数,使得距离函数最小。在回归问题中,距离测度通常用二次损失函数来表示,而在二分类问题中,经常选择 


三、梯度下降


大量的神经网络优化问题都采用梯度下降(GD)进行求解。梯度下降的基本形式是:

  

其中是步长(也称为“学习速率”),是第t次迭代的损失函数的梯度。损失函数的梯度采用从网络顶层向网络底层反向传播的方式进行计算,这样一种更新过程在额外的假设条件下可以被认为是达成一般意义上的收敛,但也会在一些情况下导致梯度爆炸以及梯度消失的问题。


四、使用神经网络的技巧 


在没有先验经验的情况下,训练一个神经网络以求得到一个合理的精度是相当困难的。如今,人们也从大量的实验中总结出一些使用神经网络的技巧。


4.1 梯度爆炸/梯度消失


梯度爆炸/梯度消失是训练神经网络过程中最最普遍的问题,这类问题会导致收敛速度过于缓慢。在梯度的反向传播过程中,输出层的误差将被传回前一层,继而调整权重以减少误差。在一系列传播过程中,梯度有可能在每一层被放大从而爆炸,或者在每一层被缩小从而消失。这两种情况都会导致权重的更新出现问题。那么如何解决梯度爆炸/消失问题呢?对于一维优化问题,可以在“盆地”内部选择一个接近全局最小值的初始点开始迭代更新过程。而对于一般的高维问题,一种类似的解决方法也是在“好盆地”内选择一个初始点,这样加可以加快迭代速度。这就与初始点的选择问题紧密相关。


4.2 初始点的选择


在初始点的选择范围内,有一大片区域会造成梯度爆炸/消失,这些区域就被称为梯度爆炸/消失区域。那么如何确定哪里是梯度爆炸/消失区域,哪里又是好的区域呢?首先尝试一些简单的初始点,例如全零初始点, 或者是只有一小部分非零权重的稀疏初始点。亦或是从某些随机分布中抽取权重。然而这种尝试并不具有稳健性,因而另外一类具有规则的初始点选择方法得到广泛运用,例如Bouttou和LeCun提出的具有特定方差的随机初始化法,预训练法以及基于此改进的Xavier初始化法,Kaiming初始化法,层序单位方差(LSUV)初始化法,基于Kaiming法衍化的带一般非线性激活函数的无限宽网络法,针对不同网络种类的动态等距法以及元初始化法。


4.3 标准化方法 


第二种解决梯度爆炸/消失的方法是在算法过程中进行规范化。它被认为是前一种方法的扩展,因为除了改进初始点之外,还要改进后续迭代过程的网络。一种代表性的方法是批处理规范化(BatchNorm),其目标是对样本中每一层的输出进行规范化,将规范化过程视作一个非线性变换“BN”,并将BN层添加到原始神经网络中。BN层与激活函数和其他网络层发挥相同的作用。


BatchNorm方法被证明在理论上具有显著的优点,例如减少了李普希兹常数,增加了学习率等。其缺点在于,BatchNorm使用小样本的均值和方差来作为样本总体的均值与方差的近似,从而导致训练具有不同统计量的小批量样本时表现不佳。因此研究者提出了另外一些标准化法,如权重标准化,网络层标准化,实例标准化,群标准化,谱标准化以及可换标准化。


4.4 改变神经架构 


第三种解决方法是改变神经结构。ResNet采用了一个简单的技巧:每隔几层网络就增加一个身份跳转连接。之前的神经网络,每一层可以表示为:



其中层的权重,层的输出。ResNet的每一层网络则变换为:



其中F代表原始网络的几层,例如。ResNet已经取得了显著的成功。神经架构设计是当前深度学习研究的主要思路之一。


4.5 训练极深神经网络 


目前有几种方法可以训练非常深的网络(比如说超过1000层),并在图像分类任务中取得不错的准确性。


除了这三个技巧之外,还有相当多的影响神经网络表现的设计选择,例如数据处理,优化方法,正则化,神经结构和激活函数等。


五、训练神经网络的通用算法 


5.1 随机梯度下降与学习速率调整 


随机梯度下降(SGD)的工作原理如下:在第t次迭代中,随机选择一组小批样本的梯度进行更新代表步长(学习速率)。在最简单的SGD版本中,步长是恒定的,这种随机梯度下降法也被称为vanilla SGD。在非恒定步长的情况下,学习速率也有不同的变换形式。例如,学习速率的“预热”在深度学习中被广泛使用,其含义是在多次迭代中先使用非常小的学习速率, 然后增加到“常规”学习速率。另一种变化是循环学习率,基本思想是让步长在下限和上限之间跳跃。

固定学习率与递减学习率的比较与分析一直是SGD的理论分析的重点。理论分析表明,神经网络优化具有特殊的结构,因此经典优化理论可能不适用于神经网络。梯度下降的收敛加速问题也是理论研究的重点。相关实验证明,SGD相对于普通梯度下降的收敛速度有所加快。但这种加速效果也取决于许多其他因素。


5.2 动量和加速SGD


带动量的SGD的工作原理如下:在第次迭代中,随机选取小批样本,并通过以下方式更新动量项和参数:



这类方法在机器学习领域得到了广泛的应用,它们在实际应用中的收敛速度比一般的随机梯度法要快,而且在处理凸问题或二次问题中也具有理论上的优势。动量SGD的优异表现仅适用于批处理方法(即每次迭代使用所有样本)。但在实际应用中,这种理论上的优势也难以达成。有两种方法可以得到比SGD更快的收敛速度。

首先,通过利用诸如方差缩减之类的技巧,更高级的优化方法来实现动量与SGD这一组合在收敛速度上的理论提升。但这些方法有些复杂, 在实践中并不流行。第二种方法是通过考虑问题的更多结构和更简单的SGD变体来实现加速。上述方法仅适用于凸问题,因此不能直接适用于非凸的神经网络问题。最近有许多理论性新方法的设计,使其收敛速度在一般非凸问题上比一般的随机梯度下降还要快,但这些方法尚待广泛地应用与检验。


5.3 自适应梯度方法


第三类流行的方法是如 AdaGrad,RMSProp和Adam的自适应梯度下降。AdaGrad的描述如下:在第次迭代中,随机选择小批量样本并将参数更新为:


,其中


AdaGrad的一个缺点是它对所有过去的梯度都一视同仁,因此对过去的梯度使用指数递减权重。的这一新定义启发了RMSProp和一个更复杂的算法AdaDelta。AdaGrad自适应梯度方法是用来处理稀疏和高度不平衡的数据,也被普遍认为比普通的SGD和带动量的SGD有更快的收敛速度但更差的泛化性。


5.4 大规模分布式计算


神经网络优化的一个重要课题是如何利用多台机器加速训练。这个主题与分布式和并行计算密切相关。另有其他的学习速率调整法与二阶法被提出来改进神经网络的训练过程。


六、神经网络的全局优化 


前述的方法主要用来求解局部最优参数,但由于机器学习的优化问题具有非凸性,这些方法难以保证求得全局最优参数。目前有越来越多的研究正在试图解决全局最优问题,例如:算法何时能收敛到全局最小值?是否存在次优局部极小值?优化环境有哪些特性?如何选择一个初始点来保证收敛到全局最小值?这些问题分属于以下的细分领域:


  • 可处理的问题  什么样的问题是可处理的?人们通常认为非凸问题无法处理,但实际上许多非凸优化问题可以被重新表示为凸问题,因此可处理与不可处理问题的界限并不清晰。作者猜想一些神经网络问题属于“易处理的”问题。

  • 全局优化  旨在设计和分析算法,找到全局最优解。

  • 非凸矩阵/张量分解 这是与神经网络全局优化最相关的子领域,尝试解释为什么许多非凸矩阵/张量问题可以容易地求解到全局最小值。


6.1 实证探索


神经网络的高维损失函数构成了一个损失曲面,也被称为优化地形。Dauphin等人在他们早期的论文中表明,没有在神经网络的优化地形上发现糟糕的局部最小值。在一些二维可视化研究中,随着宽度的增加,优化地形变得“更平滑”,并且添加跳转连接也会使这个地形更加平滑。尽管很难精确地做出高维表面的表征,但在神经网络领域,人们发现了深度神经网络的一个几何性质,即“模式连通度”。Draxler等人和Garipov等人独立地发现两个全局最小值可以通过等值路径连接。另一个与优化地形密切相关的研究方向是训练更小的神经网络(或称为“高效深度学习”。网络修剪方法表明,许多大型网络可以被修剪以获得更小的网络,而测试精度只下降很少。

然而,在网络修剪过程中,小网络通常必须从具有良好性能的大网络的解中继承权重,否则从头开始训练小网络通常会导致性能显著下降。Frankle和Carbin发现,在某些情况下,一个好的初始点可以被相对容易地找到。对于一些数据集,经验表明,一个大型网络包含一个小型子网和一个特定的“半随机”初始点,因此从这个初始点训练小型网络可以获得类似于大型网络的性能。可训练的子网被称为 “中奖彩票”,因为它赢得了“初始化彩票”。彩票假说(LTH)指出,这样的中奖彩票总是存在的。关于网络修剪和LTH的工作大多是经验性的,还需要更多的理论论证。

优化地形长期以来也被认为与泛化误差有关。一个常见的猜想是一个平且宽的极小值比陡峭的极小有更好的泛化性,这一猜想也被相关的实验所验证。也有人认为陡峭的极小值可以通过重新参数化的方法变成平宽的极小值,从而提高泛化性。因此,如何严格定义“宽和“尖,继而如何寻找较宽的极小值,成为目前重要的课题。


6.2 深度神经网络的优化理论


对于超宽网络的梯度下降问题的理论分析在三类深层神经网络取得了积极的结果,它们分别是深度线性网络、深度过度参数化网络和改进的网络。深层线性网络线性网络几乎没有表示能力,但在非常宽松的条件下,深层线性网络的每一个局部最小值都是一个全局最小值。深度过参数化网络过参数化网络是典型的非线性网络。

人们普遍认为 “超出必要范围的参数”可以使优化地形变得平滑,但这种猜想没有得到严格的证明。实验发现,过度参数化不能消除坏的局部极小值,只能消除不良的“盆地”(或虚假 的山谷。网络的改进问题主要是研究初始的神经网络的变化对优化地形带来的影响。目前为止,我们仍然无法确保所有的神经网络都能成功训练,神经网络失效的风险与网络的结构有关。例如,许多研究表明带ReLU激活函数的网络具有很差的局部极小值。

好的优化地形使得优化问题本身具有良好的属性,但不能保证优化算法也能有好的结果。对于一般的神经网络来说,对算法进行收敛性分析是极其困难的。而在线性网络和超宽网络这两种主要深度网络中,大量算法的收敛性得到了证明。


6.3 浅层网络研究 


浅层网络的研究主要集中在单隐层神经网络的全局地形分析,双层神经网络的算法分析以及单隐层神经网络的算法分析中。

七、总结


这篇综述回顾了现有的与神经网络优化相关的理论成果,尤其关注前馈神经网络的训练问题。目前,我们熟悉理解了初始点的选择对稳定训练的影响, 也对过度参数化对优化地形的影响有了相应的理解。而在网络的设计问题上,受到理论研究的启发而产生的算法已经成为非常实用的工具。此外,一些在实验中出现的有趣的现象,例如模式连通性和彩票假说,需要进行更多的理论研究。总体来说,神经网络优化理论有相当大的进步。尽管仍有许多挑战,尽管尚不知道我们是否触及神经网络优化理论的天花板,但就像优化理论发展史所揭示的那样,我们需要的只是时间。



作者简介

孙若愚,UIUC(伊利诺伊大学香槟分校)助理教授,研究数学优化和机器学习 。在加入UIUC之前,曾担任Facebook人工智能研究所的访问科学家。他曾于斯坦福大学随INFORMS冯诺依曼奖获得者叶荫宇教授从事博士后研究,博士于美国明尼苏达大学师从加拿大皇家科学院院士、Farkas奖获得者罗智泉教授,本科毕业于北京大学数学科学学院。最近的研究方向包括神经网络的优化理论和算法、生成对抗网络、大规模优化算法、非凸矩阵分解等等。个人网站 https://ruoyus.github.io/


编辑:黄继彦

校对:林亦霖


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/71203
 
292 次点击