基本逻辑运算
在上一小节中,我们介绍了一下利用perceptron来做决策,这一小节,我们会介绍如何用perceptron来做基本逻辑运算,例如AND(与),OR(或)和NAND(与非)。请看下图:
上图表示w1=-2,w2=-2,并且bias=3
当x1,x2为00序列时,由于(-2)*0+(-2)*0+3=3是正数,所以output为1。
同样地:
01,(-2)*0+(-2)*1+3=1,output=1
10,(-2)*1+(-2)*0+3=1,output=1
11,(-2)*1+(-2)*1+3=-1,output=0
这样就实现了一个(NAND)与非门了.
上面的事实也说明了我们可以用perceptron来实现任意的逻辑运算,这是由于NAND决定的,利于抑或(XOR)运算,也可以说是二进制位的加法,如下图是一个二进制位加法器:
上图是一副电子电路的图,下图是其对应的perceptron实现的图,每个perceptron的定义就是这篇文章开头那个:
在perceptron这幅图中,有一个显著的特点:最左边的perceptron发送了两个input给最下边的perceptron,在之前的定义上,这是不允许的,这时我们可以用一条input来替代它,让这条线权重为-4(不懂为什么?问问你的数学老师?提取公因式而已):
上面的x1,x2还是比较不合群的,我们可以添加一层:输入层:
输入层只有输出方向的箭头,没有接收箭头。
上图是一种速记形式,并不代表一个perceptron没有输入。
现在假设,我们有一个perceptron的确没有输入,只能为0,所以当b大于0,那么output=1,当b小于0,ouput=0。这意味着将会输出一个固定值,而不是一个期望值(让公式变得通用起来)。
能做逻辑运算并没有什么大作用,顶多是一种新的与或门而已。然而,实际上,我们可以利用它来发明学习算法(learning algorithms),实现自动调节weight和bias来实现人工神经网络。这种调节,将对外部刺激做出,而不是由程序员直接介入。我们不需要明显地去设置与或门或者其它逻辑门,我们的神经网络可以简单地学习如何解决问题。