bp神经网络改进算法
‘壹’ BP神经算法是什么能给点既通俗易懂又比较详细的回答吗
BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。
BP神经网络算法是在BP神经网络现有算法的基础上提出的,是通过任意选定一组权值,将给定的目标输出直接作为线性方程的代数和来建立线性方程组,解得待求权,不存在传统方法的局部极小及收敛速度慢的问题,且更易理解。
1 传统的BP算法简述
BP算法是一种有监督式的学习算法,其主要思想是:输入学习样本,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。具体步骤如下: (1)初始化,随机给定各连接权[w],[v]及阀值θi,rt。 (2)由给定的输入输出模式对计算隐层、输出层各单元输出 bj=f(■wijai-θj) ct=f(■vjtbj-rt) 式中:bj为隐层第j个神经元实际输出;ct为输出层第t个神经元的实际输出;wij为输入层至隐层的连接权;vjt为隐层至输出层的连接权。 dtk=(ytk-ct)ct(1-ct) ejk=[■dtvjt] bj(1-bj) 式中:dtk为输出层的校正误差;ejk为隐层的校正误差。 (3)计算新的连接权及阀值,计算公式如下: vjt(n+1)=vjt(n)+?琢dtkbj wij(n+1)=wij(n)+?茁ejkaik rt(n+1)=rt(n)+?琢dtk θj(n+1)=θj(n)+?茁ejk 式中:?琢,?茁为学习系数(0<?琢<1,0<?茁<1)。 (4)选取下一个输入模式对返回第2步反复训练直到网络设输出误差达到要求结束训练。 传统的BP算法,实质上是把一组样本输入/输出问题转化为一个非线性优化问题,并通过负梯度下降算法,利用迭代运算求解权值问题的一种学习方法,但其收敛速度慢且容易陷入局部极小,为此提出了一种新的算法,即高斯消元法。
2 改进的BP网络算法
2.1 改进算法概述 此前有人提出:任意选定一组自由权,通过对传递函数建立线性方程组,解得待求权。本文在此基础上将给定的目标输出直接作为线性方程等式代数和来建立线性方程组,不再通过对传递函数求逆来计算神经元的净输出,简化了运算步骤。没有采用误差反馈原理,因此用此法训练出来的神经网络结果与传统算法是等效的。其基本思想是:由所给的输入、输出模式对通过作用于神经网络来建立线性方程组,运用高斯消元法解线性方程组来求得未知权值,而未采用传统BP网络的非线性函数误差反馈寻优的思想。 2.2 改进算法的具体步骤 对给定的样本模式对,随机选定一组自由权,作为输出层和隐含层之间固定权值,通过传递函数计算隐层的实际输出,再将输出层与隐层间的权值作为待求量,直接将目标输出作为等式的右边建立方程组来求解。 现定义如下符号(见图1):x (p)输入层的输入矢量;y (p)输入层输入为x (p)时输出层的实际输出矢量;t (p)目标输出矢量;n,m,r分别为输入层、隐层和输出层神经元个数;W为隐层与输入层间的权矩阵;V为输出层与隐层间的权矩阵。具体步骤如下: (1)随机给定隐层和输入层间神经元的初始权值wij。 (2)由给定的样本输入xi(p)计算出隐层的实际输出aj(p)。为方便起见将图1网络中的阀值写入连接权中去,令:隐层阀值θj=wnj,x(n)=-1,则: aj(p)=f(■wijxi(p)) (j=1,2…m-1)。 (3)计算输出层与隐层间的权值vjr。以输出层的第r个神经元为对象,由给定的输出目标值tr(p)作为等式的多项式值建立方程,用线性方程组表示为: a0(1)v1r+a1(1)v2r+…+am(1)vmr=tr(1)a0(2)v1r+a1(2)v2r+…+am(2)vmr=tr(2) ……a0(p)v1r+a1(p)v2r+…+am(p)vmr=tr(p) 简写为: Av=T 为了使该方程组有唯一解,方程矩阵A为非奇异矩阵,其秩等于其增广矩阵的秩,即:r(A)=r(A┊B),且方程的个数等于未知数的个数,故取m=p,此时方程组的唯一解为: Vr=[v0r,v2r,…vmr](r=0,1,2…m-1) (4)重复第三步就可以求出输出层m个神经元的权值,以求的输出层的权矩阵加上随机固定的隐层与输入层的权值就等于神经网络最后训练的权矩阵。
3 计算机运算实例
现以神经网络最简单的XOR问题用VC编程运算进行比较(取神经网络结构为2-4-1型),传统算法和改进BP算法的误差(取动量因子α=0.001 5,步长η=1.653)
‘贰’ 基于改进的BP人工神经网络算法的软土地基沉降预测
改进的BP神经网络预测需要等间隔数据,利用Spline插值点进行建模。为了和前述方法的预测效果对比,仍选取550~665d(共24个样本数据)的沉降量作为训练样本,预留 670~745d(共16个样本数据)的沉降量作为对训练好的BP人工神经网络的检验样本。以每相邻的连续4个沉降量(时间间隔Δt=5 d)作为一个输入样本(S1,S2,S3,S4),紧邻的第5个沉降量作为目标样本(S5),这样,利用 2 4个原始数据点,构建了 21组训练样本输入向量。每组训练样本的输入层单元数为n=4,输出层单元数为q=1,又隐层单元数p的确定公式为
温州浅滩软土工程特性及固结沉降规律研究
式中:a为1~10之间的常数。
由式(5.57)确定隐层神经元数为p=3~12。其具体值将通过BP人工神经网络训练误差来判断,取网络误差最小时对应的隐层神经元数。
本书基于MATLAB 7.1 编制了改进的BP神经网络程序,对标准的BP人工神经网络算法采取了增加动量项法和自适应调节学习速率法两点改进,此外,对输入输出数据进行了尺度变换(归一化处理),变换后可防止因净输入的绝对值过大而使神经元输出饱和,继而使权值调整进入误差曲面的平坦区。输入输出数据变换为[0,1]区间内的值的归一化预处理变换式为
温州浅滩软土工程特性及固结沉降规律研究
式中:xi为输入或输出数据;xmin、xmax为最值;
B P神经网络模型的训练曲线如图5.1 7所示。
本书所建立的改进的B P神经网络模型之拟合/预测值与实测值列于表5.13,拟合/预测曲线与实测曲线对比如图5.1 8所示,其残差图如图5.19所示。
由表5.13 和图5.1 8、5.19可知,改进的 B P 神经网络模型预测结果的平均残差为0.1 cm,平均相对误差为0.0 6%,拟合及预测效果很好。但是与前面几种预测方法不同的是,改进的BP人工神经网络模型的预测值略小于实测值,随着预测时间远离训练样本,这将使结果偏于不安全,所以,建议该法用于短、中期预测。同时,为了使后期预测精度更高,应不断更新训练样本向量集。
图5.17 N5+850断面 BP 神经网络训练曲线
图5.18 N5+850断面改进的 BP人工神经网络模型预测曲线与实测曲线对比
图5.19 N5+850断面改进的 BP人工神经网络模型预测残差图
表5.13 改进的BP神经网络预测值与实测值对比
‘叁’ bp神经网络的算法改进一共有多少种啊!麻烦举例一下!
改进点主要在以下几个方面
1激励函数的坡度
———————误差曲面的平台和不收敛现象
————————————————激励函数中引入陡度因子,分段函数做激励函数
2误差曲面
——————误差平方做目标函数,逼近速度慢,过拟合
————————————————标准误差函数中加入惩罚项
————————————————信息距离和泛化能力之间的关系,构建新的神经网络学习函数
3网络初始权值的选取
—————————通常在【0,1】间选取,易陷入局部最小
—————————————————复合算法优化初始权值
—————————————————Cauchy不等式和线性代数方法得最优初始权值
4改进优化算法
————————标准BP采用梯度下降法,局部最小收敛慢
——————————————————共扼梯度法、Newton法、Gauss一Ncwton法、Lvenber_Marquardt法、快速传播算法
——————————————————前馈网络学习算法,二阶学习算法,三项BP算法,最优学习参数的BP算法。
5.优化网络结构
————————拓扑结构中网络层数、各层节点数、节点连接方式的不确定性
——————————————构造法和剪枝法(权衰减法、灵敏度计算方法等)
——————————————网络结构随样本空间进行变换,简化网络结构
6混合智能算法
————————与遗传算法、进化计算、人工免疫算法、蚁群算法、微粒群算法、
————————模糊数学、小波理论、混沌理论。细胞神经网络
‘肆’ 有哪位大神知道BP神经网络变学习率学习算法在Matlab中怎么实现啊
额。。。
一种启发式的改进就是,为学习速率选用自适应值,它依赖于连续迭代步骤中的误差函数值。
自适应调整学习速率的梯度下降算法,在训练的过程中,力图使算法稳定,同时又使学习的步长尽量地大,学习速率则是根据局部误差曲面作出相应的调整。当误差以减小的方式趋于目标时,说明修正方向正确,于是步长(学习速率)增加,因此学习速率乘以增量因子Ir_inc,使学习速率增加;而当误差增加超过设定的值C倍时,说明修正过头,应减小步长,因此学习速率乘以减量因子Ir_dec,使学习速率减少.其他情况学习速率则不变。
Matlab 里有对应的变学习速率的函数。
bpnet=newff(x,[60,4],{'logsig','logsig'},'traingda'); %'traingda'表示自适应学习速率调整方法
bpnet.trainParam.show=50;
bpnet.trainParam.lr=0.01; %预设值的学习速率
bpnet.trainParam.epochs=3000;
bpnet.trainParam.goal=0.247;
bpnet.trainParam.Ir_inc=1.05; %增加的学习速率倍数,默认为1.05
bpnet.trainParam.Ir_dec=0.7; %减少的学习速率倍数,默认为0.7
bpnet.trainParam.max_perf_inc=1.04; %误差函数增加为迭代前的1.04时,减少学习速率。默认为1.04
[bpnet]=train(bpnet,p,t);
save bpnet;
%%%%%%%%%%%%%%%%%%%%
‘伍’ 用粒子群群算法优化BP神经网络的参数,进行极值寻优
这四个都属于人工智能算法的范畴。其中BP算法、BP神经网络和神经网络
属于神经网络这个大类。遗传算法为进化算法这个大类。
神经网络模拟人类大脑神经计算过程,可以实现高度非线性的预测和计算,主要用于非线性拟合,识别,特点是需要“训练”,给一些输入,告诉他正确的输出。若干次后,再给新的输入,神经网络就能正确的预测对于的输出。神经网络广泛的运用在模式识别,故障诊断中。BP算法和BP神经网络是神经网络的改进版,修正了一些神经网络的缺点。
遗传算法属于进化算法,模拟大自然生物进化的过程:优胜略汰。个体不断进化,只有高质量的个体(目标函数最小(大))才能进入下一代的繁殖。如此往复,最终找到全局最优值。遗传算法能够很好的解决常规优化算法无法解决的高度非线性优化问题,广泛应用在各行各业中。差分进化,蚁群算法,粒子群算法等都属于进化算法,只是模拟的生物群体对象不一样而已。