多层感知器与深度神经网络

机器算法验证 神经网络 感知器
2022-01-28 09:33:06

这是一个术语问题。有时我看到人们将深度神经网络称为“多层感知器”,这是为什么呢?我被教导的感知器是一个单层分类器(或回归器),它使用一种特定的训练权重的方法(不是反向传播)具有二进制阈值输出。如果感知器的输出与目标输出不匹配,我们将输入向量添加或减去权重(取决于感知器给出的是假阳性还是假阴性)。这是一种非常原始的机器学习算法。训练过程似乎没有推广到多层情况(至少不是没有修改)。深度神经网络通过反向传播进行训练,反向传播使用链式法则将成本函数的梯度传播回网络的所有权重。

所以,问题是。“多层感知器”与“深度神经网络”是一回事吗?如果是这样,为什么要使用这个术语?这似乎是不必要的混乱。此外,假设术语在某种程度上可以互换,当提到由全连接层(没有卷积层或循环连接)组成的前馈网络时,我只看到了术语“多层感知器”。这个术语有多宽泛?当提到例如 Inception 网络时,会使用“多层感知器”这个术语吗?使用 NLP 中使用的 LSTM 模块的循环网络怎么样?

3个回答

可以将多层感知器 (MLP) 视为深度神经网络 (DNN) 的一个子集,但在文献中经常可以互换使用。

感知器是根据其学习规则命名的假设是不正确的。经典的“感知器更新规则”是可以用来训练它的方法之一。神经网络的早期拒绝正是因为这个原因,因为感知器更新规则容易消失和爆炸梯度,使得无法训练超过一层的网络。

在训练网络中使用反向传播导致使用交替压缩激活函数,例如tanhsigmoid

所以,回答问题,

问题是。“多层感知器”与“深度神经网络”是一回事吗?

MLP 是 DNN 的子集。而 DNN 可以有循环,而 MLP 总是前馈的,即

多层感知器 (MLP) 是有限无环图

为什么使用这个术语?

科学文献中使用的许多术语都与时代趋势有关,并且已经流行起来。

这个术语有多宽泛?当提到例如 Inception 网络时,会使用“多层感知器”这个术语吗?使用 NLP 中使用的 LSTM 模块的循环网络怎么样?

所以,是的,inception、卷积网络、resnet 等都是 MLP,因为连接之间没有循环。即使有跳过层的快捷连接,只要是正向的,就可以称为多层感知器。但是,LSTM 或 Vanilla RNN 等具有循环连接,因此不能称为 MLP,而是 DNN 的子集。

这是我对事物的理解。如果我错了,请纠正我。

参考链接:

https://cs.stackexchange.com/questions/53521/what-is-difference-between-multilayer-perceptron-and-multilayer-neural-network

https://en.wikipedia.org/wiki/Multilayer_perceptron

https://en.wikipedia.org/wiki/Perceptron

http://ml.informatik.uni-freiburg.de/former/_media/teaching/ss10/05_mlps.printer.pdf

好问题:请注意,在深度学习领域,事物并不总是像统计学习中那样精确和明确定义(也因为有很多炒作),所以不要期望找到像数学中那样严格的定义。无论如何,多层感知器是一种特定的前馈神经网络架构,您可以在其中堆叠多个全连接层(因此,根本没有卷积层),其中隐藏单元的激活函数通常是 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=134411584权重。按照今天的标准,这是一个微不足道的神经网络。但是,当您继续在适当大的数据集上对其进行训练时,您会发现收敛速度已大大减慢。这不仅是由于权重数量较多,而且是由于梯度消失问题- 反向传播通过将每个层的误差相乘来计算损失函数的梯度,并且这些小数字随着您添加的层数越多呈指数级变小。因此,错误不会在您的网络中传播(或传播非常缓慢),并且看起来训练集上的错误随着训练时期的增加而停止减少。

这是一个小型网络——称为 AlexNet 的深度卷积神经网络有 5 层但有 6000 万个权重,按照今天的标准,它被认为是很小的!当你有这么多权重时,任何数据集都是“小”的——即使是用于分类的图像数据集 ImageNet,也“只有”大约 100 万张图像,因此过拟合的风险比浅层网络大得多。

因此,深度学习可以理解为在实践中用于训练具有大量层和权重的神经网络的一组工具,以实现低泛化误差。与较小的网络相比,这项任务带来了更多的挑战。您绝对可以构建一个深度多层感知器并对其进行训练——但是(除了它不是当今使用深度学习的许多任务的最佳架构这一事实之外)您可能会使用与网络过去使用的工具不同的工具“浅的”。例如,您可能更喜欢 ReLU 激活单元而不是 sigmoid 或 tanh,因为它们可以缓解梯度消失问题。

我想根据我从许多帖子中读到的内容添加:

通过 DNN 有许多不同的架构,例如:MLP(多层感知器)和 CNN(卷积神经网络)。因此,不同类型的 DNN 旨在解决不同类型的问题。

MLPs是 NN 的经典类型,用于:

  • 表格数据集(包含数据库表中的列格式数据)。
  • 分类/回归,预测 pbs。

MLP 非常好,通常可用于从输入到输出的精益映射。

但是您可以尝试其他格式,例如图像数据作为比较的基线点,以确认其他模型更适合。

旨在将图像数据映射到输出变量的CNN 。它用于:

  • 图像数据,
  • 分类/回归预测 pbs,

它适用于具有空间关系的数据。

它传统上用于 2D 数据,但它可以用于 1D 数据,CNN 在某些 1D pbs 上达到了最先进的水平。

您必须首先“清楚地定义”您要解决的问题(使用什么样的数据,分类/回归问题......等)才能知道要使用哪种类型的架构。

您可以参考那些对我非常有用的链接来了解更多关于这些概念的信息:)。

希望这个添加会有用:p。