是否可以在不进行反向传播的情况下训练神经网络?


94

许多神经网络书籍和教程都在反向传播算法上花费了大量时间,反向传播算法本质上是计算梯度的工具。

假设我们正在建立一个具有约10K参数/权重的模型。是否可以使用一些无梯度优化算法来运行优化?

我认为计算数字梯度会太慢,但是其他方法(如Nelder-Mead,模拟退火或遗传算法)如何?

所有算法都会遭受局部极小值的困扰,为什么会迷恋梯度?



6
@FranckDernoncourt我将另一个问题解释为“为什么不使用全局优化技术来训练神经网络?”,而这个问题更多的是“为什么不使用无导数优化器...”。
GeoMatt22'9

6
有了3个投票赞成的答案,这似乎还不够广泛,我无法回答。
gung

5
是的,您不必担心Nelder-Mead会停留在局部最小值,因为如果它有用的话,您会很幸运。
Mark L. Stone

1
顺便说一句,超L-BFGS,让它旋转。它可能很好,但是它如此晦涩,可能甚至没有人在神经网络上尝试过它。见p上的公式2.9。12(尽管您需要阅读前几页才能理解该公式)maths.dundee.ac.uk/nasc/na-reports/NA149_RF.pdf(在本文中未称为ultra BFGS),然后需要进入“ L”(有限内存)版本的是超级L-BFGS,而不是超级BFGS。非L版本在本文中列出。Ultra BFGS基本上是增强型(“热棒”)BFGS-可以更快,但可能更疯狂。
Mark L. Stone

Answers:


80

您提到的前两种算法(Nelder-Mead和“模拟退火”)在优化圈中通常被认为已经过时了,因为有更好,更可靠且成本更低的替代方案。遗传算法涵盖范围很广,其中一些可能是合理的。

但是,在更广泛的无导数优化(DFO)算法类别中,有许多方法明显优于这些“经典”算法,因为这是近几十年来的活跃研究领域。那么,其中一些较新的方法对于深度学习是否合理?

以下是比较最新技术水平的一篇论文:

Rios,LM&Sahinidis,NV(2013)无导数优化:算法回顾和软件实现比较。全球优化杂志。

这是一篇不错的论文,对最新技术有很多有趣的见解。例如,结果清楚地表明,使用不同形式的顺序二次编程(SQP),最佳的本地优化程序都是“基于模型的” 。

但是,正如他们的摘要所述:“我们发现,所有这些求解器获得良好解决方案的能力随着问题规模的增加而减弱。” 为了给出数字的概念,对于所有问题,求解器的预算为2500个功能评估,并且问题大小最多为300个要优化的参数。除了O [10]参数之外,这些优化器中很少有性能很好的,甚至最好的优化器也会随着问题大小的增加而导致性能显着下降。

因此,对于非常高维的问题,DFO算法与基于导数的算法没有竞争力。从某种角度看,基于PDE(偏微分方程)的优化是另一个具有非常高的尺寸问题(例如,大型3D有限元网格的每个单元的多个参数)的领域。在此领域中,“ 伴随方法 ”是最常用的方法之一。这也是基于前向模型代码的自动微分的梯度下降优化器。

最接近高维DFO优化器的可能是Ensemble Kalman滤波器,用于将数据同化为复杂的PDE模拟,例如天气模型。有趣的是,这本质上是一种SQP方法,但是具有贝叶斯-高斯解释(因此,二次模型是正定的,即没有鞍点)。但是我不认为这些应用程序中的参数或观察结果的数量可与深度学习中看到的相当。

旁注(局部最小值):从我对深度学习的了解中,我认为共识是,这是鞍点而不是局部最小值,这对于高维NN参数空间最成问题。

例如,最近在《自然》杂志上发表的评论说:“最近的理论和经验结果强烈表明,局部极小值通常并不是一个严重的问题。相反,景观中充斥着大量的鞍点,其中梯度为零,并且表面在大多数尺寸上都向上弯曲,而其余部分上则向下弯曲。”

一个有关的关注点是局部优化与全局优化(例如,注释中指出的这个问题)。虽然我不进行深度学习,但根据我的经验,过拟合绝对是一个有效的问题。在我看来,全局优化方法最适合不强烈依赖“自然”数据的工程设计问题。在资料同化问题,任何目前全球最小可以很容易地在添加新数据的变化(警告:我的经验集中在地学问题,其中的数据一般是“疏”相对于模型的能力)。

一个有趣的观点也许是

O. Bousquet和L. Bottou(2008)大规模学习的权衡。NIPS。

它提供了关于理论上为什么以及何时进行近似优化的半理论性论证。

尾注(元优化):虽然基于梯度的技术似乎在培训网络中占主导地位,但DFO在相关的元优化任务中可能会发挥作用。

一个示例是超参数调整。(有趣的是,Rios&Sahinidis成功的基于模型的DFO优化器可以看作是本质上解决了一系列实验设计/ 响应面问题。)

另一个示例可能是根据层的设置(例如,数量,类型,序列,节点/层)设计体系结构。在这种离散优化环境中,遗传样式算法可能更合适。请注意,这里我考虑的情况是,连接是由这些因素(例如,完全连接的层,卷积层等)隐式确定的。换句话说,连接性明确进行元优化。(连接强度将受到训练,其中可以通过正则化和/或ReLU激活来促进稀疏性……但是,这些选择可以进行元优化。)O[N2]notL1


1
您引用的“评论”来自神经网络的主要支持者。我会质疑关于局部极小值的说法-众所周知的关于NN的理论批评恰恰是任何复杂的模型都无法通过梯度下降来优化,因为它会陷入局部极小值中。尚不清楚是否只有nns的成功可以在背景下解决,而您没有听说失败。
seanv507

2
@ GeoMatt22对比散度是RBM所属的特殊模型类别的梯度的特殊近似值。应该注意的是,RBM是表示某种分布的概率模型,对于该分布而言,最大似然估计的梯度是很难处理的。神经网络是计算模型,可以在没有任何概率起点的情况下使用,例如通过优化铰链损耗。长话短说,CD不是优化神经网络的一般手段。
bayerj

2
@ seanv507尽管主要支持者提出了该要求,但是机器学习的顶级会议上也有经过同行评审的文章,这些文章对这些要求进行了严格的评估,例如arxiv.org/abs/1406.2572。到目前为止,该主张已在更广泛的ML社区中被广泛接受,这主要是由于其优越的理论论据和经验证据。我认为在这里没有一个专门的论点是足够的。
bayerj

1
我同意缺少DL理论。您仍然必须承认,类似这样的文章正在不断发展。如果您认为该文章陈述了错误的结果,并且结论(例如“局部最小值比鞍点问题要小得多”)是无效的,那么您必须比陈述另一次自发攻击更好,这是针对整个ML社区。
bayerj

1
最近的工作表明,通过随机初始化,梯度下降会收敛到局部最小值(而不是鞍点)。此处的论文:arxiv.org/abs/1602.04915和此处的博客文章:offconvex.org/2016/03/24/saddles-again 另一方面,最近(较少)的假设是,在大型神经网络中,局部极小值是大约和全球一样好,在这里讨论:stats.stackexchange.com/questions/203288/…–
DavidR

12

您可以使用各种各样的本地搜索算法,反向传播刚刚被证明是最有效的一般复杂任务;在某些情况下,其他本地搜索会更好。

您可以在神经网络上使用随机开始爬山来快速找到合适的解决方案,但是找到接近最佳的解决方案并不可行。

维基百科(我知道,不是最大的来源,但是仍然)说

对于在固定的时间内找到精确的全局最优值比找到可接受的局部最优值不那么重要的问题,模拟退火可能比梯度下降之类的替代方案更可取。

资源

至于遗传算法,我会看到神经网络训练中的反向传播与遗传算法

我将为backprop提出的主要案例是,它非常广泛地使用并且已经有了很大的改进这些图像确实显示了香草反向传播的一些令人难以置信的进步。

我不会将反向传播视为一种算法,而是一类算法。

我还要补充一点,对于神经网络,10k参数是小豆。另一个搜索会很好,但是在具有数百万个参数的深度网络上,这几乎是不实际的。


12

好吧,原始的神经网络是在70年代反向传播革命之前被手工“训练”的。:)

话虽如此:

有一个称为极限学习机的机器学习“学校” ,它不使用反向传播。

他们要做的是创建一个具有许多节点的神经网络(具有随机权重),然后使用最小二乘法训练最后一层(如线性回归)。然后,他们要么修剪神经网络,要么在最后一步应用正则化(例如套索)以避免过度拟合。我已经看到这仅适用于具有单个隐藏层的神经网络。没有培训,因此非常快。我做了一些测试,令人惊讶的是,以这种方式“训练”的这些神经网络非常准确。

大多数人,至少是与我一起工作的人,都会嘲笑这种机器学习的“学校”,他们是一群被抛弃的人,有自己的会议,依此类推,但我实际上认为这是一种天才。


另一点:在反向传播中,很少提及诸如弹性反向传播之类的替代方法,这些替代方法在neuralnet包中的R中实现,仅使用导数的大小。该算法由if-else条件代替线性代数组成。与传统的反向传播相比,它们具有一些优势,即您无需标准化数据,因为它们不会遭受消失的梯度问题的困扰


您可以在第4段中(大部分或全部)执行spiel,然后将结果用作基于导数优化的起点,以对其进行“微调”。
Mark L. Stone

1
@ MarkL.Stone我不知道有人通过先对后一层应用线性回归来进行反向传播。虽然这听起来很有趣。
里卡多·克鲁兹

1
据我所知,围绕ELM的争议主要是出于道德方面的考虑,而不是实施方面。Schmidt等人的前馈网络具有随机权重,早在1992年就触及了这个问题。
Firebug

3

您几乎可以使用任何数值优化算法来优化神经网络的权重。您还可以使用混合连续离散优化算法来优化权重,不仅优化权重,还可以优化布局本身(层数,每层神经元数,甚至神经元类型)。但是,没有一种优化算法不会以某种方式遭受“维数诅咒”和局部最优


3

您也可以使用另一个网络来建议如何更新参数。

Google Deepmind提供了解耦神经接口(DNI)。它没有使用反向传播,而是使用另一组神经网络来预测如何更新参数,从而允许并行和异步参数更新。

本文表明,DNI可以提高RNN的训练速度和模型能力,并为RNN和FFNN在各种任务上提供可比的结果。


本文还列出并比较了许多其他非反向传播方法

我们的合成梯度模型最类似于用于梯度上升[2]的值函数或用于自举的值函数。其他大多数旨在消除反向传播的工作都是以执行生物学上合理的信用分配为目标的,但这并不能消除层之间的更新锁定。例如,目标传播[3,15]通过生成应被拟合的目标激活来消除对层之间通过渐变的依赖。但是,这些目标仍必须顺序生成,通过网络向后传播,因此各层仍将进行更新和反向锁定。其他算法通过允许将损失或报酬直接广播到每一层来消除向后锁定,例如REINFORCE [21](考虑到所有激活都是动作),1个以及Policy Gradient Coagent Networks [20] –但仍保持更新锁定状态,因为它们要求输出(或全球评论家)产生奖励。尽管实时递归学习[22]或类似方法[17]似乎是消除更新锁定的一种有前途的方法,但这些方法需要相对于参数保持当前状态的完整(或近似)梯度。这本质上是不可扩展的,并且还要求优化器具有网络状态的全局知识。相比之下,通过将各层之间的交互框架化为与DNI的本地通信问题,我们消除了对学习系统的全局知识的需求。[4,19]等其他作品也允许并行训练层而无需反向传播,


2

只要这是一个社区问题,我就想补充一下。“反向传播”只是梯度下降算法。它只涉及尝试查找局部最小值或最大值的函数的一阶导数。还有另一种称为牛顿法或牛顿-拉夫逊法的方法,该方法涉及计算Hessian,因此使用二阶导数。在梯度下降失败的情况下,它可以成功。其他人告诉我,我的知识比我还多,是的,这是对权威的第二种呼吁,它不用于神经网络,因为计算所有二阶导数在计算方面过于昂贵。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.