理论、算法两手抓,UIUC 助理教授孙若愚 60 页长文综述深度学习优化问题

神经网络何时才算训练成功?成功背后的原因是什么?本文概述了用于训练神经网络的优化算法和理论。

深度学习优化方法都有哪些?其理论依据是什么?最近,来自伊利诺伊大学香槟分校(UIUC)的研究者孙若愚就此主题写了一篇长达 60 页的综述论文。

UIUC 助理教授孙若愚(图源:https://ise.illinois.edu/directory/profile/ruoyus)

孙若愚现任 UIUC 助理教授,本科毕业于北京大学数学系,博士毕业于美国明尼苏达大学。其主要研究方向为数据分析
  • 个人主页:https://ise.illinois.edu/directory/profile/ruoyus

  • 论文地址:https://arxiv.org/pdf/1912.08957.pdf

由于论文篇幅较长,机器之心选取了部分内容进行编译介绍,更多详情参见原论文。

这篇文章首先讨论了梯度爆炸/消失问题以及更通用的谱控制问题,并讨论了一些实际解决方案,如初始化和归一化方法;其次,本文综述了神经网络训练过程中使用的一般优化方法,如 SGD、自适应梯度方法和分布式方法,还介绍了这些算法的现有理论结果。最后,本文综述了关于神经网络训练的全局问题的研究,包括糟糕的局部极小值上的结果、模式连接(mode connectivity)、彩票假设和无限宽度分析。

引言

本文的主题是了解成功训练神经网络的实用要素以及导致模型训练失败的可能因素。

假设你回到 1980 年,想使用神经网络解决图像分类问题。如果从头开始训练,那么你最初的几次尝试大概率无法得到合理的结果。是哪些本质变化使算法奏效了呢?整体来看,(除了强大的硬件以外)你需要三样东西:恰当的神经网络、恰当的训练算法和恰当的训练 trick。

恰当的神经网络

这包括神经架构和激活函数。对于神经架构,你可能想用至少具备 5 个层和足够神经元的卷积网络来替换全连接网络。为了得到更好的性能,你可能想将网络宽度增加到 20 甚至 100,并添加跳跃连接。至于激活函数,ReLU 是不错的起点,不过 tanh 和 swish 也可以。

恰当的训练算法

使用 SGD 并坚持到最后是一个不错的选择。经过微调的常量步长已经足够好,而动量和自适应步长还可以提供额外的好处。

恰当的训练 trick

恰当的初始化对开始算法训练非常重要。要想训练一个超过 10 层的网络,通常需要用到两个训练 trick:添加归一化层、添加跳跃连接。

这些设计选择中哪些是必要的?目前我们对一些设计选择有所了解,包括初始化策略、归一化方法、跳跃连接、过参数化(大宽度)和 SGD,如下图 1 所示。

本文将优化的益处大致分为三部分:控制利普希茨常数(Lipschitz constant),实现更快收敛,获得更好的损失分布(landscape)。但是还有很多难以理解的设计选择,最显著的当属神经架构了。

现在我们似乎无法理解神经架构这一复杂系统的每一部分,但目前已有的理解可以提供一些有用的见解。

图 1:成功训练神经网络的几项主要设计选择(已具备理论理解)。它们对算法收敛的三个方面产生影响:实现收敛、实现更快收敛、获得更好的全局解。这三项相互关联,这里只是大致的分类。注意:存在其他重要的设计选择,尤其是神经架构。目前我们并未在理论层面理解神经架构,因此本图未包含该项。这些设计选择还有其他好处,如泛化(本图同样未包含该项)。

为保持本综述论文的简洁性,本文将主要关注使用前馈神经网络监督学习问题,不讨论更复杂的公式(如 GAN 和深度强化学习),也不涉及更复杂的架构(如 RNN、注意力和胶囊网络)。在更宽泛的语境中,监督学习理论至少包含表示、优化和泛化,本文专注于优化,不过多讨论表示和泛化。

本文的核心目标是理解神经网络结构(由多个变量连接构成的参数化)对优化算法设计和分析的影响,优化算法可以超出监督学习范式。

本文适合对神经网络优化的理论理解感兴趣的研究者。了解优化方法及其基础理论有助于读者阅读本文。关于深度学习优化的现有综述文章针对的是一般的机器学习从业者,如 Goodfellow 等人所著《深度学习》的第 8 章。这些综述文章通常不深入讨论优化的理论层面。而本文将更多地关注理论结果,同时试图让无理论知识的读者也能理解。本文尽可能用简单的示例诠释直观概念,而不是解释定理的细节。

大方向:分解理论

研究理论时,分解是一种有用且常见的元方法。本文首先简要综述优化在机器学习中的作用,然后讨论如何分解深度学习优化理论。

表示、优化和泛化

监督学习的目标是基于观测样本找出逼近底层函数的函数。第一步就是找到能够表示期望函数的函数族(如神经网络);第二步是最小化特定损失函数,进而确定函数的参数;第三步是使用第二步找到的函数在未见过的测试数据上执行预测,得到的误差就是测试误差。测试误差可被分解为表示误差、优化误差和泛化误差,分别对应这三个步骤导致的误差。

机器学习中,「表示」、「优化」和「泛化」经常被分开研究。例如,在研究特定函数族的表示能力时,我们通常不关心它们能否很好地解决优化问题。在研究泛化误差时,我们通常假设找到了全局最优解。类似地,在研究优化属性时,我们常常不会明确考虑泛化误差(不过有时会假设表示误差为零)。

优化问题的分解

深度学习优化问题很复杂,需要进一步分解。优化的过程可以分为三步:第一步是开始运行算法,使之收敛至合理的解,如驻点;第二步是使算法尽快收敛;第三步是确保算法收敛至一个具备低目标值的解(如全局最小值)。还有一个额外的步骤是获取优秀的测试准确率,但这超出了优化范畴,这里不过多讨论。

简言之,本文将优化问题划分为三部分:收敛收敛速度和全局质量。

文章结构

本文第二章介绍了监督学习范式下,典型神经网络优化问题的公式。

第三章介绍了反向传播,并分析了对神经网络梯度下降应用经典收敛分析的难度。

第四章讨论了训练神经网络的 trick,以及一些底层理论。这些方法依赖于神经网络,打开了神经网络的黑箱。具体而言,这部分讨论了梯度爆炸/消失这一主要挑战,以及更一般的谱控制(controlling spectrum)难题,此外,第四章还综述了主要的解决方案,如初始化和归一化方法。

第五章讨论了通用算法设计:将神经网络视作通用非凸优化问题。具体而言,这部分综述了使用不同学习率的 SGD、自适应梯度方法、大规模分布式训练、二阶优化方法,以及现有的收敛和迭代复杂度结果。

第六章综述了神经网络全局优化方面的研究,包括全局分布、模型连接、彩票假设和无限宽度分析(如神经切线核)。
理论深度学习综述论文UIUC孙若愚优化算法
2
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

深度强化学习技术

强化学习(Reinforcement Learning)是主体(agent)通过与周围环境的交互来进行学习。强化学习主体(RL agent)每采取一次动作(action)就会得到一个相应的数值奖励(numerical reward),这个奖励表示此次动作的好坏。通过与环境的交互,综合考虑过去的经验(exploitation)和未知的探索(exploration),强化学习主体通过试错的方式(trial and error)学会如何采取下一步的动作,而无需人类显性地告诉它该采取哪个动作。强化学习主体的目标是学习通过执行一系列的动作来最大化累积的奖励(accumulated reward)。 一般来说,真实世界中的强化学习问题包括巨大的状态空间(state spaces)和动作空间(action spaces),传统的强化学习方法会受限于维数灾难(curse of dimensionality)。借助于深度学习中的神经网络,强化学习主体可以直接从原始输入数据(如游戏图像)中提取和学习特征知识,然后根据提取出的特征信息再利用传统的强化学习算法(如TD Learning,SARSA,Q-Learnin)学习控制策略(如游戏策略),而无需人工提取或启发式学习特征。这种结合了深度学习的强化学习方法称为深度强化学习。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

凸优化技术

凸优化,或叫做凸最优化,凸最小化,是数学最优化的一个子领域,研究定义于凸集中的凸函数最小化的问题。凸优化在某种意义上说较一般情形的数学最优化问题要简单,譬如在凸优化中局部最优值必定是全局最优值。凸函数的凸性使得凸分析中的有力工具在最优化问题中得以应用,如次导数等。 凸优化应用于很多学科领域,诸如自动控制系统,信号处理,通讯和网络,电子电路设计,数据分析和建模,统计学(最优化设计),以及金融。在近来运算能力提高和最优化理论发展的背景下,一般的凸优化已经接近简单的线性规划一样直捷易行。许多最优化问题都可以转化成凸优化(凸最小化)问题,例如求凹函数f最大值的问题就等同于求凸函数 -f最小值的问题。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

前馈神经网络技术

前馈神经网络(FNN)是人工智能领域中最早发明的简单人工神经网络类型。在它内部,参数从输入层经过隐含层向输出层单向传播。与递归神经网络不同,在它内部不会构成有向环。FNN由一个输入层、一个(浅层网络)或多个(深层网络,因此叫作深度学习)隐藏层,和一个输出层构成。每个层(除输出层以外)与下一层连接。这种连接是 FNN 架构的关键,具有两个主要特征:加权平均值和激活函数。

动量技术

优化器的一种,是模拟物理里动量的概念,其在相关方向可以加速SGD,抑制振荡,从而加快收敛

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

机器之心机构

机器之心,成立于2014年,是国内最具影响力、最专业、唯一用于国际品牌的人工智能信息服务与产业服务平台。目前机器之心已经建立起涵盖媒体、数据、活动、研究及咨询、线下物理空间于一体的业务体系,为各类人工智能从业者提供综合信息服务和产业服务。

https://www.jiqizhixin.com/
二阶优化方法技术

最优化方法,是指解决最优化问题的方法。所谓最优化问题,指在某些约束条件下,决定某些可选择的变量应该取何值,使所选定的目标函数达到最优的问题。即运用最新科技手段和处理方法,使系统达到总体最优,从而为系统提出设计、施工、管理、运行的最优方案。

胶囊网络技术

简而言之,一个胶囊网络是由胶囊而不是由神经元构成。一个胶囊是一小群神经元,它们可以学习在一个图片的一定区域内检查一个特定的对象(比如,一个矩形)。它的输出是一个向量(例如,一个8维的向量)。每个向量的长度代表了物体是否存在的估计概率[1],它的方向(例如在8维空间里)记录了物体的姿态参数(比如,精确的位置、旋转等)。如果物体有稍微的变化(比如,移动、旋转、尺寸变化等),胶囊将也会输出一个长度相同但是方向稍微变化的向量。因此胶囊是等变的。

推荐文章
暂无评论
暂无评论~