现在的位置: 首页 > 综合 > 正文

机器学习笔记之人工神经网络(ANN)

2014年07月10日 ⁄ 综合 ⁄ 共 1373字 ⁄ 字号 评论关闭

     人工神经网络(ANN)提供了一种普遍而且实际的方法从样例中学习值为实数、离散值或向量函数。人工神经网络由一系列简单的单元相互连接构成,其中每个单元有一定数量的实值输入,并产生单一的实值输出。


       上面是一个汽车自动驾驶神经网络学习的例子:下方的图像是网络的输入,通过4个隐藏单元运算,得到30个输出(图的上方)决定汽车的行驶方向。

      本文主要介绍两种基本单元:感知器和线性单元的权值学习。


感知器

(1)感知器原理

       感知器是神经网络的一种基础单元。感知器以一个实数值作为输入,计算这些值得线性组合,如果大于某个阈值就输出1,否则输出-1。(其实就是一个符号函数


      感知器可以看做n维空间中的超平面决策面。对于超平面一侧的实例感知器输出1,另一侧的输出-1。但是有些实例点是不可分割的(如下图右侧)

(2)感知器训练法则

       感知器的学习任务是决定一个权向量(w1,w2,w3....),使感知器能对给定的实例输出正确的1或-1。为得到接受的权向量,一种办法是从随机值开始,然后反复的应用感知器,不断修正感知器权值wi,直到感知器能够分类所有的训练样例。


       上面这中学习只有在样本点确实线性可分,感知器才能学习到正确的权值。


线性单元

(1)线性单元

     线性单元没有感知器阈值判断,直接输出所有输入的组合。



(2)梯度下降和delta法则

       当样例不可分时,运用delta法则,可以使目标收敛到目标概念的最佳近近似(误差最小)。定义训练误差:


这里,我们定义使训练数据输出误差最小为最佳假设。

                              

       为了确定使E最小的权向量w,梯度下降搜索从一个任意的初向量开始,然后以很小的反复修改这个向量。每一步都沿着误差曲面最陡峭下降方向去修改权向量,继续这个过程直到得到全局的最小误差点。

       最陡峭的下降方向其实就是梯度方向。即将E对wi分别求偏导就能得到相应修改的量。



     
上面梯度算法,容易陷于局部的极小值。为了避免这种情况,改用随机梯度算法。随机梯度下降的思想是根据每个单独样例的误差去修改权值,得到近似的梯度搜索。


注:这里跟感知器的区别是输出不一定是正负1,所以误差不一定是正负2。


多层网络和反向传播算法

      单个感知器仅能表示线性决策面。相反,反向传播算法,能够学习的多层网络能够表示非线性全面。多层网络表示有多个隐藏层。感知器由于不可微,不适合梯度下降算法。我们选用输入非线性可微函数,来构造多层网络。该单元叫做sigmod单元。说简单些,logistic函数其实就是这样一个函数:

                                      P(t) = \frac{1}{1 + e^{-t}}

非常简单吧,这个函数的曲线如下所示,很像一个“S”型吧,所以又叫 sigmoid曲线(S型曲线)。

                  File:Logistic-curve.svg


      

       对于一些列确定的单元互联形成的多层网络,反向传播算法可以用来学习这个网络的权值。它采用梯度下降方法试图最小化网络输出值和目标值之间的误差平方。


       在多层网络中,误差曲面可能有多个局部最小值,这就意味着梯度下降仅能保证收敛到局部最小值,不能保证收敛到全局极小值。通过随机梯度下降来改善;或者为梯度下降增加一个冲量项。

神经网络的特点

(1)抗噪声比较强,允许训练数据有错误;

(2)实例是由很多“属性-值”对表示;

(3)需要较长时间训练;

抱歉!评论已关闭.