一、感知机
1.感知机的作用
感知机接收多个输入信号,输出一个信号 。
输出信号只有1或0两种取值,对应神经元休眠和激活两个状态。
输入信号被送往神经元时,会被分别乘以固定的权重。
神经元会计算传送过来的信号的总和,总和超过了某个界限值时,才会输出1,称为“神经元被激活”。
感知机的多个输入信号都有各自固有的权重,这些权重发挥着控制各个信号的重要性的作用。 权重越大,对应该权重的信号的重要性就越高。
2.二输入感知机
假设有两个输入信号x1和x2,各自对应的权重系数为ω1 和ω2,一个输出信号y ,界限值为θ , 则二输入感知机可表示为:
θ又被称为阈值,当神经元传递过来的信号总和ω1 x1+ω2 x2大于θ时,才会输出1,这也被称为激活神经元。
3.逻辑电路
重点是记住逻辑电路的固定规则。同样假设有两个输入信号x 1 和x 2 ,一个输出信号y ,不同逻辑电路的规则及对应真值表如下:
与门(AND gate)
与非门(NAND gate)
或门(OR gate)
代码实现
#与门
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
#与非门
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
#或门
def OR(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5]) # 仅权重和偏置与AND不同!
b = -0.2
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
4.多层感知机实现异或门
运用已有的感知机进行组合:
代码实现:
def XOR(x1,x2):
S1 = NAND(x1,x2)
S2 = OR(x1,x2)
y = AND(s1,s2)
Return y