一、前文回顾
上一节我们通过神经元模拟了逻辑与,非,或门。你会发现他们的构造其实一样的,都是一个神经元,不同的是权重值不一样,那么同样的方法我们来模拟一下另外一个逻辑电路。
二、异或门(XOR gate)
异或门就是对于两个输入信号x1或者x2,相同则输出0,相异则输出1.
![](https://static.wixstatic.com/media/fea6b7_8539ab38d0b3411fa25796cc722c9c04~mv2.jpg/v1/fill/w_74,h_44,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/fea6b7_8539ab38d0b3411fa25796cc722c9c04~mv2.jpg)
那么神经元也可以通过人工设定权重来实现异或门吗?很肯定的告诉你:不行!!我们先回顾一下或门。当权重参数(w1,w2,b)=(1.0,1.0,-0.5)的时候,我们就可以用神经元来构造一个或门。(下图所示)
![](https://static.wixstatic.com/media/fea6b7_0cbb1262dd3b45c8a7318e11b2746fd8~mv2.png/v1/fill/w_73,h_9,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/fea6b7_0cbb1262dd3b45c8a7318e11b2746fd8~mv2.png)
为了更直观的了解它,我们用二维坐标图来看一下。上图神经元所表示的其实就是用一条x1+x2-0.5=0的直线把二维平面分割成两部分,一边的值为0,一边的值为1。正如下图点虚线把二维平面分割为两部分,灰色部分为0,另外一边为1。
![](https://static.wixstatic.com/media/fea6b7_b82099eac62f4079930380eeecf124d5~mv2.png/v1/fill/w_108,h_70,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/fea6b7_b82099eac62f4079930380eeecf124d5~mv2.png)
因为当(x1,x2)=(0,0)的时候或门输出为零,其余输出为1,所以在二维坐标里面我们用▲代表1,●代表0。你会发现我们的这条直线很完美的把0和1都分开了。那么在回头再看看XOR门,同样的在二维坐标用▲和●标出0和1的值。你会发现无论你怎么画,都不可能画出一条完美的把0和1区域分开的直线(如下图所示,只有曲线可以划分)。
![](https://static.wixstatic.com/media/fea6b7_1869021e0fc246f2b3b6757f804ff440~mv2.png/v1/fill/w_54,h_25,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/fea6b7_1869021e0fc246f2b3b6757f804ff440~mv2.png)
这便是神经元的极限:它可以模拟与,或,非门,但是却无法模拟异或门。所以我们要换个思路来思考:把神经元组合起来试试(下图所示),看能不能解决异或门这个难题。
![](https://static.wixstatic.com/media/fea6b7_5d5573610f724bea8c526cb78e53f42b~mv2.png/v1/fill/w_49,h_15,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/fea6b7_5d5573610f724bea8c526cb78e53f42b~mv2.png)
x1和x2分别代表初始输入信号,s1代表非门(NAND)的输出,s2代表或门(OR)的输出,s1和s2又分别作为与门(AND)的输入,y是与门的输出。整理一下真理值表
![](https://static.wixstatic.com/media/fea6b7_824744a2518f409b8dc0a4ce562cd262~mv2.png/v1/fill/w_58,h_18,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/fea6b7_824744a2518f409b8dc0a4ce562cd262~mv2.png)
三、总结
因为异或门在二维平面不可以被直线分割(也可以称为非线性),所以神经元无法模拟异或门,但是通过三个其他神经元(与门,或门,非门)的组合便可以完美解决这个问题。而这三兄弟的组合我们就可以称为一个神经网络。为了庆祝这个神经网络的诞生,我给他取了一个霸气的名字:小D。所以下节的主题便是【小D的诞生】。