深度学习入门导航🚀🚀🚀

  1. 🎉感知机 ⇦ 当前位置🪂

  2. 🎈神经网络

  3. 🧨神经网络的学习

  4. 🎊误差反向传播法

  5. 🧧与学习相关的技巧

  6. 🎑卷积神经网络

  7. 🌈深度学习

感知机(perceptron)是由美国学者Frank Rosenblatt在1957年提出来的

感知机接收多个输入信号,输出一个信号

感知机的信号只有“流/不流”( 1/0)两种取值

感知机是什么

image.png

  • x1x2 输入信号
  • y 输出信号
  • w1w2 权重
  • 图中的圆圈○ 神经元|节点
  • 输入信号被送往神经元时,会被分别乘以固定的权重(w1x1w2x2
  • 神经元被激活 神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1
  • 阈值θ 这个界限值
y={0(w1x1+w2x2θ)1(w1x1+w2x2>θ)

简单逻辑电路

与门

image.png

满足与门(同时为1,信号的加权总和才会超过阈值θ)的参数例子:

  • (w1,w2,θ)=(0.5,0.5,0.7)
  • (w1,w2,θ)=(0.5,0.5,0.8)
  • (w1,w2,θ)=(1.0,1.0,1.0)

与非门

image.png

满足与非门(不同时为零,信号的加权总和就会超过阈值θ)的参数例子:(w1,w2,θ)=(0.5,0.5,0.7)

只要把实现与门的参数值的符号取反,就可以实现与非门

或门

image.png

满足或门(只要有一个 1 ,信号的加权总和就会超过阈值θ)的参数例子:(w1,w2,θ)=(0.5,0.5,0.3)

感知机的实现

简单实现与门

python
1
2
3
4
5
6
7
8
9
10
11
12
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

AND(0, 0) # 输出0
AND(1, 0) # 输出0
AND(0, 1) # 输出0
AND(1, 1) # 输出1

导入权重和偏置

image.png

y={0(b+w1x1+w2x20)1(b+w1x1+w2x2>0)
  • 偏置的输入信号一直是1,为了区别会涂成灰色
  • θ换成b
  • 权重 w1w2
  • 偏置 b
python
1
2
3
4
5
6
7
8
9
10
11
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

python
1
2
3
4
5
6
7
8
9
10
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
python
1
2
3
4
5
6
7
8
9
10
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

感知机的局限性

异或门

image.png

image.png

事实上,用一条直线是无法将○和△分开的

单层感知机的局限性就在于它只能表示由一条直线分割的空间

线性和非线性

  • 线性空间 由直线分割而成的空间
  • 非线性空间 由曲线分割而成的空间

多层感知机

已有门电路的组合

image.png

image.png

异或门的实现

python
1
2
3
4
5
6
7
8
9
10
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

image.png

拥有权重的层实质只有2层,称为 2层感知机 ;其他文献有的也称 3层感知机