概念那些就不解释了,Google一下就有很多资料。
单一神经元节点如何工作
Single NN WorkingX1, X2, ...Xn是这个神经元的输入,
X0时偏移量
W1,W2...Wn代表权重
从输入数据X1, X2, ...Xn产生的输出数据a的表达式是:
f是一个激活函数,可以是高斯函数,双曲函数,也可以是简单的线性函数
在这篇文章中,我用以下的激活函数:
激活函数
使用单一节点实现布尔运算
布尔运算包括与,或,非,异或等等……
与运算:
另X0 = -1.5;输出a = f(-1.5 + X1 + X2);得到真值表:
X1 | X2 | X1 & X2 | -1.5 + X1 + X2 | a |
---|---|---|---|---|
1 | 1 | 1 | 0.5 | 1 |
1 | 0 | 0 | -0.5 | 0 |
0 | 1 | 0 | -0.5 | 0 |
0 | 0 | 0 | -1.5 | 0 |
这样就用一个神经元节点成功地实现了与运算。注意,X0可以是[-2, -1)之间的任何数。
或运算:
另X0 = -0.5;输出a = f(-0.5 + X1 + X2);得到真值表:
X1 | X2 | X1 & X2 | -0.5 + X1 + X2 | a |
---|---|---|---|---|
1 | 1 | 1 | 1.5 | 1 |
1 | 0 | 0 | 0.5 | 1 |
0 | 1 | 0 | 0.5 | 1 |
0 | 0 | 0 | -0.5 | 0 |
同样,用单一神经元节点成功实现了或运算。
非运算:
另X0 = 0;输出a = f(1- 2X1);得到真值表:
X1 | !X1 | 1- 2X1 | a |
---|---|---|---|
1 | 0 | -1 | 0 |
0 | 1 | 1 | 1 |
同样,用单一神经元节点成功实现了非运算。
使用多个神经元节点实现同或门
同或门XNOR又称异或非门,异或是指相同为0,不同为1,XNOR恰好相反
实现证明一个神经元节点不能实现同或门:
可以证明:
A XNOR B = NOT (A XOR B)
= NOT [ (A or B) and (!A OR !B) ]
= !(A OR B) OR !(!A OR !B)
=(!A and !B) OR (A and B)
利用表达式a = f(0.5-X1-X2)可以表示(!A and !B);
因此,用一个神经元节点表示(!A and !B),用另一个神经元节点表示(A and B),最后将这两个神经元节点做或运算就可以表示XNOR,如图所示:
a1: !A and !B
a2: A and B
a3: a1 or a2
网友评论