【有书共读】《深度学习入门》第2章 - 感知机
一、感知机概念
1、感知机(perceptron)是1957年提出来的一种算法,作为神经网络(深度学习)的起源的算法,本书所提到的感知机应称为“人工神经元”或“朴素感知机”。学习感知机的构造是学习通向深度学习和神经网络的一种重要思想。
2、感知机是什么:
感知机接收多个输入信号,输出一个信号,信号可想象成具有流动性的电流、河流之类。如下图例子:
解释:x1, x2为输入信号,y为输出信号,w1, w2是权重,图中的圆圈可称为神经元或节点,输入信号被送往神经元时,会被分别乘以固定的权重(w1x1, w2x2), 神经元会计算传送过来的神经信号的总和。当超过某个界限时,才会输出1,也称为神经元被激活。这个界限被称为阈值。
解释:用数学符号表示出来如上,感知机的多个输入信号都有各自的权重weight, 这些权重发挥着控制各个信号的重要作用。也即权重越大,对应该权重的信号的重要性就越高。
二、简单逻辑电路
1、与门 --AND gate
输入信号x1 | 输入信号x2 | 输出信号y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
怎么选择满足真值表的w1, w2, threshold的值?
当然满足条件的参数选择有无数个,如(w1, w2, h) = (0.5, 0.5, 0.7)、(0.5, 0.5, 0.8)等满足条件。设定参数后,当且仅当x1和x2同时为1时,信号的加权总和才会超过给定的阈值。
2、与非门 --NAND gate
输入信号x1 | 输入信号x2 | 输出信号y |
---|---|---|
0 | 0 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
当且仅当x1, x2同时为1时输出0。组合有(w1, w2, t) = (-0.5, -0.5, -0.7).
3、或门
输入信号x1 | 输入信号x2 | 输出信号y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
只要有一个输入信号是1,输出就为1。
4、与门、与非门、或门的感知机构造是一样的!三个门电路只有参数的值(权重和阈值)不同。也即是相同构造的感知机,只需通过适当地调整参数的值实现转变。机器学习的过程就是将决定参数的工作交给计算机自动进行。
三、感知机实现
1、python实现逻辑电路
def and(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1 * w1 + x2 * w2
if tmp <= theta:
return 0
else:
return 1
2、导入权重和偏置进行计算
import numpy as np
x = np.aray([0, 1])
w = np.array([0.5, 0.5])
b = -0.7
print(np.sum(w * x))
print(np.sum(w * x) + b)
3、权重和偏置实现与门
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
注:权重参数的作用是控制信号输入重要性的表示方法,而偏置是调整神经元被激活的容易程度的表示。
四、感知机的局限性
单层感知机不可以表示异或门,这里简答解释一下,感知机的局限性在于只能表示一条直线分开的空间,弯曲的曲线则无法表示,即表示线性空间而不能表示非线性空间,异或门则是曲线才能分开0和1.
五、多层感知机
1、感知机通过叠加层来表示异或门。通过与非门和或门来实现异或门。
x1 x2 | s1 s2 | 输出信号y |
---|---|---|
0 0 | 1 0 | 0 |
1 0 | 1 1 | 1 |
0 1 | 1 1 | 1 |
1 1 | 0 1 | 0 |
2、python实现异或门
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
3、异或门是一种2层的神经网络结构,与门、或门是单层感知机,叠加了多层的感知机称为多层感知机。
六、小结
1、感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值。
2、感知机将权重和偏置设定为参数。
3、使用感知机可以表示与门、或门等逻辑电路。
4、异或门无法使用单层感知机来表示。
5、使用2层感知机可以表示异或门。
6、单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。
7、多层感知机在理论上可以表示计算机。