好问题:请注意,在深度学习领域,事物并不总是像统计学习中那样精确和明确定义(也因为有很多炒作),所以不要期望找到像数学中那样严格的定义。无论如何,多层感知器是一种特定的前馈神经网络架构,您可以在其中堆叠多个全连接层(因此,根本没有卷积层),其中隐藏单元的激活函数通常是 sigmoid 或 tanh。输出层的节点通常具有softmax激活函数(用于分类)或线性激活函数(用于回归)。典型的 MLP 架构并不“深”,即我们没有很多隐藏层。比如说,你通常有 1 到 5 个隐藏层。这些神经网络在 80 年代很常见,
现在,对于深度神经网络,我们指的是一个有很多层的网络(19、22、152、...甚至> 1200,尽管这无疑是非常极端的)。注意
- 我们还没有指定网络的架构,所以这可能是前馈、循环等。
- 我们没有指定连接的性质,所以我们可以有全连接层、卷积层、递归等。
- 诚然,“许多”层并不是一个严格的定义。
那么,为什么谈论 DNN 仍然有意义(除了炒作的原因)?因为当你开始堆叠越来越多的层时,你实际上需要使用新技术(新的激活函数、新的层、新的优化策略……甚至是新的硬件)来 1)训练你的模型和 2)制作它概括了新案例。例如,假设您采用经典的 MLP 进行 10 类分类、tanh 激活函数、输入层和隐藏层各有 32 个单元,输出层有 10 个 softmax 单元权重。您添加 10 层⇒32×32+32×10=1344⇒11584权重。按照今天的标准,这是一个微不足道的神经网络。但是,当您继续在适当大的数据集上对其进行训练时,您会发现收敛速度已大大减慢。这不仅是由于权重数量较多,而且是由于梯度消失问题- 反向传播通过将每个层的误差相乘来计算损失函数的梯度,并且这些小数字随着您添加的层数越多呈指数级变小。因此,错误不会在您的网络中传播(或传播非常缓慢),并且看起来训练集上的错误随着训练时期的增加而停止减少。
这是一个小型网络——称为 AlexNet 的深度卷积神经网络有 5 层但有 6000 万个权重,按照今天的标准,它被认为是很小的!当你有这么多权重时,任何数据集都是“小”的——即使是用于分类的图像数据集 ImageNet,也“只有”大约 100 万张图像,因此过拟合的风险比浅层网络大得多。
因此,深度学习可以理解为在实践中用于训练具有大量层和权重的神经网络的一组工具,以实现低泛化误差。与较小的网络相比,这项任务带来了更多的挑战。您绝对可以构建一个深度多层感知器并对其进行训练——但是(除了它不是当今使用深度学习的许多任务的最佳架构这一事实之外)您可能会使用与网络过去使用的工具不同的工具“浅的”。例如,您可能更喜欢 ReLU 激活单元而不是 sigmoid 或 tanh,因为它们可以缓解梯度消失问题。