bp神经网络算法介绍及预测模型可分为哪几类?
bp神经网络算法介绍 bp神经网络算法
1、BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误逆传播算法训练的多层前馈网络,是应用广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误平方和小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。
bp神经网络算法介绍及预测模型可分为哪几类?
bp神经网络算法介绍及预测模型可分为哪几类?
2、BP神经网络算法是在BP神经网络现有算法的基础上提出的,是通过任意选定一组权值,将给定的目标输出直接作为线性方程的代数和来建立线性方程组,解得待求权,不存在传统方法的局部极小及收敛速度慢的问题,且更易理解。
预测模型可分为哪几类?
1、趋势外推预测方法
趋势外推预测方法是根据事物的历史和现实数据,寻求事物随时间推移而发展变化的规律,从而推测其未来状况的一种常用的预测方法。
趋势外推法的设条件是:
(1)设事物发展过程没有跳跃式变化,即事物的发展变化是渐进型的。
(2)设所研究系统的结构、功能等基本保持不变,即定根据过去资料建立的趋势外推模型能适合未来,能代表未来趋势变化的情况。
由以上两个设条件可知,趋势外推预测法是事物发展渐进过程的一种统计预测方法。简言之,就是运用一个数学模型,拟合一条趋势线,然后用这个模型外推预测未来时期事物的发展。
2、回归预测方法
回归预测方法是根据自变量和因变量之间的相关关系进行预测的。自变量的个数可以一个或多个,根据自变量的个数可分为一元回归预测和多元回归预测。同时根据自变量和因变量的相关关系,分为线性回归预测方法和非线性回归方法。回归问题的学习等价于函数拟合:选择一条函数曲线使其很好的拟合已知数据且能很好的预测未知数据。
3、卡尔曼滤波预测模型
卡尔曼滤波是以小均方误为估计的佳准则,来寻求一套递推估计的模型,其基本思想是: 采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。
它适合于实时处理和计算机运算。卡尔曼滤波器问题由预计步骤,估计步骤,前进步骤组成。 在预计步骤中, t时状态的估计取决于所有到t-1 时的信息。在估算步骤中, 状态更新后, 估计要于时间t的实际观察比较。更新的状态是较早的推算和新观察的综合。 置于每一个成分的权重由“ Kalmangain”(卡尔曼增益) 决定,它取决于噪声 w 和 v。(噪声越小,新的观察的可信度越高,权重越大,反之亦然)。前进步骤意味着先前的“新”观察在准备下一轮预计和估算时变成了“旧” 观察。 在任何时间可以进行任何长度的预测(通过提前状态转换)。
4、组合预测模型
组合预测法是对同一个问题,采用多种预测方法。组合的主要目的是综合利用各种方法所提供的信息,尽可能地提高预测精度。组合预测有 2 种基本形式,一是等权组合, 即各预测方法的预测值按相同的权数组合成新的预测值;二是不等权组合,即赋予不同预测方法的预测值不同的权数。 这 2 种形式的原理和运用方法完全相同,只是权数的取定有所区别。 根据经验,采用不等权组合的组合预测法结果较为准确。
5、BP神经网络预测模型
BP网络(Back-ProPagation Network)又称反向传播神经网络, 通过样本数据的训练,不断修正网络权值和阈值使误函数沿负梯度方向下降,逼近期望输出。它是一种应用较为广泛的神经网络模型,多用于函数逼近、模型识别分类、数据压缩和时间序列预测等。点击打开链接(BP神经网络预测实例)
参考资料:
BP神经网络
神经网络能很好地解决不同的机器学习问题。神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。
上图显示了人工神经网络是一个分层模型,逻辑上可以分为三层:
输入层 :输入层接收特征向量 x
输出层 :输出层产出终的预测 h
隐含层 :隐含层介于输入层与输出层之间,之所以称之为隐含层,是因为当中产生的值并不像输入层使用的样本矩阵 X或者输出层用到的标签矩阵 y 那样直接可见。
下面引入一些标记法来帮助描述模型:
!$ a^{(j)}_{i} $ 代表第j层的第i个激活单元。 !$ theta^{(j)} $ 代表从第 j 层映射到第 j+1 层时的权重的矩阵,例如 !$ theta^{(1)} $ 代表从层映射到第二层的权重的矩阵。其尺寸为:以第 j+1层的激活单元数量为行数,以第 j 层的激活单元数加一为列数的矩阵。例如:上图所示的神经网络中 !$ theta^{(1)} $ 的尺寸为 34。
对于上图所示的模型,激活单元和输出分别表达为:
!$ a^{(2)}_{1} = g( theta^{(1)}_{10}x_0 + theta^{(1)}_{11}x_1 + theta^{(1)}_{12}x_2 + theta^{(1)}_{13}x_3 ) $
!$a^{(2)}_{2} = g( theta^{(1)}_{20}x_0 + theta^{(1)}_{21}x_1 + theta^{(1)}_{22}x_2 + theta^{(1)}_{23}x_3 ) $
!$a^{(2)}_{3} = g( theta^{(1)}_{30}x_0 + theta^{(1)}_{31}x_1 + theta^{(1)}_{32}x_2 + theta^{(1)}_{33}x_3 ) $
!$h_{theta}{(x)} = g( theta^{(2)}_{10}a^{2}_{0} + theta^{(2)}_{11}a^{2}_{1} + theta^{(2)}_{12}a^{2}_{2} + theta^{(2)}_{13}a^{2}_{3} ) $
下面用向量化的方法以上面的神经网络为例,试着计算第二层的值:
对于多类分类问题来说:
我们可将神经网络的分类定义为两种情况:二类分类和多类分类。
二类分类: !$ S_{L} = 0,y = 0,y = 1$
多类分类: !$ S_{L} = k, y_{i} = 1表示分到第i类;(k>2)$
在神经网络中,我们可以有很多输出变量,我们的 !$h_{theta}{(x)} $ 是一个维度为K的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些,为: !$ h_{theta}{(x)} in R^{K}(h_{theta}{(x)})_{i} = i^{th} output$
我们希望通过代价函数来观察算法预测的结果与真实情况的误有多大,不同的是,对于每一行特征,我们都会给出K个预测,基本上我们可以利用循环,对每一行特征都预测K个不同结果,然后在利用循环在K个预测中选择可能性的一个,将其与y中的实际数据进行比较。
正则化的那一项只是排除了每一层 !$theta_0$ 后,每一层的 矩阵的和。里层的循环j循环所有的行(由 +1 层的激活单元数决定),循环i则循环所有的列,由该层( !$ s_l$ 层)的激活单元数所决定。即: !$h_{theta}{(x)}$ 与真实值之间的距离为每个样本-每个类输出的加和,对参数进行 regularization 的 bias 项处理所有参数的平方和。
由于神经网络允许多个隐含层,即各层的神经元都会产出预测,因此,就不能直接利用传统回归问题的梯度下降法来小化 !$J(theta)$ ,而需要逐层考虑预测误,并且逐层优化。为此,在多层神经网络中,使用反向传播算法(Backpropagation Algorithm)来优化预测,首先定义各层的预测误为向量 !$ δ^{(l)} $
训练过程:
当我们对一个较为复杂的模型(例如神经网络)使用梯度下降算法时,可能会存在一些不容易察觉的错误,意味着,虽然代价看上去在不断减小,但终的结果可能并不是解。
为了避免这样的问题,我们采取一种叫做梯度的数值检验( Numerical Gradient Checking )方法。这种方法的思想是通过估计梯度值来检验我们计算的导数值是否真的是我们要求的。
对梯度的估计采用的方法是在代价函数上沿着切线的方向选择离两个非常近的点然后计算两个点的平均值用以估计梯度。即对于某个特定的 ,我们计算出在 !$theta - epsilon$ 处和 !$theta + epsilon$ 的代价值(是一个非常小的值,通常选取 0.001),然后求两个代价的平均,用以估计在 !$theta$ 处的代价值。
当 !$theta$ 是一个向量时,我们则需要对偏导数进行检验。因为代价函数的偏导数检验只针对一个参数的改变进行检验,下面是一个只针对 !$theta_1$ 进行检验的示例:
如果上式成立,则证明网络中BP算法有效,此时关闭梯度校验算法(因为梯度的近似计算效率很慢),继续网络的训练过程。
伤寒、副伤寒流行预测模型(BP神经网络)的建立
由于目前研究的各种数学模型或多或少存在使用条件的局限性,或使用方法的复杂性等问题,预测效果均不十分理想,距离实际应用仍有较大距。NNT是Matlab 中较为重要的一个工具箱,在实际应用中,BP 网络用的广泛。神经网络具有综合能力强,对数据的要求不高,适时学习等突出优点,其作简便,节省时间,网络初学者即使不了解其算法的本质,也可以直接应用功能丰富的函数来实现自己的目的。因此,易于被基层单位预防工作者掌握和应用。以下几个问题是建立理想的因素与疾病之间的神经网络模型的关键:
(1)资料选取
应尽可能地选取所研究地区系统连续的因素与疾病资料,包括有疾病高发年和疾病低发年的数据。在收集影响因素时,要抓住主要影响伤寒、副伤寒的发病因素。
(2)疾病发病率分级
神经网络预测法是按发病率高低来进行预测,在定义发病率等级时,要结合专业知识及当地情况而定,并根据网络学习训练效果而适时调整,以使网络学习训练达到佳效果。
(3)资料处理问题
在实践中发现,资料的特征往往很大程度地影响网络学习和训练的稳定性,因此,数据的应用、纳入、排出问题有待于进一步研究。
6.3.1 人工神经网络的基本原理
人工神经网络(ANN)是近年来发展起来的十分热门的交叉学科,它涉及生物、电子、计算机、数学和物理等学科,有着广泛的应用领域。人工神经网络是一种自适应的高度非线性动力系统,在网络计算的基础上,经过多次重复组合,能够完成空间的映射任务。神经网络通过内部连接的自组织结构,具有对数据的高度自适应能力,由计算机直接从实例中学习获取知识,探求解决问题的方法,自动建立起复杂系统的控制规律及其认知模型。
人工神经网络就其结构而言,一般包括输入层、隐含层和输出层,不同的神经网络可以有不同的隐含层数,但他们都只有一层输入和一层输出。神经网络的各层又由不同数目的神经元组成,各层神经元数目随解决问题的不同而有不同的神经元个数。
6.3.2 BP神经网络模型
BP网络是在1985年由PDP小组提出的反向传播算法的基础上发展起来的,是一种多层次反馈型网络(图6.17),它在输入和输出之间采用多层映射方式,网络按层排列,只有相邻层的直接相互连接,传递之间信息。在正向传播中,输入信息从输入层经隐含层逐层处理,并传向输出层,每层神经元的状态只影响下一层神经元的状态。如果输出层不能得到期望的输出结果,则转入反向传播,将误信号沿原来的连同通路返回,通过修改各层神经元的权值,使误信号小。
BP网络的学习算法步骤如下(图6.18):
图6.17 BP神经网络示意图 图6.18 BP算法流程图
步:设置初始参数ω和θ,(ω为初始权重,θ为临界值,均随机设为较小的数)。
第二步:将已知的样本加到网络上,利用下式可算出他们的输出值yi,其值为
岩溶地区地下水与环境的特殊性研究
式中:xi为该的输入;ωij为从I到j的联接权;θj为临界值;yj为实际算出的输出数据。
第三步:将已知输出数据与上面算出的输出数据之(dj-yj)调整权系数ω,调整量为
ΔWij=ηδjxj
式中:η为比例系数;xj为在隐为网络输入,在输出点则为下层(隐)的输出(j=1,2…,n);dj为已知的输出数据(学习样本训练数据);δj为一个与输出偏相关的值,对于输出来说有
δj=ηj(1-yj)(dj-yj)
对于隐来说,由于它的输出无法进行比较,所以经过反向逐层计算有
岩溶地区地下水与环境的特殊性研究
其中k指要把上层(输出层)取遍。误δj是从输出层反向逐层计算的。各神经元的权值调整后为
ωij(t)=ωij(t-1)+Vωij
式中:t为学习次数。
这个算法是一个迭代过程,每一轮将各W值调整一遍,这样一直迭代下去,知道输出误小于某一允许值为止,这样一个好的网络就训练成功了,BP算法从本质上讲是把一组样本的输入输出问题变为一个非线性优化问题,它使用了优化技术中普遍的一种梯度下降算法,用迭代运算求解权值相当于学习记忆问题。
6.3.3 BP 神经网络模型在伤寒、副伤寒流行与传播预测中的应用
伤寒、副伤寒的传播与流行同环境之间有着一定的联系。根据桂林市1990年以来乡镇为单位的伤寒、副伤寒资料,伤寒、副伤寒疫源地资料,结合现有资源与环境背景资料(桂林市行政区划、土壤、气候等)和经济资料(经济、人口、生活习惯等统计资料)建立人工神经网络数学模型,来逼近这种规律。
6.3.3.1 模型建立
(1)神经网络的BP算法
BP网络是一种前馈型网络,由1个输入层、若干隐含层和1个输出层构成。如果输入层、隐含层和输出层的单元个数分别为n,q1,q2,m,则该三层网络网络可表示为BP(n,q1,q2,m),利用该网络可实现n维输入向量Xn=(X1,X2,…,Xn)T到m维输出向量Ym=(Y1,Y2,…,Ym)T的非线性映射。输入层和输出层的单元数n,m根据具体问题确定。
(2)样本的选取
将模型的输入变量设计为平均温度、平均降雨量、岩石性质、岩溶发育、地下水类型、饮用水类型、正规自来水供应比例、集中供水比例8个输入因子(表6.29),输出单元为伤寒副伤寒的发病率等级,共一个输出单元。其中q1,q2的值根据训练结果进行选择。
表6.29 桂林市伤寒副伤寒影响因素量化表
通过分析,选取在伤寒副伤寒有代表性的县镇在1994~2001年的环境参评因子作为样本进行训练。利用聚类分析法对进行聚类分级(Ⅰ、Ⅱ、Ⅲ、Ⅳ),伤寒副伤寒发病为Ⅳ(BP网络中输出定为4),次之的为Ⅲ(BP网络中输出定为3),以此类推,为Ⅰ(BP网络中输出定为1)
(3)数据的归一化处理
为使网络在训练过程中易于收敛,我们对输入数据进行了归一化处理,并将输入的原始数据都化为0~1之间的数。如将平均降雨量的数据乘以0.0001;将平均气温的数据乘以0.01;其他输入数据也按类似的方法进行归一化处理。
(4)模型的算法过程
设共有P个训练样本,输入的第p个(p=1,2,…,P)训练样本信息首先向前传播到隐含单元上。
经过激活函数f(u)的作用得到隐含层1的输出信息:
岩溶地区地下水与环境的特殊性研究
经过激活函数f(u)的作用得到隐含层2的输出信息:
岩溶地区地下水与环境的特殊性研究
激活函数f(u)我们这里采用Sigmoid型,即
f(u)=1/[1+exp(-u)](6.5)
隐含层的输出信息传到输出层,可得到终输出结果为
岩溶地区地下水与环境的特殊性研究
以上过程为网络学习的信息正向传播过程。
另一个过程为误反向传播过程。如果网络输出与期望输出间存在误,则将误反向传播,利用下式来调节网络权重和阈值:
岩溶地区地下水与环境的特殊性研究
式中:Δω(t)为t次训练时权重和阈值的修正;η称为学习速率,0<η<1;E为误平方和。
岩溶地区地下水与环境的特殊性研究
反复运用以上两个过程,直至网络输出与期望输出间的误满足一定的要求。
该模型算法的缺点:
1)需要较长的训练时间。由于一些复杂的问题,BP算法可能要进行几小时甚至更长的时间的训练,这主要是由于学习速率太小造成的,可采用变化的学习速率或自适应的学习速率加以改进。
2)完全不能训练。主要表现在网络出现的麻痹现象上,在网络的训练过程中,当其权值调的过大,可能使得所有的或大部分神经元的加权总和n偏大,这使得激活函数的输入工作在S型转移函数的饱和区,从而导致其导数f′(n)非常小,从而使得对网络权值的调节过程几乎停顿下来。
3)局部极小值。BP算法可以使网络权值收敛到一个解,但它并不能保证所求为误超平面的全局小解,很可能是一个局部极小解。这是因为BP算法采用的是梯度下降法,训练从某一起点沿误函数的斜面逐渐达到误的小值。
考虑到以上算法的缺点,对模型进行了两方面的改进:
(1)附加动量法
为了避免陷入局部极小值,对模型进行了改进,应用了附加动量法。附加动量法在使网络修正及其权值时,不仅考虑误在梯度上的作用,而且考虑在误曲面上变化趋势的影响,其作用如同一个低通滤波器,它允许网络忽略网络上的微小变化特性。在没有附加动量的作用下,网络可能陷入浅的局部极小值,利用附加动量的作用则有可能滑过这些极小值。
该方法是在反向传播法的基础上在每一个权值的变化上加上一项正比于前次权值变化量的值,并根据反向传播法来产生心的权值变化。促使权值的调节向着误曲面底部的平均方向变化,从而防止了如Δω(t)=0的出现,有助于使网络从误曲面的局部极小值中跳出。
这种方法主要是把式(6.7)改进为
岩溶地区地下水与环境的特殊性研究
式中:A为训练次数;a为动量因子,一般取0.95左右。
训练中对采用动量法的判断条件为
岩溶地区地下水与环境的特殊性研究
(2)自适应学习速率
对于一个特定的问题,要选择适当的学习速率不是一件容易的事情。通常是凭经验或实验获取,但即使这样,对训练开始初期功效较好的学习速率,不见得对后来的训练合适。所以,为了尽量缩短网络所需的训练时间,采用了学习速率随着训练变化的方法来找到相对于每一时刻来说较的学习速率。
下式给出了一种自适应学习速率的调整公式:
岩溶地区地下水与环境的特殊性研究
通过以上两个方面的改进,训练了一个比较理想的网络,将动量法和自适应学习速率结合起来,效果要比单独使用要好得多。
6.3.3.2 模型的求解与预测
采用包含了2个隐含层的神经网络BP(4,q1,q2,1),隐含层单元数q1,q2与所研究的具体问题有关,目前尚无统一的确定方法,通常根据网络训练情况采用试错法确定。在满足一定的精度要求下一般认小的数值,以改善网络的概括推论能力。在训练中网络的收敛采用输出值Ykp与实测值tp的误平方和进行控制:
岩溶地区地下水与环境的特殊性研究
1)将附加动量法和自适应学习速率结合应用,分析桂林市36个乡镇地质条件各因素对伤寒副伤寒发病等级的影响。因此训练样本为36个,个隐含层有19个神经元,第二个隐含层有11个神经元,学习速率为0.001。
A.程序(略)。
B.网络训练。在命令窗口执行运行命令,网络开始学习和训练,其学习和训练过程如下(图6.19)。
图6.19 神经网络训练过程图
C.模型预测。
a.输入未参与训练的乡镇(洞井乡、两水乡、延东乡、四塘乡、严关镇、灵田乡)地质条件数据。
b.预测。程序运行后网络输出预测值a3,与已知的实际值进行比较,其预测结果整理后见(表6.30)。经计算,对6个乡镇伤寒副伤寒发病等级的预测符合率为83.3%。
表6.30 神经网络模型预测结果与实际结果比较
c.地质条件改进方案。在影响疾病发生的地质条件中,大部分地质条件是不会变化的,而改变发病地区的饮用水类型是可以人为地通过改良措施加以实施的一个因素。因此,以灵田乡为例对发病率较高的乡镇进行分析,改变其饮用水类型,来看发病等级的变化情况。
表6.31显示,在其他地质条件因素不变的情况下,改变当地的地下水类型(从原来的岩溶水类型改变成基岩裂隙水)则将发病等级从原来的4级,下降为较低的2级,效果是十分明显的。因此,今后在进行伤寒副伤寒疾病防治的时候,可以通过改变高发区饮用水类型来客观上减少的发生。
表6.31 灵田乡改变饮用水类型前后的预测结果
2)选取桂林地区1994~2000年月平均降雨量、月平均温度作为输入数据矩阵,进行样本训练,设定不同的隐含层单元数,对各月份的数据进行BP网络训练。在隐含层单元数q1=13,q2=9,经过46383次数的训练,误达到精度要求,学习速率0.02。
A.附加动量法程序(略)。
B.网络训练。在命令窗口执行运行命令,网络开始学习和训练,其学习和训练过程如下(图6.20)。
C.模型预测。
a.输入桂林市2001年1~12月桂林市各月份的平均气温和平均降雨量。预测程度(略)。
b.预测。程序运行后网络输出预测值a2,与已知的实际值进行比较,其预测结果整理后见(表6.32)。经计算,对2001年1~12月伤寒副伤寒发病等级进行预测,12个预测结果中,有9个符合,符合率为75%。
图6.20 神经网络训练过程图 表6.32 神经网络模型预测结果与实际值比较
6.3.3.3 模型的评价
本研究采用BP神经网络对伤寒、副伤寒发病率等级进行定量预测,一方面引用数量化理论对不确定因素进行量化处理;另一方面利用神经网络优点,充分考虑各影响因素与发病率之间的非线性映射。
实际应用表明,神经网络定量预测伤寒、副伤寒发病率是理想的。
其主要优点有:
1)避免了模糊或不确定因素的分析工作和具体数学模型的建立工作。
2)完成了输入和输出之间复杂的非线性映射关系。
3)采用自适应的信息处理方式,有效减少人为的主观臆断性。
虽然如此,但仍存在以下缺点:
1)学习算法的收敛速度慢,通常需要上千次或更多,训练时间长。
2)从数学上看,BP算法有可能存在局部极小问题。
本模型具有广泛的应用范围,可以应用在很多领域。从上面的结果可以看出,实际和网络学习数据总体较为接近,演化趋势也基本一致。说明选定的气象因子、地质条件因素为神经单元获得的伤寒、副伤寒发病等级与实际等级比较接近,从而证明伤寒、副伤寒流行与地理因素的确存在较密切的相关性。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。