李燕

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

如何实现逻辑非(negation)

上次我们实现了逻辑与与逻辑或运算,现在来看看逻辑非运算的实现

  

如左上图所示,我们只有一个x1输入,还有一个bias unit(+1),如果我们将weights设为10,-20的话,则我们的hΘ(x)=g(10-20x1)。计算右上角的表格可以得出函数的值与逻辑非函数的值是一至的。

cells include negation的基本思想是将你想要取反的那个变量的weight设为很大的负,如上例所示的用-20去乘x1,则会对x1取反.

右边的一个图为逻辑运算(NOT x1) AND (NOT x2)

实现XNOR(同或)

我们可以通过组合x1 AND x2, (NOT x1) AND (NOT x2) , x1 OR x2这三个单个的神经系统来组成x1 XNOR x2.

x1 XNOR x2的正负取值如最右上的那个坐标系所示,很显然如果要将它的正负取值分割开来的话,它的分割曲线是nonlinear的。

如左下图所示,我们将第一个神经单元用红色的表示,这个红色的是一个逻辑与,得到中间hidden layer层的a1(2),第二个单元用蓝色的表示的,是一个(NOT x1) AND (NOT x2),输出是a2(2),第三个单元是用绿色的表示的,是一个x1 OR x2,最后的输出设备是hΘ(x)的值与XNOR的值一至。这样我们一层一层的运算,从input layer到hidden layer再到output layer计算出了XNOR所要得到的效果。这说明当我们将几个简单的神经元进行组合时能组成complex function,一层一层递进的compute more complex function

 

上图是一个较复杂的神经网络,layer2得到比layer1复杂的features,layer3得到比layer2复杂的features,layer 4进行logistiv regression得到最后的output即hΘ(x),这就是我们之前提到的forward propagation(传播)

总结

1 神经网络可以由简单的神经元组合,通过一层一层的forward propagation,来处理复杂的非线性问题,如之前介绍的对手写数字(图片)的识别

2 二进制上的任何逻辑运算可以由神经网络近似的表示

,

 

posted on 2015-11-25 21:17  李燕  阅读(841)  评论(0编辑  收藏  举报