深度学习入门学习笔记一
感知机
一.感知机是什么
感知机接收多个输入信号,输出一个信号。
图1是一个接收两个输入信号的感知机的例子。x1、x2是输入信号,y是输出信号,w1、w2是权重(w是weight的首字母)。图中的圆圈称作神经元或者节点。输入信号呗送往神经元时,会被分别乘以固定的权重(w1x1, w2x2)。神经元会计算过来的信号的总和只有当这个总和超过了某个界限值,才会输出1。这也称为神经元被 激活。这里将找个界限称为 阈值,用符号θ表示。
将上述内容用数学式表示为
感知机得多个输入信号都有各自固定得权重,这些权重发挥着控制各个信号得重要性得作用。也就是说,权重越大,对应权重的信号的重要性就越高。
二.简单逻辑电路
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
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
上面的实现比较直接,但是考虑到之后的学习,我们将其修改为另外一种实现形式。在此之前,首先把图1中的θ换成−b。
此处,b称为偏置, w1和w2为权重,下面利用Numpy来实现
import numpy as np
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
请注意:偏置和权重的作用是不相同的。权重w1,w2是控制输入信号的重要性的参数,而偏置是调整神经元被激活的难易程度。
2.与非门
代码实现:
import numpy as np
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
3.或门
代码实现:
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
感知机的局限
1.异或门
异或门也被成为逻辑异或电路,仅当x1或者x2中的一个为1时,才输出1。
由于异或逻辑电路无法像以上三种逻辑电路一样可进行线性分割出两种输出结果。
比如或门:
上图表示的感知机会生成直线-0.5 + x1 + x2 = 0分隔开的两个空间。其中一个空间输出1,另一个空间输出0,如下图所示:
而异或的问题在于无法通过一个线性函数来区分0和1
如图:
2.线性和非线性
由曲线分割而成的空间称为非线性空间,由直线分割而成的空间称为线性空间。形如下图异或逻辑电路的分割曲线即为非线性
。
2.多层感知机
可以通过与门,与非门,或门组合起来的方式来获得异或的结果。
3.异或门的实现
我们继续使用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
异或门时一种多层结构的神经网络。通常,将最左端的一列称为第0层,中间的一列称为第1层,最右端的一列称为第2层。
同时,叠加了多层的感知机也成为多层感知机(multi-layered perceptron)
1.第0层的两个神经元接收输入信号,并将信号发送至第1层的神经元。
2.第一层的神经元将信号发送至第2层的神经元,第2层的神经元输出y
总结
- 感知机是具有输入和输出的算法。给定一个输入后,将输入一个既定的值
- 感知机将权重和偏置设定为参数
- 使用感知机可以表示与、与非、或、异或等逻辑电路
- 异或门无法通过单层感知机来表示
- 使用2层感知机可以表示异或门
- 单层感知机只能表示线性空间,而多层感知机可以表示非线性空间
- 多层感知机(在理论上)可以表示计算机