雷竞技注册
技术文章

使用多层感知器的高级机器学习

2019年12月24日通过罗伯特Keim

本文介绍了为什么高性能神经网络需要额外的“隐藏”的计算节点层。

如果你对学习神经网络感兴趣,你来对地方了。在本系列中,AAC的工程总监将指导您了解神经网络术语、神经网络示例和总体理论。

赶上下面的系列:

  1. 如何使用神经网络进行分类:什么是感知器?
  2. 如何使用简单的Perceptron神经网络示例来对数据进行分类
  3. 如何训练基本的Perceptron神经网络
  4. 了解简单的神经网络培训
  5. 神经网络训练理论简介
  6. 了解神经网络的学习率
  7. 使用多层感知器的高级机器学习
  8. Sigmoid激活函数:多层感知器神经网络中的激活
  9. 如何训练多层感知器神经网络
  10. 理解多层感知器的训练公式和反向传播
  11. 神经网络体系结构的Python实现
  12. 如何用Python创建多层感知器神经网络
  13. 使用神经网络的信号处理:神经网络设计中的验证
  14. 神经网络的训练数据集:如何训练和验证一个Python神经网络


到目前为止,我们专注于单层Perceptron,其包括输入层和输出层。正如您可能会回忆,我们使用术语“单层”,因为此配置仅包括一层计算活动节点-1.e,通过求和,然后应用激活函数修改数据的节点。输入层中的节点只是分发数据。

单层Perceptron概念性简单,培训程序很愉快。不幸的是,它并不提供我们需要复杂的现实应用程序的功能。我有印象是解释单层Perceptron的基本限制的标准方法是通过使用布尔操作作为说明性示例,这是我在本文中采用的方法。

一种神经网络逻辑门

我们对我们将使用一个非常复杂的微处理器来实现实现与由少数晶体管组成的电路实现的神经网络的想法有幽默。At the same time, though, thinking about the issue in this way emphasizes the inadequacy of the single-layer Perceptron as a tool for general classification and function approximation—if our Perceptron can’t replicate the behavior of a single logic gate, we know that we need to find a better Perceptron.

让我们回到本系列第一篇文章中呈现的系统配置。

这个感知器的一般形状让我想起了逻辑门,它很快就会变成逻辑门。假设我们用0和1组成的样本来训练这个网络对于输入向量的元素和输出值只有当两个输入都等于1时才等于1。其结果将是一个神经网络,以一种类似于与门的电行为的方式分类输入向量。

该网络输入的维度为2,因此我们可以轻松地在二维图中绘制输入样本。假设输入0对应于水平轴,输入1对应于垂直轴。四种可能的输入组合将按如下方式排列:

由于我们正在复制AND操作,网络需要修改它的权值,使输入向量[1,1]的输出为1,其他三个输入向量的输出为0。基于这些信息,让我们将输入空间划分为与期望的输出分类相对应的部分:

线性可分的数据

正如前面的图所示,当我们执行AND操作时,绘制的输入向量可以通过画一条直线进行分类。在这一行的一边接收的输出值为1,而在另一边接收的输出值为0。因此,在与操作的情况下,提供给网络的数据是线性可分离。这也适用于OR操作:

事实证明,仅当数据线性可分离时,单层Perceptron才能解决问题。无论输入样本的维度如何,这都是如此。二维案例易于可视化,因为我们可以绘制点并将它们与一条线分开。概括线性可分离性的概念,我们必须使用“超平面”这个词而不是“线”。超平面是一个可以分开数据的几何特征n- 空间。在二维环境中,超平面是一维特征(即,一行)。在三维环境中,超平面是普通的二维平面。在A.n-维环境,超平面具有(n1)尺寸。

解决不是线性可分的问题

在培训程序期间,单层Perceptron正在使用培训样本来弄清楚分类超平面应该的位置。在找到可靠地将数据分离为正确的分类类别的超平面之后,它已准备好采取行动。但是,如果它不存在,则不会发现该超平面。让我们来看看输入到输出关系的示例,这不是线性可分离的:

你认识这种关系吗?再看一看,您会发现它只不过是XOR操作。你不能用一条直线分离异或数据。因此,一个单层感知机不能实现异或门提供的功能,如果它不能执行异或操作,我们可以安全地假设许多其他(更有趣的)应用程序将超出单层感知机解决问题的能力。

幸运的是,我们可以通过添加一个附加的节点来大大增加神经网络的问题解决力。这将单层Perceptron转换为多层的Perceptron(MLP)。如前一篇文章所述,这层层被称为“隐藏”,因为它没有与外界的直接接口。我想你可以将MLP视为接受输入数据的谚语“黑匣子”,执行神秘的数学操作,并产生输出数据。隐藏的层位于那个黑匣子里面。你看不到它,但它在那里。

结论

给感知器添加一个隐藏层是一个相当简单的方法来极大地改进整个系统,但我们不能期望所有的改进都是徒劳的。我想到的第一个缺点是培训变得更加复杂,这是我们将在下一篇文章中探讨的问题。