1、感知机
感知机是由美国学者Frank Rosenblatt在1957年提出来的。因为感知机也是作为神经网络(深度学习)的起源的算法。因此,学习感知机的构造也就是学习通向神经网络和深度学习的一种重要思想。
1.什么是感知机?
感知机接收多个输入信号,输出一个信号。感知机的信号只有“流/不流”(1/0)两种取值。0对应“不传递信号”,1对应“传递信号”。
----上图是一个接收两个输入信号的感知机的例子。x1、x2是输入信号,y是输出信号,w1、w2是权重(w是weight的首字母)。图中的○称为“神经元”或者“节点”。输入信号被送往神经元时,会被分别乘以固定的权重(w1x1、w2x2)。神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活”。这里将这个界
限值称为阈值,用符号θ表示。
(数学公式)
----感知机的多个输入信号都有各自固有的权重,这些权重发挥着控制各个信号的重要性的作用。也就是说,权重越大,对应该权重的信号的重要性就越高。
----权重相当于电流里所说的电阻。电阻是决定电流流动难度的参数,电阻越低,通过的电流就越大。而感知机的权重则是值越大,通过的信号就越大。不管是电阻还是权重,在控制信号流动难度(或者流动容易度)这一点上的作用都是一样的。
2、简单逻辑电路
2.1 与门(AND gate)
----与门是有两个输入和一个输出的门电路。与门仅在两个输入均为1时输出1,其他时候则输出0。
(与门的真值表)
2.2 与非门和或门(NAND gate)
----与非门就是颠倒了与门的输出。仅当x1和x2同时为1时输出0,其他时候则输出1。
(与非门的真值表)
(或门的真值表)
----我们已经知道使用感知机可以表示与门、与非门、或门的逻辑电路。这里重要的一点是:与门、与非门、或门的感知机构造是一样的。实际上,3个门电路只有参数的值(权重和阈值)不同。也就是说,相同构造的感知机,只需通过适当地调整参数的值,就可以像“变色龙演员”表演不同的角色一样,变身为与门、与非门、或门。
3 感知机的实现
3.1 简单的实现
----现在,我们用Python来实现刚才的逻辑电路。这里,先定义一个接收参数x1和x2的AND函数。
与门:
def AMD(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。
3.2 导入权重和偏置
----b称为偏置,w1和w2称为权重。感知机会计算输入信号和权重的乘积,然后加上偏置,如果这个值大于0则输出1,否则输出0。
3.3 使用权重和偏置的实现
与门:
def AND(x1,x2):
x = np.arange([x1,x2])
w = np.arange([0.5,0.5])
b = -0.7
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
----w1和w2是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1的程度)的参数。
与非门:
import numpy as np
def NAND(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
或门:
import numpy as np
def OR(x1, x2):
x = np.array([x1,x2])
w = np.array([0.5,0.5])
b = -0.2
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
----与门、与非门、或门是具有相同构造的感知机,区别只在于权重参数的值。因此,在与非门和或门的实现中,仅设置权重和偏置的值这一点和与门的实现不同。
4 感知机的局限性
4.1 异或门(XOR gate)
----异或门也被称为逻辑异或电路。仅当x1或x2中的一方为1时,才会输出1(“异或”是拒绝其他的意思)。
(异或门的真值表)
4.2 线性和非线性
----感知机的局限性就在于它只能表示由一条直线分割的空间。
----曲线分割而成的空间称为非线性空间,由直线分割而成的空间称为线性空间。
5 多层感知机
----感知机不能表示异或门让人深感遗憾,但也无需悲观。实际上,感知机的绝妙之处在于它可以“叠加层”(通过叠加层来表示异或门是本节的要点)。
5.1 已有门电路的组合
(与门、与非门、或门的符号)
(通过组合与门、与非门、或门实现异或门)
(异或门的真值表)
5.2 异或门的实现
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
----异或门是一种多层结构的神经网络。最左边的一列称为第0层,中间的一列称为第1层,最右边的一列称为第2层。
----与门、或门是单层感知机,而异或门是2层感知机。叠加了多层的感知机也称为多层感知机。
(用感知机表示异或门)
----感知机总共由 3层构成,但是因为拥有权重的层实质上只有 2层(第 0层和第 1层之间,第 1层和第 2层之间),所以称
为“2层感知机”。
1.第0层的两个神经元接收输入信号,并将信号发送至第1层的神经元。
2.第1层的神经元将信号发送至第2层的神经元,第2层的神经元输出y。
6 从与非门到计算机
----感知机通过叠加层能够进行非线性的表示,理论上还可以表示计算机进行的处理。