Neural Networks: Application
本节内容:用神经网络实现同或(XNOR)和异或(XOR)运算
XNOR:两个输入相同取真,相异取假
XOR:两个输入相同取假,相异取真
XNOR和XOR互为非运算
一、神经网络的简单例子
在解决上述问题之前,先看几个简单的逻辑运算:AND, OR和NOT
(一) x1 x 1 AND x2 x 2
实现AND运算只需要一个两层的神经网络,它只包含输入层和输出层,不包含隐藏层。输入层有三个节点:偏置单位、
x1
x
1
和
x2
x
2
。 偏置单位取值总为1,
x1
x
1
和
x2
x
2
取值0或1。三个节点的权重分别为-30, 20和20。输出层只有一个输出单元。
通过粉色方框中的真值表,我们可以看到这个最简单的神经网络是如何实现AND运算的。
首先,我们需要知道当z的绝对值大于4.6时,逻辑函数g(z)的值就已经非常接近0或1了。
x1=x2=0
x
1
=
x
2
=
0
时,
z=Θx=−30
z
=
Θ
x
=
−
30
,因此
hΘ(x)=g(z)≈0
h
Θ
(
x
)
=
g
(
z
)
≈
0
,
x1=0,x2=1
x
1
=
0
,
x
2
=
1
或
x1=1,x2=0
x
1
=
1
,
x
2
=
0
时,
z=Θx=−10
z
=
Θ
x
=
−
10
,因此
hΘ(x)=g(z)≈0
h
Θ
(
x
)
=
g
(
z
)
≈
0
,
x1=x2=1
x
1
=
x
2
=
1
时,
z=Θx=10
z
=
Θ
x
=
10
,因此
hΘ(x)=g(z)≈1
h
Θ
(
x
)
=
g
(
z
)
≈
1
.
(二) x1 x 1 OR x2 x 2
OR运算和AND运算实现方式类似,只是输入层三个节点的权重分别为-10, 20和20。
(三)(NOT x1 x 1 ) AND (NOT x2 x 2 )
计算逻辑非运算的总体思路是,在你希望取非运算的变量前放上一个绝对值大的负数
NOT
x1
x
1
:输入层两个节点,权重分别为10和-20
(NOT
x1
x
1
) AND (NOT
x2
x
2
):输入层三个节点,权重分别为10, -20和-20
二、 x1 x 1 XNOR x2 x 2
将上述三个简单的逻辑运算组合在一起,就实现了同或门运算。
从输入层到隐藏层,进行
x1
x
1
AND
x2
x
2
和(NOT
x1
x
1
) AND (NOT
x2
x
2
)这两个逻辑运算
从隐藏层到输出层,进行一个OR运算
总结:本节用一个直观的例子证明了神经网络可以通过建立隐藏层实现更为复杂的函数计算。在实际应用中,通过运用更深的层数,我们可以解决更复杂的非线性分类问题,如手写数字的辨识等。