感知机

当对新的信息进行决策时,人类能够从中识别出相似的信息;而机器学习方法却只能凭借已经见过的数据进行归纳,而且归纳的方式受到很大的限制。

知识点

  • 感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值。
  • 感知机将权重和偏置设定为参数。
  • 使用感知机可以表示与门和或门等逻辑电路。
  • 异或门无法通过单层感知机来表示。
  • 使用2层感知机可以表示异或门。
  • 单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。
  • 多层感知机(在理论上)可以表示计算机。

感知机

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

有两个输入的感知机:
有两个输入的感知机

用数学式来标示:

感知机数学式

##感知机的实现

与门

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
tmp = np.sum(x * w) + b

if tmp <= 0:
return 0
else:
return 1

print(AND(0, 0))
print(AND(0, 1))
print(AND(1, 0))
print(AND(1, 1))

与非门

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def NAND(x1, x2):
x = np.array([x1, x2])
w = np.array([-0.5, -0.5])
b = 0.7
tmp = np.sum(x * w) + b

if tmp <= 0:
return 0
else:
return 1

print(NAND(0, 0))
print(NAND(0, 1))
print(NAND(1, 0))
print(NAND(1, 1))

或门

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def OR(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.2
tmp = np.sum(x * w) + b

if tmp <= 0:
return 0
else:
return 1

print(OR(0, 0))
print(OR(0, 1))
print(OR(1, 0))
print(OR(1, 1))

异或门

1
2
3
4
5
6
7
8
9
def XOR(x1, x2):
s1 = OR(x1, x2)
s2 = NAND(x1, x2)
return AND(s1, s2)

print(XOR(0, 0))
print(XOR(0, 1))
print(XOR(1, 0))
print(XOR(1, 1))