开发者学堂课程【神经网络概览及算法详解:单层感知器-3】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/40/detail/925
单层感知器-3
之前介绍了单层感知器是能解决线性可能问题,要了解什么叫线性,什么叫非线性,线性就是linear,严格定义是一种映射关系,其映射关系满足可加性和其次性。
通俗理解就是两个变量之间存在一次方函数关系,在平面坐标系中表现为一条直线不满足线性,即为非线性。例如,超市买袜子,标价三元没有折扣,消费金额与数量用图来表示,f(x)=3x+5,是实际消费金额,是线性关系,回归描述非严格的关系,线性描述严格的函数关系,非线性关系是买的越多越便宜,把买袜子的数量与花了的钱数作为一个函数,表示出来,就不是一个线性,而是一个非线性关系。
线性与非线性的分类器,线性可分,即可以用一个超平面将正负样本分开,以二维空间的二分类为例,是指可以通过一条直线将数据分成正负样本两类。分类器也有线性和非线性两类。三维空间内使用平面类型的边界,把两个样本完美的隔开,在二维空间内通过直线,把样本完美的隔开,非线性在二维空间内不能用一条直线隔开,使用一个曲线来分。如图所示:
完美的用一条直线将两类数据分开,第三张图很难找到一条直线,让它完美的分开。此时可以用一条曲线将它分开,同样,曲线也有表达式。
线性分类器比较简单且容易理解,非线性分类器比较复杂,可以用于解决更复杂的问题,例如最后一类,直线无法将其分为两类,复杂问题只能用非线性类型来解决,在现实生活中,绝大多数问题都是线性不可分,需要用非线性分类的方式来实现,罗生布莱克做出单层感知器时非常的兴奋,因为发现单层感知器可以用于非常复杂的运算,认为可以解决非常多的问题,
1969年,Marvin minsiy和papert写了一本书,即为感知器,这本书通过他们自己扎实的数学知识,严格的证明了,没有办法使用单层感知器来解决异或问题,何为异或,如果用两个值来求异或,若两个值相等,即反问值为零,若不同则反问值为1,比如有两个值(0,1),因为0不等于1,所以他的访问值为1,(1,1)两个的访问值相同,所以访问值为0,(0,0)两个访问值相同,(1,0)两个值不等,它们的访问值为1,将四个点放在坐标系上。
在分类的时候(0,1)和(1,0)要分到一类里去,(1,1)和(0,0)要分到一类里去,不可能通过一条直线把它们分开,能够把(1,1)分隔出去,但是(0,0)就隔不出去,就是无法通过一条直线把四个点分为两类,这就是非常简单的异或问题,如果想解决,需要两条线,通过这两条线的区隔,中间的(0,1)和(1,0)是一类,两条线,两侧的是一类,则可以解决掉这个问题。
从逻辑符号方面看一下,x1⊕x2=(!x1&x2)/(x1&!x2),异或就是加号加个圈,等于一个复杂的逻辑表达式。就是首先X1取反,然后与上X2异或X1与上X2去反。那实际上也可以用下图
使用如上设计实现复杂的逻辑式,X1非一下,然后X2和X1的结果与一下 ,X1与X2的非与一下,再将两个输出再或一下,然后输出,最终的输出就是异或。这个结构没有办法直接实现异或但是可以通过设计实现和异或等价,相对来说复杂一点的逻辑运算。实际上最终输出就是异或的结果,设计是可以通过这个神经网络的设计,把它做出来。简化图如下:
直接设置–1,是一个非常典型的神经网络结构,输入,然后有一个处理层 实际上就是隐藏层,还有一个输出层,
也就是可以通过一个多层感知器来实现,异或没有办法使用单层感知器来实现,但可以通过一个多层感知器来实现。可以根据输入和切换输出,输入就是(0,0)(0,1)(1,1)(1,0),期望输出就是1,0,使用多层感知器训练一个模型,此时已将模型训练出来,阈值已求得,通过这个多层感知器可以实现异或,作业即用样本数据训练多层感知器 并验证结果,看是否能实现异或。