人工神经网络(ANN)入门一

人工神经网络(ANN)是由试图去模仿生物神经系统而激发的。人的大脑主要由神经元(neuron)组成,神经元通过轴突(axon)连接在一起。当神经元收到刺激时,神经脉冲(nerve impulses)通过轴突由一个神经元传递到另一个神经元。一个神经元通过树突(dendtrite)连接到其他神经元的轴突,树突是神经元细胞体的延伸物。树突和一个轴突的连接点叫做突触(synapse)。人的大脑通过在同一个脉冲反复刺激下改变神经元之间的突触连接强度来进行学习。神经网络由很多简单的,相互交互的节点构成。信息通过这些节点间的连接的强度来表达,通过在学习过程中调整这些连接来获得。

在神经网络中一个计算单元就是一个人工神经元,一个人工神经元由以下几部分组成:
(1)输入信号,这些信号代表数据集来源于环境或者是其他神经元的输出。
(2)一系列的权重wi ,这些权重代表连接的强度。
(3)输入加权求和WiXi
(4)一个阀值函数 f ,这个函数最终的输出结果由是否输入加权求和大于,等于或小于这个阀值来决定。

下面是net = WiXi来决定。

下面是一个简单的可以用来计算AND函数的人工神经元:人工神经网络(ANN)入门一
这个人工神经元由三个输入组成,原始输入 x 和 y,第三个输入是常量+1的偏置输入 。假如输入的x,y和偏置因子的权重分别为+1,+1,和-2。则可以得到以下结果:
人工神经网络(ANN)入门一
人工神经网络(ANN)入门一
以x=1, y=1来举例具体计算过程
output = 1*(+1)+1*(+1)+1*(-2)= 0,结果大于等于0,所以输出为1.
同理当x = 1, y = 0时,
output = 1*(+1)+0*(+1)+ 1*(-2)=-1,结果小于0,所以输出为-1。

同样的方法我们也可以用人工神经网络计算OR运算,只需要将偏置权重调整为-1即可。感知器构造如下:
人工神经网络(ANN)入门一

  • 学习感知器模型:
    感知器训练算法能够用来调整一个人工神经元的权重,这个权重将会被一直调整直到这个神经元的输出与真实的训练样本的输出相一致。
    下面的公式是权重的调整的一个方法:
    Δwi=c(df(net))xi
    在这个公式中:
    Δwi代表需要被调整的第i个权重
    f(net) 代表感知器的输出值
    d 代表实际需要被输出的值,通常为测试样本的样本标签值
    c 代表决定学习率的步值
    总结一下这个公式就是:
    如果输出的预测值和训练样本的真实值一致,则不需要调整权重;如果神经元输出的是 -1 但实际应该是 +1,根据公式Δwi=c(1(1))xi=2cxi
    所以第i个权重就会被增加  2cxi; 同理,如果神经元的输出是 +1 但是真实结果是 -1,则第 i 个权重被减小 2cxi。需要注意的是我们不能每次以较大的幅度调整权重,因为他们仅仅适应于当前的测试样本。在权重调整中,前面的迭代的调整幅度可以稍微大一些,越是到后面的迭代调整幅度应该越小。
    公式中c 代表决定学习率的步值,它的值在0和1之间。它决定了每一次迭代调整的值,如果c接近0,新的权重就受旧的权重的影响较多;如果c接近1,则新的权重就受当前迭代调整的表现影响较多。通常而言,一个合适的c值不是很容易被找到,通常在前几次迭代中c相对比较大,在后面的迭代中c值应逐渐减小。
    下面我们来举一个具体的例子来看如何选取一个合适的c值。下面的图表给出了几个训练样本的输入和输出。
x1
x2
output
1.0 1.0 1
9.4 6.4 -1
2.5 2.1 1
8.0 7.7 -1
0.5 2.2 1
7.9 8.4 -1
7.0 7.0 -1
2.8 0.8 1
1.2 3.0 1
7.8 6.1 -1

相应的,我们可以简单的得到它的感知器人工神经网络(ANN)入门一
前面讲过的感知器函数x1w1+x2w2+x0w0>=0时,f(net)输出为1,当x1w1+x2w2+x0w0<0时,f(net)输出为-1.
下面就是求解c的过程了:
第一步:我们将所有的样本画在平面坐标系下,横坐标代表x1, 纵坐标代表x2,因为是二维的平面坐标系,所以我们可以用一条直线来将正负样本分开。如图:人工神经网络(ANN)入门一
这条直线可以表示为x2=mx1+b, m为这条直线的斜率,b为这条直线与y轴的截点。从图中我们可以大致得到b=9.5,m=9.5/8.5, 带入到直线公式中可以得到两个等式9.5x18.5x2+80.75=09.5x1+8.5x280.75=0。为了验证我们所取的c值的正确性,我们可以将表格中的输入带入到公式中,x1=1.0,x2=1.0,output=1时,-9.5*1.0-8.5*1.0+80.75>=0,所以输出为1,与表格中的输出一致,所以当前的w值与c值是符合的,接下来将所有的点都带入到公式中来验证是否当前的w值与c值是否是正确的。经过验证(计算过程省略)表格中所有的输入输出与9.5x18.5x2+80.75=0 一致,所以我们可以得到w1=9.5,w2=8.5,c=80.75, 当然,这只是其中的一组解,实际上可以有无数组解,只要可以满足能将输出的+1与-1的点分开即可。
简单的一个人工神经网络就介绍完了,如何解决类似异或问题的需要多层神经网络的问题以及前向传播,后向传播将在接下来 更新中(人工神经网络(ANN)入门二)中介绍。