感知机与多层网络

声明:在阅读本文时,手里最好配备一本《机器学习》,以做好前期的一些理论知识铺垫。

在阅读书中(《机器学习》,周志华)的第5章时,文中主要以逻辑与、或、非,以及异或运算为例子,指出单层感知机可以处理线性可分的问题,而解决非线性可分问题,需考虑使用多层感知机,看到这里,我进行了思考:为什么含有非线性激活函数的单层感知机只可以解决线性可分的问题,而对异或这种问题却无能为力?而仅仅多了一层隐含层的两层感知机则可以解决此类非线性可分的问题?对此,我以书中(《机器学习》,周志华)图5.5为例子,对单层感知机和两层感知机应用于异或问题进行了一些可视化工作,并且进行了分析。

首先来回顾一下什么是异或运算:

表1

由表1可知,输入的x1和x2都∈{0,1},若两者相同则输出0,两者相异则输出1,那如果我们要学习到一个模型y=F(x1,x2) 能正确预测这些样本,也即意味着上述4个异或样本点都会落在模型y在三维坐标系对应的超平面中(三维情况下是一个平面或曲面)。如下图1所示,是4个异或的样本点的分布情况,红色点代表x1,x2输入相异而输出为1的两个点,蓝色点代表x1,x2输入相同而输出为0的两个点,X,Y轴分别代表输入x1和x2,Z轴代表输出。通过对4个样本点的分布进行观察,我们发现,找不到一个平面可以使红色样本点和蓝色样本点同时落在该平面上,(数学上也可以严格证明,只需将4个样本点代入单层感知机(不带激活函数)的函数表达式,得到4条不等式,会推导出式子之间互相矛盾),因此,这是一个非线性可分的问题,下面将进行进一步阐述。

图1

1. 单层感知机不能解决非线性问题的可视化

以下,先由简单的单层感知机开始,其结构如下图所示:

图2

上图的输出层包含一个激活函数,以及有一个偏置量θ 没有标出来。我们令权重w1和w2都为1,偏置θ 为-0.5,则得到一个单层感知机表达式:y1=f(x1+x2-0.5) ,f代表阶跃函数,起到激活作用,当没加激活和有加激活函数时,y1分别所代表的模型超平面如下图3 a,b所示。

 

图3a                                                                                   图3b

从图3a,b可以看出,单层感知机加上激活函数后的确起到了非线性整流的作用,模型从一个平面变成了一个曲面,但作用有限,整流后也只把3个样本点预测准确了(这3个点落在曲面上),其中(1,1)这个样本点就预测错误了,真实label应该是0,而y1模型预测为1。

同理,如果我们令w1和w2都为-1,偏置θ 为1.5,得到另一个单层感知机y2=f(-x1-x2+1.5) ,当没加激活和有加激活函数时,y2分别所代表的模型超平面如下图4 a,b所示。

 

图4a                                                                             图4b

从上图4b可以看出也有3个样本点预测正确了(有3个点落在曲面上),但是这次预测错误的样本是(0,0),真实label应该是0,但y2模型预测为1。

因此,这上面的可视化工作进一步证明了,我们找不到一个平面可以使红色样本点和蓝色样本点同时落在该平面上,也即单层感知机不能解决异或这种非线性可分的问题。

2. 两层感知机能解决异或问题的可视化

由上述可知,上面两个的单层感知机都不能解决异或问题,但通过观察上面两幅图3b和4b,就想到可不可以将这两个单层感知机的优点进行互补起来?然后接下来试试搭建一个两层感知机,具体是将y1模型和y2模型的输出作为第三个单层感知机y3的输入,如下图所示。

图5

同理,如果我们令第三个感知机y3的参数w1和w2都为1,偏置θ 为-1.5,用数学形式表达就是:y3=f(f1+f2-1.5) ,当没加激活和有加激活函数时,y3分别所代表的模型超平面如下图6 a,b所示。

 

图6a                                                                                       图6b

神奇了,由图6b可以看到,4个样本点全落在了y3模型所对应的曲面上,也就是两层感知机可以解决异或这类非线性可分问题,同时可以看到这个两层感知机的曲面形状是“鞍形”这种独特的形状。

3. 实验分析

       通过上述实验,可以看出单层感知机是非线性模型,但其主要结构是线性的,其非线性是激活函数带来的,但这种非线性的作用主要是整流,也即为模型分类增加确信度,那么可以认为,激活函数没带来所需的非线性作用。那么,什么是所需的非线性作用?通过对两层感知机的可视化(图6 a,b)的“鞍形”曲面的观察,我们发现,对于异或问题,我们所需的非线性作用是模型函数的单调性可变,这其中涉及了多元函数的单调性问题,我们先来看看二元函数的单调性定义:

从图3a和4a可清晰地观察到,并可证明,没加激活函数的单层感知机所表示的二元函数z=f(x1,x2) ,总是能在xoy面找到一个  方向,使z在 单调增加,反之,在 上单调减少。进一步观察图3b和4b,并可证明,加了激活函数也并没有严格改变模型的单调性。也即我们可以给出一个观点:单层感知机不能解决非线性可分问题的原因是(1)其主要模型结构是线性的,(2)激活函数作用是局限的,导致其表示的多元函数单调性是确定的,不可变。

对于两层感知机的单调性,它可以做到某个方向上不固定,可变的(图6b是先增后减),其单调性可变的原因也很简单:由于两层的结构,它将两个单层感知机的输出作为自身输入进行加权求和,其中一个感知机是在 方向上是单调增函数,另一个感知机在​​​​ 方向上是单调减函数,根据函数单调性的性质,则得到了先增后减的这种异或问题所需的“非线性”性质。也即我们可以给出一个观点:两层感知机能解决非线性可分问题的原因是其两层连接结构,使其整个模型所表示的多元函数单调性是不确定的,是可变的。

参考资料:

  1. https://wenku.baidu.com/view/2d687e45de80d4d8d15a4f85.html
  2. https://blog.csdn.net/qq_25353433/article/details/82467936
  3. https://blog.csdn.net/uncle_gy/article/details/78890302?utm_source=blogxgwz7
  4. https://www.zhihu.com/question/263676843
  5. https://blog.csdn.net/dcrmg/article/details/79165976
  6. 《机器学习》,周志华,清华大学出版社,2015.

感知机与多层网络,解决异或问题可视化相关推荐

  1. 深层神经网络——多层网络解决异或运算

    异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为"⊕",计算机符号为"xor".其运算法则为: a⊕b = (¬a ∧ b) ∨ (a ∧¬b ...

  2. 5.2 感知机和多层网络

    5.2 感知机和多层网络 感知机(perception)由两层神经元组成,如图5.3所示,输入层接受外界输入信号后传递给输出层,输出层是M-P神经元,亦称为"阈值逻辑单元" 感知机 ...

  3. 入门-神经元模型,感知机与多层网络

    M-P模型 1943年,McCulloch and Pitts抽象出了"M-P神经元模型",神经元接受到来自nn个其他神经元传递过来的输入信号,通过带权重的值连接传递,神经元接受到 ...

  4. 双层感知机解决异或问题

    双层感知机解决异或问题 参考文章: (1)双层感知机解决异或问题 (2)https://www.cnblogs.com/china520/p/10591652.html 备忘一下.

  5. (《机器学习》完整版系列)第5章 神经网络——5.2 RBF网络(单层RBF就可解决异或问题)与ART网络(实现“自适应谐振”)

    单层RBF神经网络就可解决异或问题. ART网络已发展出一个了一个算法族,需要理解它是如何实现"自适应谐振"的. RBF网络 径向基函数网络RBF如图5.3所示,此图为缩略图,即一 ...

  6. 符号函数sign,感知机线性模型无法解决异或问题

    1.符号函数 sign又叫sgn,意思是符号.符号函数(一般用sign(x)表示)是很有用的一类函数,能够帮助我们在几何画板中实现一些直接实现有困难的构造. 符号函数 能够把函数的符号析离出来 .如下 ...

  7. PyTorch 笔记(14)— nn.module 实现简单感知机和多层感知机

    autograd 实现了自动微分系统,然而对深度学习来说过于底层,而本节将介绍 nn 模块,是构建于 autograd 之上的神经网络模块. 1. 简单感知机 使用 autograd 可实现深度学习模 ...

  8. python来构建多层网络

    在网络科学里面有单层的小世界网络,随机网络和无标度网络,在python和matlab中都提供了非常好的函数来供我们使用.但是当我们需要构造多层网络的时候,就需要我们自己来进行构造.本文就是把单层网络里 ...

  9. 某学校有计算机主机1300台,网络互联技术与实践第14章:构建基于静态路由的多层网络.ppt...

    网络互联技术与实践第14章:构建基于静态路由的多层网络 * * * * * * * * * * 14.5 扩展知识 14.5.3 中小型园区网设计 2. 中型园区网 FE连接客户机 第3层交换 第2层 ...

最新文章

  1. 花5分钟看这篇之前,你才发现你不懂RESTful
  2. 几张图片总结我的2015年
  3. vue修改打包后静态资源路径
  4. python socket代码_python入门之socket代码练习
  5. 初玩PLSQL连接 Oracle
  6. DIY一个高大上带提醒的计时器,简单实用,你还在等什么
  7. java猜数字小游戏_Java实现简单猜数字小游戏
  8. 工作199:获取接口token
  9. python中if有几种使用方式_python 中if-else的多种简洁的写法
  10. 一文讲述G6实现流程图绘制的常用方法
  11. 比较ipv6有状态与无状态地址分配工作特点_IPv6环境获取IPV6地址,无状态地址分配,一分钟了解下...
  12. Oracle脚本(二)
  13. 首都师范大学数学专业考研试题参考解答
  14. Ubuntu16.04实现定时免密远程拷贝脚本
  15. 高等代数 北大版 Page 17 推论 证明
  16. 自动驾驶标志性事件来了,今早你上“车”了吗?
  17. AndroidStudio一键国际化方案
  18. python怎么输入一个数-Python中实现输入一个整数的案例
  19. Python 爬虫---百度首页
  20. 此生不戒多巴胺-冲刺集合

热门文章

  1. c语言double型小数点后几位_c语言float类型小数点后有几位有效数字?_后端开发...
  2. NNI GridSearch示例
  3. python中if elif语句优化_在Python中优化ifelif表达式
  4. PHP数组的排序详解
  5. 福建厦门 金砖五国(BRICS)峰会 9.3-9.5
  6. spring中使用logback日志组件替换log4j
  7. C语言,if循环 for 循环 while循环 switch循环 do...while()循环
  8. 计算机功能性英语作文,英语作文常用功能性写作词汇
  9. js组合键和单个键盘事件
  10. 天龙八部怀旧服服务器维护,新天龙八部怀旧服究竟适不适合多修?深入讨论