深度学习入门07-多层感知机

深度学习入门07-多层感知机_第1张图片
在上一篇文章中,我们了解到感知机的局限:不能表示异或门。如果我们想要使用感知机表示异或门怎么办呢?下面我们就可以学习到这方面的知识了。

1 已有逻辑门电路的组合

异或门可以通过其他门电路进行表示,我们可以通过组合与门、与非门、或门实现异或门的逻辑功能(在大学的《数字电子技术基础》这门课中,这个是非常基础的知识哦)。在已知与门、与非门、或门的逻辑功能(真值表)的情况下,如何使用这些逻辑门组合出异或门的逻辑功能呢?
深度学习入门07-多层感知机_第2张图片
我们在这里给大家提供一种思路,按照下面组合的方式将与门、与非门、或门填入不同的方框中,从而实现异或门的逻辑功能?
深度学习入门07-多层感知机_第3张图片
与门、与非门、或门分别使用下图的符号表示。
深度学习入门07-多层感知机_第4张图片
下面我们公布答案,就是这个样子。
深度学习入门07-多层感知机_第5张图片
以下的内容涉及到数字电路基础,可以跳过
我们还提供另外一种思路,利用了数字电路的基础知识。我们可以从异或门真值表入手,列出其逻辑表达式,然后按照逻辑运算的方式将逻辑表达式变形为上图的组合方式。

首先,根据真值表列出逻辑表达式。按照下面的规则:

  • 每个函数值Y=1,写一个乘积项(变量为0,写反变量x’;变量为1,写原变量x)
  • 将所有函数值为1的项,写成加和形式,其余略去
    深度学习入门07-多层感知机_第6张图片
    所以,异或门的逻辑表达式如下(x’表示取反):
    在这里插入图片描述
    对于这个式子,也可以用一些基本的门电路进行组合实现,但是我们希望值用到与门、与非门和或门的组合形式,因此,我们还需要进行形式的转换。过程如下:
    深度学习入门07-多层感知机_第7张图片
    其中的数字逻辑的运算规则您可以参考这个网址中的简要介绍:

https://jingyan.baidu.com/article/7e440953d3bd6d2fc0e2efae.html

或者您可以找数字电路基础的资料来看一下。

这样,我们就得到了输入为x1 x2,通过与非门、或门和与门组合而实现异或功能的电路了。

从这里继续正文

下面我们来确认一下上面的组合是否实现了异或门的逻辑功能,我们将第一级两个逻辑门的输出结果也标记出来,分别记为s1和s2。结果如下表所示:
深度学习入门07-多层感知机_第8张图片
深度学习入门07-多层感知机_第9张图片
可以看到,与异或门真值表完全一致,下面我们考虑如何用代码实现这种组合方式。

2 异或门的实现

我们使用之前定义的与门AND函数、与非门NAND函数、或门OR函数,具体实现如下:

def XOR(x1, x2):  # 定义异或函数XOR
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND2(s1, s2)
    return y

哈哈,看起来很简单吧,代码易读性非常强,我们按照之前的套路,遍历输入所有情况,结果验证:

print('XOR(0, 0) 输出为 ' + str(XOR(0, 0)))
print('XOR(0, 1) 输出为 ' + str(XOR(0, 1)))
print('XOR(1, 0) 输出为 ' + str(XOR(1, 0)))
print('XOR(1, 1) 输出为 ' + str(XOR(1, 1)))

输出:

XOR(0, 0) 输出为 0
XOR(0, 1) 输出为 1
XOR(1, 0) 输出为 1
XOR(1, 1) 输出为 0

和预期一致。这样,异或门的实现就完成了。下面我们试着用感知机的表示方法(明确地显示神经元)来表示这个异或门,结果如下图所示。
深度学习入门07-多层感知机_第10张图片
通过上图所示,异或门是一种多层结构的神经网络。这里,将最左边的一列称为第0层,中间的一列称为第1层,最右边的一列称为第2层。

异或门的感知机与前面介绍的与门、或门的感知机形状不同。实际上,与门、或门是单层感知机,而异或门是2层感知机。叠加了多层的感知机也称为多层感知机(multi-layered perceptron)。 异或门感知机总共由3层构成,但是因为拥有权重的层实质上只有2层(第0层和第1层之间,第1层和第2层之间),所以称为“2层感知机”。不过,有的文献认为异或门的感知机是由3层构成的,因而将其称为“3层感知机”。 我们这里统一称为2层感知机。

多层感知机的信号是如何传递的呢?先在第0层和第1层的神经元之间进行信号的传送和接收,然后在第1层和第2层之间进行信号的传送和接收,具体如下所示。

1.第0层的两个神经元接收输入信号,并将信号发送至第1层的神经元。
2.第1层的神经元将信号发送至第2层的神经元,第2层的神经元输出 y。

这种2层感知机的运行过程可以比作流水线的组装作业。第1段(第1层)的工人对传送过来的零件进行加工,完成后再传送给第2段(第2层)的工人。第2层的工人对第1层的工人传过来的零件进行加工,完成这个零件后出货(输出)。
像这样,在异或门的感知机中,工人之间不断进行零件的传送。通过这样的结构(2层结构),感知机得以实现异或门。这可以解释为“单层感知机无法表示的东西,通过增加一层就可以解决”。也就是说,通过叠加层(加深层),感知机能进行更加灵活的表示。
深度学习入门07-多层感知机_第11张图片

你可能感兴趣的:(深度学习)