目录
前言
之前用感知机实现了与门、与非门、或门三种逻辑电路,但是发现感知机并不能实现异或门。
1. 感知机的局限性
1.1 异或门
异或门真值表如下所示,仅当x1或x2中的一方为1时,才会输出1。
表1-1 异或门真值表
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
在深度学习入门笔记(1):感知器中得出,我们可用使用参数(w1,w1,b)=(0.5,0.5,-0.2),得出式子(1-1):
(1-1)
感知机生成直线-0.2+0.5x1+0.5x2=0分割开的空间,其中一个空间输出1,另一个空间输出0,如图1-1所示。我们可以看到一条直线可以将▲和⚪分隔开。
图1-1 感知机实现或门可视化
但是如图1-2异或门空间,没有一条直线可以将▲和⚪分隔开。
图1-2 异或门空间
1.2 线性和非线性
如果使用曲线就可以分割为两个空间,使用曲线分割而成的空间称为非线性空间,由直线分割而成的空间称为线性空间,分割示意图如图1-3所示。
图1-3 可以使用曲线将▲和⚪分隔开
2. 多层感知机
数字电路基础可以知道,通过组合与门、与非门、或门来实现异或门。
图2-1 组合实现异或门
2.1 异或门实现
下面通用Python来实现异或门,使用之前深度学习入门笔记(1):感知机定义的AND函数、NAND函数、OR函数来组合实现。
def XOR(x1,x2):
s1 = NAND(x1,x2)
s2 = OR(x1,x2)
y = AND(s1,s2)
return y
print(XOR(0,0))#输出0
print(XOR(1,0))#输出1
print(XOR(0,1))#输出1
print(XOR(1,1))#输出0
与门、或门是单层感知机,而异或门是2层感知机。叠加了多层的感知机也称为多层感知机。多层感知机的运行过程可以比作是流水线的组装。第一段的工人对零件进行加工,完成后再送给下一段工人。所有“单层感知机”无法表示的东西通过增加一层来解决。
总结
感知机是学习神经网络的基础!多层感知机可以实现更复杂的电路,比如加法运算其可以用感知机实现,实际上,使用感知机甚至可以表示计算机。