让我们从一个琐事入手:深度神经网络只是具有许多隐藏层的前馈网络。
这几乎是有关定义的全部内容。神经网络可以是递归的也可以是前馈的。前馈的图形中没有任何循环,可以分层组织。如果有“许多”层,那么我们说网络很深。
如何许多层进行一个网络必须有以资格作为深?对此没有明确的答案(有点像询问堆多少粒),但通常具有两个或多个隐藏层才算得很深。相反,仅具有单个隐藏层的网络通常称为“浅层”。我怀疑这里会发生通货膨胀,十年之内人们可能会认为任何少于十层的东西都是浅层的,仅适合幼儿园练习。非正式地,“较深”表示该网络很难处理。
这是一个插图,改编自这里:
但是,您真正要问的问题当然是,为什么有很多层会受益?
我认为,答案令人惊讶的是,没有人真正知道。有迹象表明,我将简要回顾以下一些常见的解释,但没有一个已经令人信服地证明是真实的,而一个甚至不能肯定有许多层是真正有益的。
我说这是令人惊讶的,因为深度学习非常流行,它每年打破所有记录(从图像识别,播放Go到自动翻译等),并被行业使用等。我们仍然不太确定为什么它会这么好。
我基地在我的讨论深度学习的古德费洛,Bengio和库维尔的书,出去在2017年,被广泛认为是在书上的深度学习。(可在线免费获得。)相关章节是6.4.1通用逼近属性和深度。
你写的
十年前,我在课堂上了解到,在神经网络能够表示的功能方面,具有多层或一层(不计算输入和输出层)是等效的。
您必须指的是所谓的通用逼近定理,该定理由 cybenko于1989年证明,并在1990年代被各种人推广。基本上说,浅层神经网络(具有1个隐藏层)可以近似任何函数,即原则上可以学习任何东西。对于各种非线性激活函数,包括当今大多数神经网络正在使用的整流线性单元,都是如此(教科书参考Leshno等,1993得出此结果)。
如果是这样,那么为什么每个人都使用深网?
好吧,天真的答案是因为它们工作得更好。这是深度学习书中的图,它显示了在一个特定任务中具有更多层的功能,但是在各种任务和领域中经常会观察到相同的现象:
我们知道,浅层网络的性能可以与深层网络一样好。但事实并非如此;他们通常不会。问题是---为什么?可能的答案:
- 也许一个浅层网络需要比深层神经网络更多的神经元?
- 也许浅层网络更难使用我们当前的算法进行训练(例如,其局部最小值极小,或者收敛速度较慢,等等)?
- 浅层架构可能不适合我们通常试图解决的问题(例如,对象识别是典型的“深层”,分层过程)?
- 还有吗
该深度学习书主张的要点#1和#3。首先,它认为浅层网络中的单元数量随着任务的复杂性呈指数增长。因此,为了有用,浅层网络可能需要非常大。可能比深度网络要大得多。这是基于许多论文的证明,在某些情况下,浅层网络将需要成倍数量的神经元。但是,例如MNIST分类还是围棋这样的情况还不清楚。其次,这本书说:
选择一个深层模型会编码一个非常普遍的信念,即我们要学习的功能应该包含几个较简单的功能的组合。从表示学习的角度来看,这可以解释为说我们相信学习问题包括发现一组潜在的变化因素,这些变化又可以用其他更简单的变化因素来描述。
我认为当前的“共识”是第1点和第3点的结合:对于实际任务,深层架构通常是有益的,而浅层架构则效率低下,并且需要更多神经元才能实现相同的性能。
但这还远未得到证实。考虑一下Zagoruyko和Komodakis,2016,宽余网络。具有150多个图层的残差网络在2015年出现,并赢得了各种图像识别比赛。这是一个巨大的成功,看起来像是支持深度的令人信服的论点。这是第一作者在剩余网络论文上的演讲中的一个图(请注意,时间在这里令人困惑,在左边):
但是上面链接的论文显示,只有“ 16个”层的“宽”残留网络可以胜过150层以上的“深”网络。如果这是真的,那么上图的全部内容就会分解。
或考虑Ba和Caruana,2014年,《深网真的需要深度吗?:
在本文中,我们提供了经验证据,表明浅层网络能够学习与深层网络相同的功能,并且在某些情况下具有与深层网络相同数量的参数。为此,我们首先训练最先进的深度模型,然后再训练一个浅层模型以模仿该深层模型。使用下一节中描述的模型压缩方案训练模拟模型。值得注意的是,通过模型压缩,我们能够将浅网训练为与某些深层模型一样精确,即使当在原始模型上直接训练浅网时,我们也无法将这些浅网训练为与深层模型一样精确。带标签的训练数据。如果参数数量与深层网络相同的浅层网络可以学习模拟高保真度的深层网络,
如果为true,则表示正确的解释是我的项目符号#2,而不是#1或#3。
正如我说的---还没有人真正知道。
结束语
在过去约10年的时间里,深度学习取得的成就确实令人惊讶,但其中的大部分进步都是通过反复试验而实现的,我们仍然缺乏非常深入的了解,究竟是什么使深度网络如此出色地工作。即使人们认为对于建立有效的深层网络至关重要的事情清单,每两年也会发生变化。
深度学习的复兴始于2006年,当时Geoffrey Hinton(从事神经网络研究20多年,没有任何人感兴趣)发表了几篇突破性论文,为训练深度网络提供了有效的方法(科学论文,神经计算论文) 。诀窍是在开始梯度下降之前使用无监督的预训练。这些论文彻底改变了这一领域,并且几年来,人们一直认为无监督的预培训是关键。
然后在2010年,马滕斯(Martens)表明,可以使用二阶方法(所谓的无Hessian方法)来训练深度神经网络,并且可以胜过通过预训练而训练的网络:通过无Hessian优化进行深度学习。然后在2013年,Sutskever等人。表明随机梯度下降和一些非常聪明的技巧可以胜过无Hessian方法:关于深度学习中初始化和动量的重要性。同样,大约在2010年,人们意识到使用整流线性单位代替S形单位对梯度下降有很大的不同。辍学出现在2014年。残差网络出现在2015年。人们不断想出越来越多的有效方法来训练深度网络和十年前似乎很关键的见解如今通常被认为是令人讨厌的事情。所有这些主要是由反复试验驱动的,并且几乎不了解使某些事物运行良好而使某些事物无法运行的原因。训练深层网络就像一大把戏。成功的秘诀通常是事后合理化。
我们甚至不知道为什么深层网络会达到性能稳定水平;仅仅10年以前,人们就曾责怪当地的最低标准,但目前的想法是,这不是重点(当性能稳定时,梯度往往会很大)。这是关于深网络这样一个基本问题,我们甚至不知道这个。
更新:这是阿里·拉希米的NIPS 2017年的谈话机器学习炼丹上或多或少的主题:https://www.youtube.com/watch?v=Qi1Yry33TQE。
[此答案在2017年4月完全重写,因此下面的某些评论不再适用。]