计算机系统应用教程网站

网站首页 > 技术文章 正文

深度学习之多层感知器 多层感知器的应用

btikc 2024-10-11 11:26:56 技术文章 24 ℃ 0 评论

多层感知器(Multi-Layer Perceptron,MLP)也叫人工神经网络(Artificial Neural Network,ANN),除了输入输出层,它中间可以有多个隐层。最简单的MLP需要有一层隐层,即输入层、隐藏层和输出层,至少包含这3层的网络才能称为一个简单的神经网络。

内容概要,

单个神经元

计算输入特征的加权和(y=wx+b),然后使用一个激活函数(或传递函数)计算输出,

线性回归模型可理解为单个神经元或者单个感知器,计算输入特征的加权和,然后通过线性激活(没有激活),直接输出。

多个神经元

特点:以上无论是单个神经元,还是多个神经元,网络都只有1层,不是深度学习,这种只有一层神经网络的模型,称为浅层学习。

感知器可以理解为神经元,习惯性称为神经元。

单层神经元的局限性

单个感知器能够完成线性可分数据的分类问题,是一种最简单的可以“学习”的机器,但他无法解决非线性问题(无法拟合异或运算)。

比如下图中的XOR问题:即(1,1)(-1,-1)属于同一类(相同元素),而(1,-1)(-1,1)属于第二类(不同元素)的问题,就不能由单个感知器正确分类,因为单个感知器要求数据必须是线性可分的,异或问题 无法找到一条直线分割两个类,

即在Minsky和Papert的专著《感知器》所分析的,感知器只能解决所谓一阶谓词逻辑问题:与(AND),或(OR)等,而不能解决异或(XOR)等高阶谓词罗辑问题。

多层感知器

单个感知器(神经元)能够完成线性可分数据的分类问题,多个感知器也只是在单个感知器的基础上添加了线性组合关系,结果还是只能解决线性可分的问题,要解决非线性的问题需要多层感知器。

用多个感知器实现非线性

单个感知器虽然无法解决异或问题,但却可以通过将多个感知器组合,在神经网络的输入端和输出端之间插入更多的神经元实现复杂空间的分割。如下图:

将两层感知器按照一定的结构和系数进行组合,第一层感知器实现两个线性分类器,把特征空间分割,而在这两个感知器的输出之上再加一层感知器,就可以实现异或运算。也就是,由多个感知器组合:

来实现非线性分类面,其中θ(·)表示阶跃函数或符号函数。

多层感知器神经网络

实际上,上述模型就是多层感知器神经网络(Multi-layer perceptron neural networks,MLP neural netwoks)的基础模型。

神经网络中每个节点为一个感知器,模拟生物神经网络中神经元的基础功能:来自外界(环境或其他细胞)的电信号通过突触传递给神经元,当细胞收到的信号总和超过一定阈值后,细胞被激活,通过轴突向下一个细胞发送电信号,完成对外界信息的加工。但是,感知器的学习算法并不能直接应用到多层感知器模型的参数学习上。因此,最初提出的学习方案是:除了最后一个神经元之外,事先固定其他所有神经元的权值,学习过程只是用感知器学习算法学习最后一个神经元的权系数。

实际上,这相当于通过第一层神经元把原始的特征空间变换到一个新的特征空间,第一层的每个神经元构成新空间的一维,然后在新的特征空间用感知器学习算法构造一个线性分类器。显然,由于第一层的神经元权值需要人为给定,模型的性能很大程度取决于能否设计出恰当的第一层神经元模型,而这取决于对所面临的的问题和数据的了解,并没有针对任意问题求解第一层神经元参数的方法。


这里只有1个隐藏层,实际的项目中可以添加多层,层数越多,模型的拟合能力越强。

为了方便理解,这里补充一下生物神经网络中神经元的2个特点:

  • 互相连接,网络很深
  • 对每个神经元有一个激活过程,会考察信号的强度,当信号强度满足一定的条件,会传递这个信号,不满足条件时不再往下传递

多层感知器原理

多层感知器除了输入输出层,它中间还可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:

从上图可以看到,多层感知机层与层之间是全连接的,多层感知机最底层是输入层,中间是隐藏层,最后是输出层

全连接的意思就是:上一层的任何一个神经元与下一层的所有神经元都有连接。

在这个模型中,我们输入的x特征会连接到隐层的神经元,隐层的神经元再连接到输出层的神经元。神经网络要解决的最基本问题是分类问题。我们将特征值传入隐层中,通过带有结果的数据来训练神经网络的参数(W,权重;b,偏置),使输出值与我们给出的结果一致,既可以用来预测新的输入值了。

隐藏层的神经元怎么得来的呢?首先它与输入层是全连接的,假设输入层用向量X表示,则隐藏层的输出就是 f (W1X+b1),W1是权重(也叫连接系数),b1是偏置,函数f 可以是常用的sigmoid或者tanh等激活函数。

激活函数

模拟大脑中神经元工作原理,大脑中的神经元会对输入的信号进行考察,如果信号满足一定的条件,它会往下传递(输出),不满足时会弱化,或者不往下传递。这种激活会给网络带来非线性,使得我们的网络可以拟合非线性的问题,跟大脑判断类似,达到某类条件才判定某种结果。

为什么要使用激活函数?

  • 不使用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合;
  • 使用激活函数,能够给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到更多的非线性模型中。

激活函数需要具备以下几点性质:

  • 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数
  • 激活函数及其导函数要尽可能地简单,有利于提高网络计算效率
  • 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性

常用的激活函数包括:relu,sigmoid,tanh,Leak relu等,这部分内容后面再做专题详细介绍。

总结

深度学习中的感知器知识就介绍这些了,最后再做个总结,

  • 深度学习中的感知器 可以理解为神经元,感知器~~神经元
  • 单个感知器实现二分类;多个感知器实现多分类
  • 单层感知器(可以包括多个神经元)无法解决非线性问题,即无法拟合异或运算
  • 多层感知器可以拟合非线性数据,解决非线性问题,但是需要借助激活函数
  • 多层感知器 是神经网络的基础
  • 神经网络中 激活函数的作用是给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到更多的非线性模型中
  • 神经网络本质上是一个逼近器,一个重要的基本属性就是通用逼近属性。已被证明,只要在隐藏层个数足够多的情况下,就能够很好的拟合任意的连续函数

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表