感知机
感知机(perceptron)是由美国学者Frank Rosenblatt在1957年提出来的。可以说是最古老的分类算法之一。 为何我们现在还要学习这一很久以前就有的算法呢?因为感知机也是作为神经网络(深度学习)的起源的算法。 因此,学习感知机的构造也就是学习通向神经网络和深度学习的一种重要思想。 在这里我们将会简单介绍一下感知机,并用感知机解决一些简单的问题。
感知机是什么¶
感知机接收多个输入信号,输出一个信号。这里所说的“信号”可以想象成电流或河流那样具备“流动性”的东西。像 电流流过导线,向前方输送电子一样,感知机的信号也会形成流,向前方输送信息。但是,和实际的电流不同的 是,感知机的信号只有“流/不流” (1/0)两种取值。0对应“不传递信号”,1对应“传递信号”。
下图是一个接收两个输入信号的感知机的例子。x1 、x2 是输入信号,y是输出信号,w1 、w2 是权重(w是weight的首 字母)。图中的○称为“神经元”或者“节点”。输入信号被送往神经元时,会被分别乘以固定的权重(w1 x1 、w2 x2 )。神经元会计算由上一层神经元传送过来的信号的总和,只有当这个总和大于某个界限值时,才会输出1。这也称为“神经元被 激活” 。这里将这个界限值称为阈值,用符号θ表示。
感知机的多个输入信号都有各自固定的权重,这些权重发挥控制各个信号的重要性的作用。也就是说,权重越大,对应权重的信号的重要性就越高。
权重相当于电流里所说的电阻。电阻是决定电流流动难度的参数,电阻越低,通过的电流就会越大。而感知机则是权重越大,通过的信号的可能性就会越大。不管是电阻还是权重,在控制信号流的作用是一样的。
使用感知机实现逻辑电路
门电路
- 用以实现基本逻辑运算和复合逻辑运算的单元电路称为门电路。
- 常用的门电路在逻辑功能上有与门、或门、非门、与非门、或非门、与或非门、异或门等几种。
- “门”是这样的一种电路:它规定各个输入信号之间满足某种逻辑关系时,才有信号输出,通常有下列三种门电路: 与门、或门、非门。
- 从逻辑关系看,门电路的输入端或输出端只有两种状态,无信号以“0”表示,有信号以“1”表示。
导入权重和偏置¶
公式虽然看起来有所变化, 但是实际内容并没有发生任何变化.
在后面, 我们统一把b称为偏置, w1, w2 称为权重, b称为偏置.
感知机会计算输入信号的权重的乘积, 然后再乘积的基础上加上偏置, 这个这个值大于0就输出结果1, 如果小于等于0
就输出0.
为了后面计算起来比较方便, 我们把这个函数的实现利用Numpy进行编写:
def 与门(x1, x2):
input_x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
temp = np.sum(input_x * w) + b
if temp <= 0:
return 0
else:
return 1
这里我们可以对公式中各个参数的作用, 做出一定程度的理解:
w1, w2 与样本值相乘, 决定了每个不同的特征在最终输出结果中的重要程度, 权重越大, 则起的作用越大. 而偏置b 的作用是调整, 这个神经元激活的容易程度.如果b为-1, 则只要输出信号的加权总和超过0.1, 神经元就会被 激活了. 但如果b是100, 那么神经元的信号加权总和必须超过20, 神经元才能被激活.(这儿这个值的计算原理)。