一、M-P神经元模型
神经生理学家沃伦
⋅
\cdot
⋅麦克洛克和数学家沃尔特
⋅
\cdot
⋅皮茨于1943年提出M-P神经元模型,该模型首次实现了用简单电路模拟人类大脑神经元行为。
罗素等人曾经论述说,“所有的数学法则都可以自下而上地用基本逻辑构建”。而这个底层逻辑为“是”与“非”。通过对这两个逻辑判定进行一系列操作(与、或、非),来构建复杂的数学大厦。
当麦克洛克看到罗素等人的论述后,一下子触发了他对神经元的深入思考。医学知识告诉他,大脑中的神经元,只有在外界刺激超过最小阈值时,才会被激发,否则处于静默。这些外部刺激,来自相邻的神经元,它们通过突出传递信号。
神经元的激发和静默状态,让麦克洛克联想到了莱布尼茨的二进制逻辑单元以及罗素的论述。于是,麦克洛克猜想,神经元的工作机理很可能类似于逻辑门电路,它接受多个输入,产生一个输出。通过改变神经元的激发阈值(偏置)和神经元的连接程度(权重),就可以让神经元参与与、或、非操作。当麦克洛克读完英国数学家图灵的论文后,认为大脑很可能是一台可以用编码在神经网络中完成逻辑运算的机器,具体数学模型如下图所示。
其数学解释如下:
y
=
{
0
,
∑
i
=
1
n
w
i
x
i
<
b
1
,
∑
i
=
1
n
w
i
x
i
≥
b
y = \begin{cases} 0, & \sum_{i=1}^{n}w_ix_i < b \\ 1, & \sum_{i=1}^{n}w_ix_i \geq b \end{cases}
y={0,1,∑i=1nwixi<b∑i=1nwixi≥b
其中,
x
i
∈
{
0
,
1
}
x_i \in \{0,1\}
xi∈{0,1} 表示神经元输入,即外界刺激;
w
i
w_i
wi 表示输入权重,即外界刺激的强度;
b
b
b 表示阈值,即当外界刺激超过该阈值时,神经元才会有反应。
二、仿真实验
前一章节,我们介绍了M-P神经元模型的发展历程和模型结构。接下来,我们通过仿真实验来实现简单的逻辑电路—与门、非门和或门。
2.1 与门
与门是一种只有两个输入一个输出的简单电路,当输入同为1的时候输出为1,其他时候则输出为0,其“真值表”如下表所示。
x 1 x_1 x1 | x 2 x_2 x2 | y y y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
下面我们用M-P模型来模拟表示与门。首先,人工确定超参数为 ( w 1 , w 2 , b ) = ( 0.5 , 0.5 , 0.6 ) (w_1, w_2, b) = (0.5, 0.5, 0.6) (w1,w2,b)=(0.5,0.5,0.6),然后我们使用python来实现与门逻辑电路,代码如下。
def and_gate(x_1, x_2, b=0.6):
summ = 0.5 * x_1 + 0.5 * x_2
return 1 if summ >= b else 0
if __name__ == "__main__":
print(and_gate(0, 0))
print(and_gate(1, 0))
print(and_gate(0, 1))
print(and_gate(1, 1))
输出结果为0,0,0,1。
2.2 或门
或门是一种只有两个输入一个输出的简单电路,在输入数据中,只要有一个为1,则输出为1,其他时候则输出为0,其“真值表”如下表所示。
x 1 x_1 x1 | x 2 x_2 x2 | y y y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
下面我们用M-P模型来模拟表示或门。首先,人工确定超参数为 ( w 1 , w 2 , b ) = ( 0.5 , 0.5 , 0.4 ) (w_1, w_2, b) = (0.5, 0.5, 0.4) (w1,w2,b)=(0.5,0.5,0.4),然后我们使用python来实现或门逻辑电路,代码如下。
def or_gate(x_1, x_2, b=0.4):
summ = 0.5 * x_1 + 0.5 * x_2
return 1 if summ >= b else 0
if __name__ == "__main__":
print(or_gate(0, 0))
print(or_gate(1, 0))
print(or_gate(0, 1))
print(or_gate(1, 1))
输出结果为0,1,1,1。
2.3 与非门
与非门是一种与与门对立的逻辑电路,其“真值表”如下表所示。
x 1 x_1 x1 | x 2 x_2 x2 | y y y |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
下面我们用M-P模型来模拟表示与非门。首先,人工确定超参数为 ( w 1 , w 2 , b ) = ( − 0.5 , − 0.5 , 0 ) (w_1, w_2, b) = (-0.5, -0.5, 0) (w1,w2,b)=(−0.5,−0.5,0),然后我们使用python来实现与非门逻辑电路,代码如下。
def and_not_gate(x_1, x_2, b=0):
summ = - 0.5 * x_1 - 0.5 * x_2
return 1 if summ >= b else 0
if __name__ == "__main__":
print(and_not_gate(0, 0))
print(and_not_gate(1, 0))
print(and_not_gate(0, 1))
print(and_not_gate(1, 1))
输出结果为1,0,0,0。
2.4 异或门
异或门也被称为逻辑异或电路,当且仅当一方有1的时,才输出1,其“真值表”如下表所示。
x 1 x_1 x1 | x 2 x_2 x2 | y y y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
如果有人想用M-P模型来模拟表示异或门,那么我会告诉他绝对不可能。因为M-P模型属于线性模型,而数据分布是无法使用线性模型进行划分的,具体如下图所示。
2.5 结论
通过仿真试验发现,M-P模型只能对线性可分数据进行划分,对类似于异或门线性不可分数据,M-P模型表现出了它的局限性。
参考文献
[1] 张玉宏. 深度学习之美[M]. 北京: 电子工业出版社, 2018:164-178.
[2] 斋藤康毅. 深度学习入门[M]. 北京: 人民邮电出版社, 2016:21-36.