机器学习基础篇(十二)——多层感知机

一、概述

多层感知机(MLP:Multi-Layer Perceptron)由感知机(PLA: Perceptron Learning Algorithm)推广而来。它最主要的特点是有多个神经元层,因此也叫深度神经网络(DNN: Deep Neural Networks)。

感知机是单个神经元模型,是较大神经网络的前身。神经网络的强大之处在于它们能够学习训练数据中的表示,以及如何将其与想要预测的输出变量联系起来。从数学上讲,它们能够学习任何映射函数,并且已经被证明是一种通用的近似算法。

神经网络的预测能力来自网络的分层或多层结构。而多层感知机是指具有至少三层节点,输入层,一些中间层和输出层的神经网络。给定层中的每个节点都连接到相邻层中的每个节点。输入层接收数据,中间层计算数据,输出层输出结果

下面让我们来简单的看一下多层感知机的推导过程吧。

二、多层感知机的定义

  1. 首先我们先看一下感知机(PLA)是什么? 在这里插入图片描述
    如图所示,感知机只有输入和输出层,这两层共同组成了一个简单的神经元。首先加权输入信号,然后使用激活功能,最终产生输出信号。
    ω将输入的变量映射到了一个新的维度空间中,b的存在使得映射后的数据具有平移能力。(称为偏置量)
    在这里插入图片描述
    3.显然,PLA是一个线性的二分类器,但它对非线性的数据并不能进行有效的分类。因此我们可以加深这个神经元的网络层次,理论上来说,多层网络可以模拟任何复杂的函数。
  2. 当我们加深到很多层的时候,我们就得到了一个多层感知机(MLP)
  3. 我们将第一层称之为输入层,最后一层称之有输出层,中间的层称之为隐层。
  4. MLP并没有限定隐层的数量,对于输出层神经元的个数也没有限制,所以我们可以根据各自的需求选择合适的隐层层数。

举个栗子:我们在输入层输入三个变量[x1,x2,x3]以及一个偏置量b,偏置量的作用是给网络分类增加平移的功能。 然后我们设置隐层为1层,输出神经元个数为3个。可以得到如下的神经网络结构:

在这里插入图片描述

三、节点

每层的神经元被称为节点,那么针对于一个多层感知机,我们应该如何选择层数和隐层节点数呢?

通常情况下,我们只需要一个隐层,就可以模拟任何我们想要的函数。所以,大多情况下我们使用一个三层的感知机即可(包含输入层,一个隐层,一个输出层)。

那么,节点又该怎么选择呢?

如果隐层节点过少,网络结构简单,学习能力不够。如果隐层节点过多,不仅会大大增加网络结构的复杂性,而且学习过程中更易陷入局部极小点,学习速度会变得很慢。

我们一般有以下几种方法来选择隐层的节点数:

  • m:隐层节点数
  • n:输入层节点数
  • I:输入层节点数
  • α:1-10之间的整数

我们一般可以使用以下几个公式来选择节点数(当然也可以自己选择)
在这里插入图片描述
对于每个隐层的节点,我们都将会使用激活函数激活此节点。
通常情况下,节点根据前一层节点的加权总和来激活,即每个连接点的权重乘以该节点的激活函数的总和。
每个节点仅从前一层获取输入值,因此权重是同一层中节点的唯一区分依据。
常见的激活函数有:sigmoid函数,tanh函数

  • sigmoid函数:
    在这里插入图片描述
  • tanh函数
    在这里插入图片描述

四、反向传播

在训练神经网络时,我们预期的输出是输出层中每个节点的激活级别。根据实际激活情况,我们可以找到每个节点的cost(损失成本)。并根据损失成本的不同,相应地调整权重。

反向传播的算法就是根据每个节点的损失成本调整确定每个节点激活的权重。简单来说,在上文中,我们已经了解了如何选择隐层数目和节点数目的相关知识了。那么问题来了,我们应该如何去选择每个节点的权重呢?

这就要用到我们所说的反向传播算法了。

  1. 首先可以定义一个损失函数。(损失函数的相关知识见第一节相关知识
  2. 然后我们可以计算出每个节点的损失函数(该函数与该点的权重以及偏置量b有关)。选择合适的权重值以及偏置量b,使得损失函数达到最小值。
  3. 具体的数学知识不再赘述
  4. 请看下面这张截图,来自tensorflow测试站点。这里正在训练一个神经网络来对蓝色和橙色点进行分类。这里对节点所做的选择是任意的,读者可以做不同的尝试
    在这里插入图片描述
  5. 讨论反向传播,让我们考虑一下这个网络第一步将做什么。
  6. 它将在网络中测试一些训练数据,期望在(隐藏的)正确输出节点上看到完全激活,而在错误输出节点上没有激活。
  7. 当模型不正确时,它将从输出层向后查看,发现错误。
  8. 然后,它会相应地改变权重,所以离得远的权重会比离得近的权重变化更大。
  9. 在这些前期步骤中,它将具有较高的学习率,这使权重不稳定。
  10. 经过几次迭代之后,权重会更加稳定。
  11. 记住这一点,让我们向前跳一步。
    在这里插入图片描述
  12. 现在,网络对如何分类数据有一个模糊的概念。它有一个大致的圆圈,随着步骤的继续,分类会变得更加清晰。
  13. 让我们再向前跳几步
    在这里插入图片描述
  14. 如你所见,该模型已经开发出了更好的性能,可以准确地对大多数点进行分类。
  15. 在这一点上,网络减慢了学习速度,因为它经过了足够多的迭代才取得了现在的精确度。

五、小结

在本节中,我们了解了多层感知机(MLP)神经网络以及其他神经网络的相关知识。我们了解了节点是什么,掌握了节点的计算方法。最后我们立即饿了反向传播的含义,知道了如何去选择节点的权重。
自学自用,希望可以和大家积极沟通交流,小伙伴们加油鸭。创作不易,动起可爱的双手,来个赞再走呗 (๑◕ܫ←๑)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐