附录D 理解神经网络(1 / 1)

首先,我们来深入研究一下明斯基和帕普特强调的感知器模型的问题。单层感知器无法实现一个很简单的运算,被称为“异或”(XOR)。我们先假设一个有两个输入的单层感知器,如下所示:

图22 单层感知器,无法计算异或

而异或函数是这样的:如果输入1激活,或者输入2激活,则触发感知器输出。而输入1和输入2同时激活或者同时不激活,都不触发输出。要理解为什么单层感知器无法计算异或函数,首先,我们假设它可以计算,那么,对于输入1的权重值w1,输入2的权重值w2,以及感知器的触发阈值T,它们必须满足如下要求:

·如果两个输入均未被激活,则神经元接收到的输入权重为0,此时神经元要保持不被触发,因此触发阈值T必须大于0。

·如果只有输入1被激活,则感知器被触发,因此w1必须大于触发阈值T。

·如果只有输入2被激活,则感知器被触发,因此w2必须大于触发阈值T。

·如果输入1和输入2都被激活,则感知器不会被触发,因此w1 + w2的值必须小于触发阈值T。

但很容易就能看出,满足上述所有要求的w1、w2和T值不存在,因此,感知器无法计算异或函数。

现在让我们看看两层感知器结构如何计算异或函数,如图23所示。我可以肯定地说,这个感知器网络能够正确计算异或函数。它由三个神经元组成:当输入1或者输入2被激活时,神经元1会被触发;当输入1和输入2没有同时被激活,神经元2才会被触发;最后,如果神经元1和神经元2都被触发,神经元3才会被触发。总而言之,输入1和输入2有一个被激活时,神经元3被触发;而输入1和输入2同时被激活或者同时未被激活,神经元3都不会被触发。

图23 两层感知器结构可以计算异或函数

更详细地说,就是考虑如下四种情况:

1. 假设输入1和输入2都未激活,此时神经元2将被触发(因为它接收的输入O高于-1.5的触发阈值),但神经元1不会被触发。这种情况下,神经元3接收到的输入为1,低于触发阈值1.5,因此神经元3不会被触发。

2. 假设输入1激活,输入2未激活。神经元1接收到的输入权重为1,高于触发阈值0.5,则神经元1被激活,神经元2接收到的输入权重为-1,高于触发阈值-1.5,同样,神经元2也被触发。此时神经元3接收到神经元1和神经元2的输入,权重值为2,高于触发阈值1.5。因此神经元3会被触发。

3. 假设输入2激活,输入1未激活。与情况2相同的计算方式计算得出,神经元3会被触发。

4. 假设输入1和输入2同时激活,此时神经元1接收到的输入权重为2,高于触发阈值0.5,则神经元1被激活。神经元2接收到的输入权重为-2,低于触发阈值-1.5,则神经元2不会被触发。神经元3接收到的输入权重为1,低于触发阈值1.5,因此神经元3不会被触发。