深度学习:感知机
感知机是作为神经网络的起源的算法。
1、什么是感知机
感知机接受多个信号,输出一个信号。感知机的信号只有两种取值(1/0)。
2、单层感知机的简单实现
与门、与非门和或门都是具有相同构造的感知机,区别只在于权重参数的值。
#感知机实现
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
print(AND(0,0))
print(AND(1,0))
print(AND(0,1))
print(AND(1,1))
输出:
0
0
0
1
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
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
单层感知机无法分离非线性空间
3、异或门的实现
叠加了很多层的感知机也称为多层感知机。
def XOR(x1,x2):
"""异或门"""
s1 = NAND(x1,x2)
s2 = OR(x1,x2)
y = AND(s1,s2)
return y
print(XOR(0,0))
print(XOR(1,0))
print(XOR(0,1))
print(XOR(1,1))
0
1
1
0

通过叠加层(加深层),感知机能进行更加灵活的表示。
浙公网安备 33010602011771号