1.感知机
感知机接收多个输入信号,输出一个信号。0对应”不传递信号“,1对应”传递信号“
当输入信号×权重的总和超过阈值θ时,神经元被激活
权重越大,对应该权重的信号的重要性越高
与门(阈值θ换成-b,b称为偏置):
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
偏置是调整神经元被激活的容易程度的参数
与非门:
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
或门:
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
与门、与非门、或门是具有相同构造的感知机,区别只在于权重参数的值。
2.感知的局限性
单层感知机的局限性就在于它只能表示由一条直线分割的空间(线性空间)
异或门:
用感知机表示异或门:
如图所示,异或门是一种多层结构的神经网络。和与门、或门形状不同,与门、或门是单层感知机,而异或门是2层感知机。上图感知机由3层构成,但拥有权重的层实质上只有2层(第0层和第1层之间,第1层和第2层之间)
def XOR(x1,x2):
s1=NAND(x1,x2)
s2=OR(x1,x2)
y=AND(s1,s2)
return y
单层感知机无法表示的东西,通过增加一层就可以解决。
理论上2层感知机就能构建计算机,这是因为,使用sigmoid函数作为激活函数的2层感知机可以表示任意函数。
补充:perceptron感知机