我们都知道电路设计上是有一定的逻辑性,最基本的就是门电路单元。无论是与、非、或门,最终都会输出一个1(是)或0(不是)的值。然后我们从生物的角度看神经网络,神经网络的最基础单元就是神经元,当神经元接收到刺激信号并能够做出相应的应激性反应。我们可以将神经元信号分为传递或是不传递。
概念引入
有时可能一个神经元会接收到多个刺激,那么如何去判别神经元需要做出什么反应?假设有且仅有x1与x2是两个输入信号,而y为输出信号。而x1与x2代表的含义不一样,或者说权重不一样,我们用w1、w2来分别表示。所以这个神经元接收到的刺激总和是(x1w1,x2w2),用图可以是一下表示(○表示神经元,——表示连接并且有方向):
当这个两个刺激的综合满足一个阈值的时候,我们可以认为神经元y满足产生反应的条件,反之无反应,可以以一下数学公式1表示(其中θ为阈值大小):
公式1
感知机引入
那么和门电路是不是很像,比如与门只有x1与x2都为1的时候y就为1。我们引入一个感知机的概念,什么是感知机?感知机是接收多个信号,通过一定规律输出一个信号。所以门也可以叫做感知机,我们实例一段与门的python代码:
def AND(x1, x2)
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
根据上面函数,我们只有运行AND(1, 1)的时候输出才为1,也就是我们实现了与门。
数学是个神奇的东西,我们将公式1的式子变化一下就可以得到另一个公式2和说法:
公式2
我们一般习惯性将式子右边变为0,所以这里的b可以当作(-θ),这里称它为偏置,w为权重,与上面代码实现与门不同,上面两个权重是相当的,很多时候我们会遇到两个变量权重不同并且所得到的值有一定的偏移才是我们想要的结果。通过公式2我们就能够更好的理解感知机的概念:感知机是接收多个信号,通过一定规律(权重与偏置)输出一个信号。
多层感知机与计算机
单层感知机也就是类似于公式2一样,只能是线性的关系。它只能是如下图1所示的样子,以直线为分隔,线以下是1(0),线以上是0(1)。
图 1
但我们其实更多的要求是类似与下图2,曲线以下是1(0),曲线以上是0(1)。
图 2
参考门电路,当我们实现复杂电路的时候,很多情况是多个简单门电路的叠加从而实现更复杂的功能。那我们感知机也可以通过多层叠加的方式来实现更加复杂的功能,也就是我们将第一层感知机的输出同时又作为了第二层感知机的输入,以此类推,最终获得我们想要的值。如图3所示:为两层感知机,可以实现异或门的逻辑。
图3
那我们计算机的逻辑是不是可以通过上述的逻辑实现呢?可以,而且理论上可以两层就实现。
总结
通过神经网络作为铺垫,门电路作为参考,最终的得到感知机的概念。