深度学习笔记3-感知机与逻辑电路

感知机

基于<深度学习入门:基于Python的理论与实现>编写,可以作为深度学习入门准备,由浅入深先客观了解一下深度学习内容。

1. 什么是感知机

  感知机是由美国学者Frank Rosenblatt在1957年提出来的,因为感知机也是作为神经网络(深度学习)的起源的算法。因此,学习感知机的构造也就是学习通向神经网络和深度学习的一种重要思想。
  感知机接收多个输入信号,输出一个信号。这里所说的“信号”可以想象成电流或河流那样具备“流动性”的东西。像电流流过导线,向前方输送电子一样,感知机的信号也会形成流,向前方输送信息。但是,和实际的电流不同的是,感知机的信号只有“流 / 不流”(1/0)两种取值。在本文中,0 对应“不传递信号”,1 对应“传递信号”。
  下图是一个接收两个输入信号的感知机的例子。x1、x2 是输入信号,y 是输出信号,w1、w2 是权重。图中的○称为“神经元”或者“节点”。输入信号被送往神经元时,会被分别乘以固定的权重。神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出 1。这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号 θ 表示。

用数学公式可以表达为:

2. 简单逻辑电路

2.1 与门(and)

  我们可以尝试使用感知机来解决简单的问题,我们首先以逻辑电路为题材思考一下与门(AND),与门是有两个输入和一个输出的门电路。下图这种输入信号和输出信号的对应表称为“真值表”。与门仅在两个输入均为 1 时输出 1,其他时候则输出 0。

  下面我们考虑使用感知机来表示这个与门,需要做的就是确定能满足上图真值表的w 1、w 2、θ 的值。那么,设定什么样的值才能制作出满足图 2-2 的条件的感知机呢?实际上满足上图的条件的参数的选择方法有无数多个,比如,当(w 1、w 2、θ)=(0.5,0.5,0.7)时,又或者(w 1、w 2、θ)=(1,1,1)都满足与门条件,设定这样的参数后,仅当 和x 1和x 2同时为1时,信号的加权总和才会超过给定的阈值 θ。
2.2 与非门和或门(nand和or)

  与非门就是颠倒了与门的输出。用真值表表示的话,如下图 所示,仅当x1和x2同时为1时输出 0,其他时候则输出 1。

  要表示与非门,可以用(w 1、w 2、θ)=(-0.5,-0.5,-0.7)这样的组合,当然也可以用其他组合,这种组合同样是无限的。实际上,只要把实现与门的参数值的符号取反,就可以实现与非门。
 
  或门是“只要有一个输入信号是 1,输出就为 1”的逻辑电路。其真值表如下
  根据上面的介绍,我们已经知道使用感知机可以表示与门、与非门、或门的逻辑电路。这里重要的一点是:与门、与非门、或门的感知机构造是一样的。实际上,3 个门电路只有参数的值(权重和阈值)不同。也就是说,相同构造的感知机,只需通过适当地调整参数的值,就可以像“变色龙演员”表演不同的角色一样,变身为与门、与非门、或门。

3. 感知机实现

3.1 简单实现

  下面我们尝试使用Python实现刚才的逻辑电路,首先先定义一个接收参数 x1 和 x2的 AND 函数。

def AND(x1,x2):	
	w1.w2.theta = 0.5,0.5,0.7
	tmp = x1*w1 + x2*w2
	if tmp < theta:
		return 0
	elif tmp > theta:
		return 1

  在函数内初始化参数 w1、w2、theta,当输入的加权总和超过阈值时返回 1,否则返回 0。

AND(0,  0)  # 输出0 
AND(1,  0)  # 输出0 
AND(0,  1)  # 输出0 
AND(1,  1)  # 输出1
3.2 导入权重和偏置

  刚才与门的实现比较直接、容易理解,但是考虑到以后的事情,我们将其修改为另外一种实现形式。在此之前,首先把表达式的 θ 换成 -b,于是就可以用下图表达式来表示感知机的行为。

  此处b称为偏置,w称为权重,感知机会计算输入信号和权重的乘积,然后加上偏置,如果这个值大于 0 则输出 1,否则输出 0。   使用权重和偏置,可以像下面这样实现与门。
def AND(x1,  x2):
	x = np.array([x1,  x2])
	w = np.array([0.5,  0.5])
	b = -0.7
	tmp = np.sum(w*x) + b 
	if  tmp <= 0:
		return  0 
	else:
		return  1

  偏置和权重的作用是不一样的。具体地说,权重是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1)的参数。
  与非门实现

def NAND(x1,  x2):
	x = np.array([x1,  x2])
	w = np.array([-0.5, -0.5])  # 仅权重和偏置与AND不同!
	b = 0.7
	tmp = np.sum(w*x) + b 
	if tmp <= 0:
		return 0 
	else:
	    return  1

  或门实现

def OR(x1,  x2):
	x = np.array([x1,  x2])
	w = np.array([0.5,  0.5])  #  仅权重和偏置与AND不同!
	b = -0.2
	tmp = np.sum(w*x) + b 
	if tmp <= 0:
		return 0 
	else:
		return 1

  与门、与非门、或门是具有相同构造的感知机,区别只在于权重参数的值。因此,在与非门和或门的实现中,仅设置权重和偏置的值这一点和与门的实现不同。

3.3 感知机的局限性

  通过上述文章我们已经知道,使用感知机可以实现与门、与非门、或门三种逻辑电路。现在我们来考虑一下异或门是否可以实现,异或门仅当x1和x2中的一方为1是,才会输出1(异或可以理解为拒绝其他的意思),其真值表如下

  实际上,用前面介绍的感知机是无法实现这个异或门的。我们可以先通过画图的方式来理解一下或门。从上文我们可以知道,或门的情况下,当权重参数(b、w1、w2)=(-0.5,1,1)时可以满足或门真值表,感知机可以用如下表达式表示。
表示的感知机会生成由直线-0.5+x 1+x 2=0分割开的两个空间。其中一个空间输出 1,另一个空间输出 0,如下图所示:
  从上图可知,灰色区域是感知机输出0的区域,这个区域与或门的性质一致,或门在(x1,x2)=(0,0)时输出 0,在(x1,x2)为 (0, 1)、(1, 0)、(1, 1) 时输出 1。上图中○ 表示 0,△ 表示 1。如果想制作或门,需要用直线将图中的○和△分开。

   接下来我们看下异或门在图中如何表示。

  从上图可知,用一条直线是无法将○和△分开的。感知机的局限性就在于它只能表示由一条直线分割的空间。

4. 多层感知机

  从上述讲述中我们知道单层感知机无法实现异或门,那我们有什么其他办法使用感知机实现异或门呢?我们可以考虑使用多层感知机来实现。

  上图中输入值x1、x2是否可以经过两层感知机处理来实现得到异或门真值表中输出的y值呢,我们可以尝试在”?“处使用已知可以实现的与门、与非门、或门去实现。
  我们尝试上述组合,将s1、s2作为与非门和或门的输出,填入到真值表中,如下图所示:
4.1 异或门实现
def XOR(x1,  x2):
	s1 = NAND(x1,  x2) 
	s2 = OR(x1,  x2) 
	y = AND(s1,  s2)
	return y

  输出结果:

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

  我们试着用感知机的表示方法(明确地显示神经元)来表示这个异或门

  如上图所示,异或门是一种多层结构的神经网络。这里,将最左边的一列称为第 0 层,中间的一列称为第 1 层,最右边的一列称为第 2 层。实际上,与门、或门是单层感知机,而异或门是 2 层感知机。叠加了多层的感知机也称为多层感知机

  上图所示的 2 层感知机中,先在第 0 层和第 1 层的神经元之间进行信号的传送和接收,然后在第 1 层和第 2 层之间进行信号的传送和接收,具体如下所示。

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

  这种 2 层感知机的运行过程可以比作流水线的组装作业。第 1 段(第 1 层)的工人对传送过来的零件进行加工,完成后再传送给第 2 段(第 2 层)的工人。第 2 层的工人对第1层的工人传过来的零件进行加工,完成这个零件后出货(输出)。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值