一、神经网络算法简介
神经网络(NN)或者人工神经网络(ANN)是指用大量的简单计算单元(神经元)构成非线性系统,在一定程度上模拟了大脑的信息处理、存储和检索等功能。BP网络的误差反向后传学习算法,是最常用的神经网络算法。它利用输出后的误差来估计输出层的直接前导层误差,再利用这个误差更新前一层的误差,如此反传下去获得所有其他各层的误差估计。
记得之前模式识别的老师说,神经网络算法就像一个黑盒子,不知道里面具体的样子,输入到黑盒子里就可以得到结果,所以这也是有少数人不信任这个算法的原因之一。
背景啥的就不过多赘述了。
二、人工神经元模型
神经网络由许多并行运算、功能简单的神经元组成,神经元是构成神经网络的基本元素。神经元模型如图所示。

图中 �1−�� 是从其他神经元传来的输入信号, ��� 表示从神经元j到神经元i的连接权值, � 表示一个阈值(或者成为偏置),则神经元i的输入与输出的关系表示为:
����=∑�=1������−�
��=�(����)
�� 表示神经元i的输出,函数f称为激活函数或转移函数,net称为净激活。若将阈值看成神经元i的一个输入 �0 的权重 ��0 ,则式子可以简化为:
����=∑�=1������
若用X表示输入向量,用W表示权重向量即:
�=[�0,�1,�2,...,��]

则神经元的输出可以表示为向量相乘的形式:
����=��
��=�(����)=�(��)
若神经元的净激活net为正,则该神经元处于激活状态,否则,神经元处于抑制状态。
三、常用激活函数
激活函数的选择是构建神经网络的重要环节,下面是几种常用的激活函数,前三个属于线性函数,后三个为非线性函数。
(1)线性函数
�(�)=��+�
(2)斜面函数

(3)阈值函数

(4)S形函数
�(�)=11+�−��(0<�(�)<1)
导函数为
�′(�)=��−��(1+�−��)2=��(�)[1−�(�)]
(5)双极S形函数
�(�)=21+�−��−1,(−1<�(�)<1)
导函数为
�′(�)=2��−��(1+�−��)2=�[1−�(�)2]2
BP算法要求激活函数可导,所以S型函数和双极型S函数适合用在BP神经网络中。
四、神经网络模型
(1)前馈神经网络
(2)反馈神经网络
(3)自组织网络
前馈网络也称前向网络。只在训练过程中有反馈信号,在分类过程中也只向前行传送,直到达到输出层,层间没有向后的反馈信号。BP神经网络就属于前馈网络。在实际应用中,绝大多数神经网络模型都采用BP网络和它的变形形式。
反馈神经网络是一种从输出到输入都具有反馈链接的神经网络,结构比前馈网络复杂得多。典型的反馈神经网络有Elman网络、Hopfield网络。
自组织神经网络是一种无导师学习网络。通过自动寻找样本中的内在规律和本质属性,自组织、自适应的改变网络参数与结构。
五、神经网络工作方式
神经网络分为学习和工作两种状态
神经网络学习状态:
神经网络的学习主要是指使用学习算法来调整神经元间的连接权,使得网络输出更符合实际。学习算法主要分为有导师和无导师学习两类。有导师是将一组训练集送入网络,根据网络的实际输出与期望输出间的差别来调整连接权。无导师学习抽取样本集合中蕴含的统计特性,并以神经元之间的连接权的形式存于网络中。
有导师学习算法步骤:
(1)从样本集合中取一个样本 (��,��) ,其中 �� 是输入, �� 是期望输出。
(2)计算网络的实际输出O。
(3)求 �=��−� 。
(4)根据D调整权矩阵W;
(5)对每个样本重复上述过程,直到对整个样本集来说,误差不超过固定范围为止。
Delta学习规则:
Delta学习规则是一种简单的有导师学习算法:
���(�+1)=���(�)+�(��−��)��(�)
式中:
��� ————神经元j到神经元i的连接权
�� ————神经元i的期望输出
�� ————神经元i的实际输出
�� ————表示神经元k的状态,处于激活状态为1,处于抑制状态为0或-1(根据激活函数选择)
� ————学习速度的常数
简单来讲就是,若神经元的实际输出比期望输出大,则减小所有输入为正连接的权重,反之同理。
六、BP神经网络算法
BP神经网络的学习过程主要由四部分组成:输入模式顺传播。输出误差逆传播、循环记忆训练、学习结果判别。
BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。