Matlab 神经网络工具箱应用
人工神经网络(Artificial Neural Networks,ANN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的非线性动力学系统,具有非线性自适应的信息处理能力,在模式识别、智能控制、组合优化、预测等领域得到广泛应用。
MATLAB是一种科学与工程计算的高级语言,广泛地运用于包括信号与图像处理,控制系统设计,系统仿真等诸多领域。为了解决神经网络问题中的研究工作量和编程计算工作量问题,MATLAB提供了现成的神经网络工具箱,为解决这个矛盾提供了便利条件。神经网络工具箱提供了很多经典的学习算法,使用它能够快速实现对实际问题的建模求解。
BP神经网络及其原理
BP神经网络是目前应用最为广泛和成熟的神经网络之一,它是一个包含输入层、隐含层和输出层三层结构的多层前馈型神经网络,层与层之间通过权值连接,每层各个神经元之间相互独立,互不影响。网络学习过程包括信号的前向传播和误差的反向传播,核心内容是采用梯度下降法,通过误差的反向传播及修正误差的方向不断调整各层权值和阈值,以期达到输出数据与期望数据的误差性能函数最小的目的。
误差反向传播算法作为神经网络训练的基本算法,存在收敛速度慢、容易陷入局部最小以及出现“过拟合”等问题。为克服BP神经网络的这些不足,相关研究人员提出了许多改进算法,例如附加动量法、牛顿法、自适应学习率法以及Levenberg-Marquardt(L-M)算法等。其中L-M算法在使用时不需要过多调整参数,具有很快的网络收敛速度和较高的网络训练精度。
L-M算法是一种求解非线性最小二乘问题的有效方法,它是改进的高斯-牛顿法,即梯度下降法和高斯-牛顿法的有效结合,既有牛顿法的局部收敛性,又具有梯度下降法的全局搜索特性,从而使网络能够有效收敛。
MATLAB中BP神经网络工具箱函数
BP网络创建函数
- newff
该函数用于创建一个BP网络。调用格式为:
net=newff
net=newff(PR,[S1 S2…SN1],{TF1 TF2…TFN1},BTF,BLF,PF)
其中,
net=newff;用于在对话框中创建一个BP网络。
net为创建的新BP神经网络;
PR为网络输入向量取值范围的矩阵;
[S1 S2…SNl]表示网络隐含层和输出层神经元的个数;
{TFl TF2…TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig’;
BTF表示网络的训练函数,默认为‘trainlm’;
BLF表示网络的权值学习函数,默认为‘learngdm’;
PF表示性能数,默认为‘mse’。
2)newcf函数用于创建级联前向BP网络,newfftd函数用于创建一个存在输入延迟的前向网络。
神经元上的传递函数
传递函数是BP网络的重要组成部分。传递函数又称为激活函数,必须是连续可微的。BP网络经常采用S型的对数或正切函数和线性函数。
1)logsig
该传递函数为S型的对数函数。调用格式为:
A=logsig(N)
info=logsig(code)
其中,
N:Q个S维的输入列向量;
A:函数返回值,位于区间(0,1)中;
2)tansig
该函数为双曲正切S型传递函数。调用格式为:
A=tansig(N)
info=tansig(code)
其中,
N:Q个S维的输入列向量;
A:函数返回值,位于区间(-1,1)之间。
3)purelin
该函数为线性传递函数。调用格式为:
A=purelin(N)
info=purelin(code)
其中,
N:Q个S维的输入列向量;
A:函数返回值,A=N。
BP网络学习函数
1)learngd
该函数为梯度下降权值/阈值学习函数,它通过神经元的输入和误差,以及权值和阈值的学习效率,来计算权值或阈值的变化率。调用格式为:
[dW,ls]=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
[db,ls]=learngd(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)
info=learngd(code)
2)learngdm
该函数为梯度下降动量学习函数,它利用神经元的输入和误差、权值或阈值的学习速率和动量常数,来计算权值或阈值的变化率。
BP网络训练函数
1)train
神经网络训练函数,调用其他训练函数,对网络进行训练。该函数的调用格式为:
[net,tr,Y,E,Pf,Af]=train(NET,P,T,Pi,Ai)
[net,tr,Y,E,Pf,Af]=train(NET,P,T,Pi,Ai,VV,TV)
2)traingd函数为梯度下降BP算法函数。traingdm函数为梯度下降动量BP算法函数。
实例:烟气含氧量预测模型
引用文章:神经网络在风烟系统含氧量软测量中的应用 隐含层节点数对BP神经网络性能的影响
L-M算法的含氧量实际值与预测值对比