深度学习(鱼书)day01--感知机
深度学习day01–感知机
一、感知机的定义
感知机是由美国学者Frank Rosenblatt在1957年提出来的。感知机是神经网络的基础,学习感知机的构造就是学习通向神经网络和深度学习的一种重要思想。
感知机接收多个输入信号,输出一个信号。感知机的信号只有“流/不流”(1/0)两种取值,0对应“不传递信号”,1对应“传递信号”。
下图是一个接收两个输入信号的感知机的例子。x1、x2是输入信号,y是输出信号,w1、w2是权重(w是weight的首字母)。图中的○称为“神经元”或者“节点”。输入信号被送往神经元时,会被分别乘以固定的权重(w1x1、w2x2)。神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号θ表示。
把上述内容用数学式来表示,就是式:
感知机的多个输入信号都有各自固有的权重,这些权重发挥着控制各个信号的重要性的作用。也就是说,权重越大,对应该权重的信号的重要性就越高。
二、简单逻辑电路
- 与门:与门仅在两个输入均为1时输出1,其他时候则输出0。
下面考虑用感知机来表示这个与门。需要做的就是确定能满足图2-2的真值表的w1、w2、θ的值。实际上,满足图2-2的条件的参数的选择方法有无数多个。(w1,w2, θ) = (0.5, 0.5, 0.7) ,为(0.5, 0.5, 0.8),设定这样的参数后,仅当x1和x2同时为1时,信号的加权总和才会超过给定的阈值θ。
- 与非门:与非门就是颠倒了与门的输出。用真值表表示的话,如图2-3所示,仅当x1和x2同时为1时输出0,其他时候则输出1。
(w1, w2, θ) = (−0.5,−0.5,−0.7)实际上,只要把实现与门的参数值的符号取反,就可以实现与非门。
- 或门:只要有一个输入信号是1,输出就为1
3个门电路只有参数的值(权重和阈值)不同。也就是说,相同构造的感知机,只需通过适当地调整参数的值,就可以变身为与门、与非门、或门。
三、感知机的实现
-
与门
def AND(x1,x2):w1, w2, theta = 0.5, 0.5, 0.7tmp = w1 * x1 + w2 * x2if tmp > theta: return 1else:return 0
-
引入权重和偏置:把之前的公式中的θ换成-b:此处,b称为偏置,w1和w2称为权重。
w1和w2是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1的程度)的参数。
-
基于权重和偏置的与门的实现
import numpy as np def AND(x1,x2):w = np.array([0.5, 0.5])x = np.array([x1, x2])b = -0.7tmp = np.sum(w*x) + bif tmp > 0: return 1else:return 0
-
与非门
import numpy as np def AND(x1,x2):w = np.array([-0.5, -0.5])x = np.array([x1, x2])b = 0.7tmp = np.sum(w*x) + bif tmp > 0: return 1else:return 0
-
或门:
import numpy as np def OR(x1,x2):w = np.array([0.5, 0.5])x = np.array([x1, x2])b = -0.2tmp = np.sum(w*x) + bif tmp > 0: return 1else:return 0
四、感知机的局限新
异或门:仅当x1或x2中的一方为1时,才会输出1(“异或”是拒绝其他的意思)
实际上,用前面介绍的感知机是无法实现这个异或门的。首先,我们试着将或门的动作形象化。或门的情况下,当权重参数(b, w1, w2) = (−0.5, 1.0, 1.0)时:表示的感知机会生成由直线−0.5 + x1 + x2 = 0分割开的两个空间。其中一个空间输出1,另一个空间输出0
这条直线可以将○和△分开。
异或门的图像无法用一条直线来分割输出结果:
感知机的局限性就在于它只能表示由一条直线分割的空间。图2-8这样弯曲的曲线无法用感知机表示。另外,由图2-8这样的曲线分割而成的空间称为非线性空间,由直线分割而成的空间称为线性空间。
五、多层感知机
感知机的绝妙之处在于它可以“叠加层”。
这里,x1和x2表示输入信号,y表示输出信号。x1和x2是与非门和或门的输入,而与非门和或门的输出则是与门的输入。
异或门的实现:
import numpy as np
def XOR(x1,x2):s1 = OR(x1,x2)s2 = NAND(x1,x2)return AND(s1,s2)
与门、或门是单层感知机,而异或门是2层感知机。叠加了多层的感知机也称为多层感知机(multi-layered perceptron)。