当前位置: 首页 > 科技观察

为什么深度神经网络很难训练?

时间:2023-03-12 17:11:42 科技观察

假设您是一名工程师,负责从头开始设计计算机。有一天,你在工作室工作,设计逻辑电路,构建与门,或门等,老板带来坏消息:客户刚刚增加了一个奇特的设计要求:整个电路的深度电脑一定只有两层:你惊呆了,对老板说:“这个产品太疯狂了!”在某种程度上,他们的客户并不太疯狂。假设您可以访问一些特殊的逻辑门,让您可以与任意数量的输入。您还可以使用多输入与非门——可以与和取反多个输入的门。使用这些特殊的门,可以构建一个两层深的电路来计算任何函数。但仅仅因为某些事情在理论上是可能的并不意味着它是个好主意。在实践中,在解决电路设计问题(或其他大部分算法问题)时,我们通常会考虑如何解决子问题,然后逐步整合这些子问题的解决方案。换句话说,我们要经过多层抽象才能得出最终的解决方案。例如,假设我们设计一个逻辑电路来将两个数相乘。我们想在计算两个数字相加的现有子电路之上创建此逻辑电路。用于计算两个数之和的子电路也建立在用于添加两位的子电路之上。粗略地说,我们的电路看起来是这样的:最终电路至少包含电路的三个基本部分。实际上,这个电路可能超过三层,因为我们可以将子任务分解成比上面更小的单元。但基本思想是这样的。如此深的线条使这个设计过程更容易。但这对设计本身没有多大帮助。事实上,数学证明,对于某些功能,很浅的电路可能需要指数电路单元来计算。例如,80年代初期的一系列著名论文表明,计算一组位的奇偶校验需要浅线上的指数数量的门。另一方面,如果你使用更深的电路,那么你可以使用一个非常小的电路来计算奇偶校验:你只需要计算比特对的奇偶校验,然后用这些结果计算比特对的奇偶校验,从而以此类推,构造出一个总平价。因此,与浅线相比,深线本质上具有更大的能力。我们遇到的几乎所有网络都只包含一层隐藏神经元(除了输入和输出层):这些简单的网络已经非常有用:在前面的章节中,我们可以使用这样的网络实现高达98%的准确率识别手写数字!此外,直觉上,我们希望具有更多隐藏层的神经网络更强大:此类网络可以使用中间层来构建多层抽象,就像我们在布尔电路中所做的那样。例如,如果我们在做视觉模式识别,第一层的神经元可能会学习识别边缘,第二层的神经元可以学习根据边缘识别更复杂的形状,比如三角形或矩形。第三层将能够识别更复杂的形状。等等。这些抽象层似乎赋予深度网络学习解决复杂模式识别问题的能力。然后,正如在电路示例中看到的那样,有理论发现告诉我们深层网络本质上比浅层网络更强大。