人工神经网络
一、感知机算法
感知机接收多个输入信号,输出一个信号。这里所说的“信号”可以想
象成电流或河流那样具备“流动性”的东西。像电流流过导线,向前方输送电子一样,感知机的信号也会形成流,向前方输送信息。
感知机的信号只有(0/1)两种取值,0对应“不传递信号”,1对应“传递信号”。
如图所示x1,x2是输入信号,y是输出信号,w1,w2是权重。一个圈表示一个“神经元”或“节点”。神经元会计算传过来的信号总和,只有当总和超过某个界限值时,才会输出1。这个界限成为阈值θ。如下图公式可以表示:
感知机解决简单问题
感知机解决问题可以以逻辑电路为参考,与门,与非门和或门。
给定相应的权值或阈值求出y
下面展示一些 python
。
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
可以运行得出相应的结果。
感知机的局限性
异或门的问题中单层感知机无法解决相应的问题。
要解决非线性可分问题,需要考虑多层感知机。
python
代码实现。
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y