基于BPNN 算法的储层预测
时间:2016-06-13 14:06
来源:
BPNN 算法是一种基于经验风险最小化的模式识别经典算法。在使用BPNN 算法的过程中,人们主要关心的是该算法对训练样本集的预测准确率,但是却忽略了其推广能力较差的缺点。本文通过实验证明了BPNN 算法不适用于小样本储层预测。
基本原理及实现步骤
神经网络是模拟生物神经网络系统的特点而构成的计算模型。它具有自组织、自学习功能,能通过对大量外界事物的接触进行自主学习并将学习结果保存,最后用于其它事物的鉴别上。由于前馈型神经网络具有算法复杂、中间隐层不与外界连接的弊端,为解决这一问题,D.Rumelhart 和McClelland提出了一种反向传播(Back-Propogation,BP)算法。
该算法分为两个阶段:第一阶段为正向传播过程,输入信息从输入层经隐层逐层计算各单元的输出值;第二阶段为反向传播过程,输出误差逐层向前算出隐层各单元的误差,并用此误差修正前层权值。典型的BP 神经网络结构如图所示。误差反向传播算法是最小均方算法的一种广义形式,BP 算法使用梯度搜索技术,按代价函数最小的准则递归地求解网络的权值,代价函数为网络的实际输出和期待输出的均方误差。
在BP 神经网络中,神经元是神经网络的组成单元。在反向传播算法中,通常采用梯度法修正权值,为此要求输出函数可微,通常采用 函数作为输出函数。标准BP 神经网络算法采用了最速下降法作为训练函数,但是最速下降法本身带有收敛速度慢、容易进入局部最小等缺点,后来经过Hagan 等的改进, 把数值优化的Levenberg-Marquardt 训练方法应用到神经网络的训练函数中,在很大程度上改进了神经网络的收敛速度。算法实现步骤首先选定权系数初始值,通常选取较小的随机数作为权值的初始值; 其次重复下列过程直至收敛( 对各样本依次计算)。参数选取隐层节点个数:当输入节点个数为M 时, 隐层节点个数l≤2M+1。根据刘耦耕提出的隐层计算经验公式:l=int(N(p-1))/(M+N+1)+α;l≤2M+1, 式中M为输入层节点数,N 为输出层节点个数,p 为训练样本个数,α 为1~10 之间的常数。步长η 对收敛性影响很大,而且对于不同的问题其最佳值相差也很大,通常可以在0.1~3 之间试探,对于较复杂的问题应采用较大的值。惯性项系数α 影响收敛速度,在很多问题中可以考虑在0.9~1 之间进行选择,当α≥1 时不收敛,有些情况下也可不使用惯性项,即α=0。
实验结果及分析
在利用模式识别方法进行储层预测的过程中,神经网络方法是最常用也是最传统的方法。随着人们对经验风险最小化及结构风险最小化的认识逐步深入,经验风险最小化并不能满足人们对学习机外推效果的期望,神经网络方法已经不再成为模式识别储层预测的首选方法。
实验用于验证BP 神经网络在储层预测中的泛化推广能力。同时经过反复实验,最后选定参数:步长η=0.5,惯性系数α=0.95,收敛误差е=0.005。测井符合率预测外推结果。虽然BPNN 在训练过程中收敛误差较小(0.005),即BPNN 基本能够记住每个训练样本的分类情况,但是在实际的泛化预测过程中的测井符合率仅为66.7%。
这一结果说明,在训练样本较少的情况下,BPNN并不适用于储层预测。对某区块进行储层预测外推, 区块范围为:Inline(350~900),Xline(550~920),典型 BP 神经网络结构图 显然不适于小样本。