深度学习入门:“感知机”小结

说明

以下内容是我阅读学习《深度学习入门:基于Python的理论与实现》一书的个人小结。本人新手入门,理解可能会不到位,以下内容仅用作个人学习记录并与大家交流分享。

什么是感知机?

依照我的理解,有信号输入,然后有一个信号输出的机器(或者说机制)就是一个感知机。下图1便是一个简单的感知机:有两个信号 x 1 x 2 x_1、x_2 输入,分别乘以权重 w 1 w 2 w_1、w_2 便得到中间值tmp,即 tmp= x 1 w 1 + x 2 w 2 x_1*w_1+x_2*w_2 ,然后判断tmp是否大于阈值 θ \theta ,若大于阈值输出 y = 1 y=1 ,否则 y = 0 y=0
在这里插入图片描述

图1

通过修改权重 w 1 w 2 w_1、w_2 和阈值 θ \theta 的数值大小可以构建简单的逻辑电路,比如与门、或门和与非门。关于详细的构建方法与Python实现可以参考《深度学习入门:基于Python的理论与实现》一书。顺便一提,因为感知机可以构建与非门,因此理论上还能用来构建计算机。

单层感知机的局限性

画个图可以看出,与门、或门和与非门都可以线性分割,但对于异或门却不能用线性分割。所谓线性分割就是用一条直线去区分不同的输出情况。以或门为例,如图2所示,用一条直线可以区分△和○(△: y = 1 y=1 ○: y = 0 y=0 ),不同的权重和阈值可以构建不同的直线,理论上是无数条。但对于异或门(如图3)却不可能用一条直线将△和○(△: y = 1 y=1 ○: y = 0 y=0 )区分开,只能用曲线将△和○划分为两个空间。这里,用直线区分得到的两个空间,如或门的△和○空间,叫做线性空间;用曲线区分得到的两个空间,如异或门的△和○空间,叫做非线性空间。线性空间和非线性空间是机器学习领域中非常常见的术语,务必熟悉。显然,单层感知机只能构建线性空间,因此没办法用单层感知机构建非线性空间的异或门。
在这里插入图片描述

图2

在这里插入图片描述

图3

多层感知机

多层感知机就是叠加了多个感知机。如图4所示,第0层是信号输入层,有两个信号 x 1 x 2 x_1、x_2 输入给第一层的两个感知机 s 1 s 2 s_1、s_2 ;信号 x 1 x 2 x_1、x_2 经过第一层的两个感知机 s 1 s 2 s_1、s_2 得到两个输出信号;两个输出信号作为第二层感知机的输入信号,经过第二层感知机,从而得到输出信号 y y 。我个人认为图4这个图画的还不是很准确,应该再多加一个输出层,如图5所示,这样才能更好的反映感知机的作用。图1也应该多加一个输出层。

在这里插入图片描述

图4

在这里插入图片描述

图5

为了解决单层感知机无法表示异或门的情况,我们可以用双层感知机来表示,如图6所示。真值表如图7所示。
在这里插入图片描述

图6

在这里插入图片描述

图7

小结

至此,感知机的概念就讲完了。本质上来说,感知机就是一个信号转换器。单层感知机就是一个单层神经网络;如图5所示的用感知机来表示的异或门是一个双层神经网络。

参考文献

[1] 《深度学习入门:基于Python的理论与实现》第2章 感知机 [2] https://www.jianshu.com/p/a25788130897