邻域法人工神经网络矿产储量计算

邻域法人工神经网络矿产储量计算,第1张

李裕伟

(中国地质矿产信息研究院,北京 100812)

李林松

(北京计算机一厂,北京 100083)

摘要 人工神经网络(ANN)技术是一种可用于模式识别的新技术。本文介绍用ANN技术进行矿产储量计算的方法,这种方法基于邻域而不是整个研究区的信息,因而能保证迭代过程的成功。这一ANN方法在一个品位变化很大且样品分布极不规则的金矿床应用后,取得了令人满意的结果。本文还对ANN方法与克里格法的应用效果进行了对比。

关键词 储量估计 人工神经网络 地质统计学 邻域

1 引言

到目前为止,主要有两种用于储量计算的空间插值方法:距离倒数法和克立格法。前者简便易行,但忽略地质因素的变化;后者不仅考虑到样品的空间构形,而且还考虑到矿床的地质条件变化。在应用克立格法时地质学家往往遇到一些难题,如建立不起合适的变差函数、存在非平稳性等。吴希平和周迎新(1993)曾使用人工神经网络技术估计矿产储量。这显然是一个很好的开端,因为ANN技术同时具备距离倒数法和克立格法的优点:既简便易行,又考虑了地质条件变化。此外,在用ANN方法估计储量时,无需考虑诸如变差函数、平稳性之类的问题。吴希平和周迎新使用ANN方法的范围是整个研究区,全部样品只有48件。如果样品数增加,如超过100件,或者数据构形比较复杂,则将很难达到一个ANN的储量估计解。为了解决上述问题,笔者设计了一个新的估计储量的ANN方案,这种方案基于邻域信息而不是全区信息。

2 领域定义

在使用ANN方法估计矿床储量时,之所以使用邻域信息而不是全区信息有两点考虑。其一是对块段的估值只受其邻域样品的影响,因而不需要利用全区样品;其二是只有在一个小的样品集的条件下,ANN迭代作业才有可能取得成功。当使用的样品太多时,ANN的迭代过程可能难以收敛;而当样品数较少时,收敛的可能性加大。据笔者的经验,当样品数少于50时,ANN作业可以顺利地进行。简言之,我们之所以需要一个邻域,是为了从全部样品集中抽取一个有效的数据子集,以便用ANN方法成功地进行块段储量的估计。

在用ANN方法进行储量估计时,邻域的定义与克立格法相似。首先,设计一个由规则块段组成的网络系统。这样问题就化为据某块段邻域内若干样品的观测值来估计该块段的值。为简化起见,可将邻域定义为一个矩形(图1)。该矩形邻域中的样品被用于进行被估块段的储量估计。为了更精确地进行块段估值,可在被估块段中设置若干个估值点。ANN程序对该块段的每个估值点返回一个值。这些估值点的平均值即为该块段的估值(图2)。

图1 邻域定义

图2 样品及估值

对邻域的大小可以调整,直到其包含50件样品为止。影响块段估值精度的因素有三个。其一是邻域中样品的数据构形。如果样品分布比较均匀,则可能得到一个令人满意的ANN估值。其二是样品的密度。当邻域内有较多样品时,ANN程序将返回一个具有较小误差的估值。其三是输入变量的空间变化。一个空间高度波动起伏的变量将导致较大的估值误差。

3 ANN模型

人工神经网络方法是近年来迅速发展的人工智能技术之一,它已被成功地用于模式识别。这一技术的吸引力在于:应用ANN的地质学家需要做的事仅仅是对输入层和输出层进行分析。换句话说,人们无需去研究在输入层和输出层之间所发生的事情,因为那些隐蔽层可以被视为一个“黑箱”。这样一来,需要人们做的仅仅是理解输入与输出的事件,这对地质学家来说恰恰是比较熟悉、比较容易的事;而在输入与输出之间存在的那些极复杂的非线性关系及巨量的计算任务,则交给计算机去处理,这些工作恰恰是人所难以承担的。从这一观点出发,使用ANN技术进行储量估计的地质学家就可以避免遇到许多使用克立格法时所难以解决的问题。

块段估值是一个空间模式识别过程。考虑到上述的ANN技术的优点和前人的启发性工作,本文尝试使用这一新的模式识别技术进行二维储量估计。

所设计的ANN结构包含一个输入层、两个隐蔽层和一个输出层。输入层包含三个变量:x坐标、y坐标和邻域的品位平均值。所谓邻域的品位平均值指的是用最近的四个样品据距离倒数法计算的平均值。在两个隐蔽层中,每层均含有5个神经元。输出层只包含一个变量,即所估计点的矿石品位。图3表示了这一ANN结构。

图3 ANN结构

令xi为下一层第i个神经元的输入值,xj为上一层第j个神经元的初始输出值,wij为下一层第i个神经元和上一层第j个神经元的联结权,则可建立起m个输入神经元和第j个输出神经元之间的关系。

数学地质和地质信息

然后使用以下特性函数

数学地质和地质信息

将初始输出值xj转换为适配输出值xj。

所使用的学习算法为简单的反向传播法(BP),其权系数调整方程为

数学地质和地质信息

此方程被用来修改权系数,使其从当前值被修改成下一步的值。式中k为当前所处的迭代次数,η为学习率,δj为第j个输出神经元的当前值同其目标值之差,xj为第j个神经元在第k次迭代中获得的适配输出值。

虽然还可采用一些改进的BP算法或其他更复杂的学习算法,但由于简单的BP算法已能很好地解决本文的问题,因此就不打算再讨论和使用其他的学习算法。

4 实例研究

上述的ANN方法被用于研究河南的J矿床。这是一个石英脉型金矿床,以坑探为主,辅之少量钻孔控制。共取得250件样品(图4)。样品分布极不均匀,金品位变化很大。因此,这是一个难以用一般插值方法进行空间描述的矿床。为便于对比,用克立格法和人工神经网络方法对矿床的品位按同一块段系统进行了估计。块段系统由25×9个克立格块段组成,每个克立格块段的大小为50m×50m。被估块段加上由50个样品构成邻近块段组成邻域。每个被估块段有3×3个估值点。根据这些邻域参数与样品数据,我们可以用前面定义的ANN模型来逐个块段地估计金品位。达到指定精度的迭代次数变化范围很大,取决于邻域中样品的数目、构形和变量的空间变化。所设置的临界迭代误差为0.001。当实际的迭代误差小于该临界误差时,迭代过程结束。大多数迭代过程在迭代10000~30000次时终止,但最大迭代次数可达100000次。ANN程序对每个块段的3×3个离散估值点各返回一个金品位估值,再由它们生成块段的平均值。离散点估值及块段平均值都是ANN品位估值的重要结果。

图4 样品点位图

图2显示了该金矿床的一个块段。为了便于清晰地了解样品与估值点的关系,只显示了其邻域的一部分。这个部分邻域包含了11个样品,但它们对该块段的估值无疑是最重要的。图中9个小矩形代表估值点。可以看出,ANN程序对每个估值点都返回了一个合理的值。每个估值点的值均同其最近的样品值吻合得很好。由图2还可以看出,用ANN方法所求得的点上的估值仅由最邻近的几个样品所确定,远离该估值点的样品对估值的影响可忽略不计。这就是为什么在使用ANN方法对一个点或块段进行估值时只需邻域而无需整个研究区的理由。对图2所示块段邻域的ANN学习信息列于表1。在通过学习得到权值后,将每个估值点的x坐标、y坐标及邻域平均值代入公式(1)计算初始输出值;然后再将初始输出值代入公式(2)求得适配输出值。对该块段的点估值列于表2。

表1 图2所示块段的学习信息

图5和图6分别显示了对整个矿床的点估值与块段估值。可以看出,图6的点估值更好地刻画了该矿床的金品位分布细节。这一点同克立格法的估值结果有很大的区别。一般说来,克立格法的点估值同块段估值区别不大,这是因为克立格法无论是对点估值还是块段估值都会产生很强的圆滑效应,但ANN块段估值却不会产生这么强的圆滑效应。将ANN块段估值(图5)同克立格块段估值(图7)进行对比,虽然全矿床的平均品位非常接近,据ANN法为2.59375,据克立格法为2.49658,但可明显看到克立格法的估值图像被大大地圆滑了。我们知道,地质统计学提供了两种研究空间数据的模型:其一是克立格法模型,它被用来估计一个区域化变量的局域平均值,但不忠实于其空间的变化细节;其二是条件模拟模型,它被用来仔细地刻画一个区域化变量的空间变化,但不能保证得到一个最优的、无偏的局域平均值。ANN方法看来综合了这两种模型的优点,对点估计而言尤其如此。一个ANN制图过程所产生的点估值的空间变化同实际样品的空间变化十分相近。当然,样品点愈密集,点估值的特征与实际特征就愈接近。

表2 图2所示块段的点估值

图5 ANN法金品位块段估值 品位单位:g/t

图6 ANN法金品位点估值 品位单位:g/t

图7 克立格法金品位块段估值 品位单位:g/t

为了说明ANN估计的优点,可将图6的ANN点估值同图4的实际样品点位图进行对比。在仔细地研究图上的ANN点估值及其邻域的样品值之间的关系后可以看出,它们之间是非常吻合的。这就表明,ANN可以作为估计矿产储量的一个非常有效的工具。

5 结论

人工神经网络技术是一种新的、有效地估计矿产储量的方法。在整个研究区内定义一个估计局域品位的ANN作业可能遭到失败;但如果定义在一个较小的邻域内则可以取得成功。同地质统计学相比,ANN产生的品位图由于圆滑效应很小,更接近于品位空间分布的实际情况。此外,地质学家不再需要为诸如非平稳性、非正态性、非线性、各向异性、不良变差函数等问题而烦恼。应用ANN技术估计矿产储量的主要问题是无法通过ANN方法本身提供估值误差。

参考文献

[1]J.Hertz,A.Krogh,R.G.Palmer.Introduction to the Theory of Neural Computation.Addison-Wesley Publ.co.,Redwood City,California,1991.

[2]Xiping Wu and Yingxin Zhou.Reserve Estimation Using Neural Network Techniques.Computers & Geosciences,1993,19(4).

问题描述:

有两个自变量,一个因变量,10个样本(这里就取少一点好了)。用实际问题来表述,假设一个股票,开盘价 x1,收盘价 x2,第二天的股价 y。 那用神经网络来预测的目的是,根据10天的开盘价和收盘价,来预测未来股价。显然,这里的y与x1和x2相关,我们要训练一个网络(net)来让他尽可能的预测一个y

MATLAB程序

clc

clear

load data input output

%input就是包含了x1和x2 10天数据的矩阵,说白了就是20个数的矩阵。output是y的一个向量,%10个数

%需要自己找一些数据赋值给input和ouput

P=input

T=output

%这里P和T必须是 x1 x2和y的行向量组合。对于P,x1是行向量,x2是行向量。P=[x1x2]T=y. y是行向量

Epochs=5000

NodeNum=12 TypeNum=1

TF1='logsig' TF2='purelin'

%设置一些初始参数,Epochs是迭代上限次数,NodeNum是第一个隐藏层的神经元个数,%TypeNum是几层。TF1和TF2分别定义了几个传递函数。

net=newff(minmax(P),[NodeNum TypeNum],{TF1 TF2},'trainlm')

%建立一个神经网络,训练输入和输出数据都有了,设置隐藏层的个数。

net.trainParam.epochs=Epochs

net.trainParam.goal=1e-4

net.trainParam.min_grad=1e-4

net.trainParam.show=200

net.trainParam.time=inf

%设置一些训练时的参数,第一个是每次训练的最大迭代次数;

net=train(net,P,T)

%开始网络训练

P_test=P

B_test=T

%就用原始的数据进行测试

X=sim(net,P_test)

%测试

Erro=abs(B_test-X)

sigma=std(Erro)

%计算出预测值和实际值的误差,求出方差。将来方差可以用来随机调整


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11217575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存