大家好,又见面了,我是你们的朋友全栈君。
由前面介绍看到,单个感知器能够完成线性可分数据的分类问题,是一种最简单的可以“学习”的机器。但他无法解决非线性问题。比如下图中的XOR问题:即(1,1)(-1,-1)属于同一类,而(1,-1)(-1,1)属于第二类的问题,不能由单个感知器正确分类。
即在Minsky和Papert的专著《感知器》所分析的:感知器只能解决所谓一阶谓词逻辑问题:与(AND),或(OR)等,而不能解决异或(XOR)等高阶谓词罗辑问题。
用多个感知器实现非线性
单个感知器虽然无法解决异或问题,但却可以通过将多个感知器组合,实现复杂空间的分割。如下图:
将两层感知器按照一定的结构和系数进行组合,第一层感知器实现两个线性分类器,把特征空间分割,而在这两个感知器的输出之上再加一层感知器,就可以实现异或运算。
也就是,由多个感知器组合:
来实现非线性分类面,其中θ(·)表示阶跃函数或符号函数。
多层感知器神经网络
实际上,上述模型就是多层感知器神经网络(Multi-layer perceptron neural networks,MLP neural netwoks)的基础模型。神经网络中每个节点为一个感知器,模型生物神经网络中神经元的基础功能:来自外界(环境或其他细胞)的电信号通过突触传递给神经元,当细胞收到的信号总和超过一定阈值后,细胞被激活,通过轴突向下一个细胞发送电信号,完成对外界信息的加工。
但是,感知器的学习算法并不能直接应用到多层感知器模型的参数学习上。因此,最初提出的学习方案是:除了最后一个神经元之外,事先固定其他所有神经元的权值,学习过程只是用感知器学习算法学习最后一个神经元的权系数。实际上,这相当于通过第一层神经元把原始的特征空间变换到一个新的特征空间,第一层的每个神经元构成新空间的一维,然后在新的特征空间用感知器学习算法构造一个线性分类器。显然,由于第一层的神经元权值需要人为给定,模型的性能很大程度取决于能否设计出恰当的第一层神经元模型,而这取决于对所面临的的问题和数据的了解,并没有针对任意问题求解第一层神经元参数的方法。
(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经允许请勿用于商业用途)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150623.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...