以下内容是我阅读学习《深度学习入门:基于Python的理论与实现》一书的个人小结。本人新手入门,理解可能会不到位,以下内容仅用作个人学习记录并与大家交流分享。
依照我的理解,有信号输入,然后有一个信号输出的机器(或者说机制)就是一个感知机。下图1便是一个简单的感知机:有两个信号
输入,分别乘以权重
便得到中间值tmp,即 tmp=
,然后判断tmp是否大于阈值
,若大于阈值输出
,否则
。
通过修改权重 和阈值 的数值大小可以构建简单的逻辑电路,比如与门、或门和与非门。关于详细的构建方法与Python实现可以参考《深度学习入门:基于Python的理论与实现》一书。顺便一提,因为感知机可以构建与非门,因此理论上还能用来构建计算机。
画个图可以看出,与门、或门和与非门都可以线性分割,但对于异或门却不能用线性分割。所谓线性分割就是用一条直线去区分不同的输出情况。以或门为例,如图2所示,用一条直线可以区分△和○(△:
○:
),不同的权重和阈值可以构建不同的直线,理论上是无数条。但对于异或门(如图3)却不可能用一条直线将△和○(△:
○:
)区分开,只能用曲线将△和○划分为两个空间。这里,用直线区分得到的两个空间,如或门的△和○空间,叫做线性空间;用曲线区分得到的两个空间,如异或门的△和○空间,叫做非线性空间。线性空间和非线性空间是机器学习领域中非常常见的术语,务必熟悉。显然,单层感知机只能构建线性空间,因此没办法用单层感知机构建非线性空间的异或门。
多层感知机就是叠加了多个感知机。如图4所示,第0层是信号输入层,有两个信号 输入给第一层的两个感知机 ;信号 经过第一层的两个感知机 得到两个输出信号;两个输出信号作为第二层感知机的输入信号,经过第二层感知机,从而得到输出信号 。我个人认为图4这个图画的还不是很准确,应该再多加一个输出层,如图5所示,这样才能更好的反映感知机的作用。图1也应该多加一个输出层。
为了解决单层感知机无法表示异或门的情况,我们可以用双层感知机来表示,如图6所示。真值表如图7所示。
至此,感知机的概念就讲完了。本质上来说,感知机就是一个信号转换器。单层感知机就是一个单层神经网络;如图5所示的用感知机来表示的异或门是一个双层神经网络。
[1] 《深度学习入门:基于Python的理论与实现》第2章 感知机 [2] https://www.jianshu.com/p/a25788130897