1 / 30
文档名称:

神经网络编程入门.doc

格式:doc   大小:442KB   页数:30页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

神经网络编程入门.doc

上传人:w447750 2018/1/24 文件大小:442 KB

下载得到文件列表

神经网络编程入门.doc

相关文档

文档介绍

文档介绍:本文主要内容包括: (1) 介绍神经网络基本原理,(2) 实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法。
第0节、引例 
       本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在http://en./wiki/Iris_flower_data_set  找到。这里简要介绍一下Iris数据集:
有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度的数据。
一种解决方法是用已有的数据训练一个神经网络用作分类器。
如果你只想用C#或Matlab快速实现神经网络来解决你手头上的问题,或者已经了解神经网络基本原理,请直接跳到第二节——神经网络实现。
第一节、神经网络基本原理 
1. 人工神经元( Artificial Neuron )模型 
       人工神经元是神经网络的基本元素,其原理可以用下图表示:
图1. 人工神经元模型
 
       图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值( threshold ),或称为偏置( bias )。则神经元i的输出与输入的关系表示为:
 
图中 yi表示神经元i的输出,函数f称为激活函数( Activation Function )或转移函数( Transfer Function ) , activation)。若将阈值看成是神经元i的一个输入x0的权重wi0,则上面的式子可以简化为:
 
若用X表示输入向量,用W表示权重向量,即:
X = [ x0 , x1 , x2 , ....... , xn ]
 
则神经元的输出可以表示为向量相乘的形式:
 
 
       为正,称该神经元处于激活状态或兴奋状态(fire),为负,则称神经元处于抑制状态。
       图1中的这种“阈值加权和”的神经元模型称为M-P模型( McCulloch-Pitts Model ),也称为神经网络的一个处理单元( PE, Processing Element )。
2. 常用激活函数 
       激活函数的选择是构建神经网络过程中的重要环节,下面简要介绍常用的激活函数。
(1) 线性函数( Liner Function )
 
(2) 斜面函数( Ramp Function )
 
(3) 阈值函数( Threshold Function )
 
 
       以上3个激活函数都属于线性函数,下面介绍两个常用的非线性激活函数。
(4) S形函数( Sigmoid Function )
该函数的导函数:
(5) 双极S形函数 
该函数的导函数:
S形函数与双极S形函数的图像如下:
图3. S形函数与双极S形函数图像
双极S形函数与S形函数主要区别在于函数的值域,双极S形函数值域是(-1,1),而S形函数值域是(0,1)。
由于S形函数与双极S形函数都是可导的(导函数是连续函数),因此适合用在BP神经网络中。(BP算法要求激活函数可导)
3. 神经网络模型 
       神经网络是由大量的神经元互联而构成的网络。根据网络中神经元的互联方式,常见网络结构主要可以分为下面3类:
(1) 前馈神经网络( Feedforward works )
       前馈网络也称前向网络。这种网络只在训练过程会有反馈信号,而在分类过程中数据只能向前传送,直到到达输出层,层间没有向后的反馈信号,因此被称为前馈网络。感知机( perceptron)与BP神经网络就属于前馈网络。
       图4 中是一个3层的前馈神经网络,其中第一层是输入单元,第二层称为隐含层,第三层称为输出层(输入单元不是神经元,因此图中有2层神经元)。
图4. 前馈神经网络
 
对于一个3层的前馈神经网络N,若用X表示网络的输入向量,W1~W3表示网络各层的连接权向量,F1~F3表示神经网络3层的激活函数。
那么神经网络的第一层神经元的输出为:
O1 = F1( XW1 )
第二层的输出为:
O2 = F2 ( F1( XW1 ) W2 )
输出层的输出为:
O3 = F3( F2 ( F1( XW1 ) W2 ) W3 )
       若激活函数F1~F3都选用线性函数,那么神经网络的输出O3将是输入X的线性函数。因此,若要做高次函数的逼近就应该选用适当的非线性函数作为激活函数。
(2) 反馈神经网络( Feedb