基于神经网络的中子衍射峰位预测方法、设备和介质

文档序号:466596 发布日期:2021-12-31 浏览:6次 >En<

阅读说明:本技术 基于神经网络的中子衍射峰位预测方法、设备和介质 (Neutron diffraction peak position prediction method, device and medium based on neural network ) 是由 杨柳 张俊宇 陈庭轩 胡志刚 钟掘 于 2021-09-28 设计创作,主要内容包括:本发明公开了一种基于神经网络的中子衍射峰位预测方法、设备和介质,方法:调整探测仪与入射中子束间的夹角,用中子束对被测材料衍射,探测仪采集被测材料衍射产生的中子;将探测仪信道位置转换成衍射角度,根据探测仪采集的中子数统计各信道衍射强度和强度误差;搭建中子衍射峰位预测模型的神经网络架构,以各信道衍射角度和强度为输入输出,将强度误差作为权重引入到损失函数,训练神经网络,即可由得到的中子衍射峰位预测模型得到角度与衍射强度间的函数关系;衍射强度最大值对应的角度,即为被测材料的中子衍射峰位。本发明能实时精确拟合中子衍射数据,精准获取中子衍射峰位,实现对被测材料残余应力的精确测定,反映材料深部真实应力场。(The invention discloses a neutron diffraction peak position prediction method, equipment and a medium based on a neural network, wherein the method comprises the following steps: adjusting an included angle between the detector and the incident neutron beam, diffracting the detected material by using the neutron beam, and collecting neutrons generated by the diffraction of the detected material by the detector; converting the channel position of the detector into a diffraction angle, and counting the diffraction intensity and intensity error of each channel according to the neutron number collected by the detector; building a neural network framework of a neutron diffraction peak position prediction model, taking the diffraction angle and intensity of each channel as input and output, introducing an intensity error into a loss function as weight, and training the neural network, namely obtaining a functional relation between the angle and the diffraction intensity by the obtained neutron diffraction peak position prediction model; and the angle corresponding to the maximum value of the diffraction intensity is the neutron diffraction peak position of the detected material. The method can accurately fit neutron diffraction data in real time, accurately obtain neutron diffraction peak positions, realize accurate measurement of the residual stress of the measured material, and reflect the real stress field of the deep part of the material.)

基于神经网络的中子衍射峰位预测方法、设备和介质

技术领域

本发明涉及中子散射-材料残余应力计算领域,尤其是指一种基于神经网络的中子衍射峰位预测方法、设备和介质。

背景技术

现阶段国内尖端制造业与美国、德国等发达国家存在巨大的差距,为了补齐诸如新材料设计、航空发动机制造、集成电路芯片研制等短板,国家将深入实施智能制造。因此为了推动制造业的优化升级,将加快高端新材料和先进航空发动机及燃气轮机等技术的研发验证,推进大涵道比大型涡扇航空发动机、F级和G/H级重型燃气轮机等课题的研究,为了充分研究材料内应力产生机理,提升中国超精密加工技术的发展水准,现在中国原子能科学研究院研制了一台中子应力谱仪(Neutron Stress Spectrometer)。中子应力谱仪的研制旨在探测材料/ 构件深部残余应力和宏观应力场,服务于工程构件精确设计和制造及服役性能的精确评估,以及材料-构件一体化、重大装备安全运行的工程需求,探索多相材料组成相之间的内应力相互作用与变化、循环应力作用下材料/构件的损伤形成机理及其演变等科学规律,满足工程构件精确设计和制造及服役性能的精确评估以及材料-构件一体化、重大装备安全运行的工程需求,最终为基于残余应力的材料制造工艺调控提供有效的依据。

中子应力谱仪基于中子衍射方法实现对材料部件残余应力的计算,中子应力谱仪首先利用位于中国原子能科学研究院的中国先进研究堆(China Advanced ResearchReactor,CARR) 在核反应下产生的中子束对被测材料进行衍射,中子探测仪采集衍射时产生的中子衍射数据,使用数据分析模型拟合中子衍射数据得到中子衍射峰位;中子衍射峰位与被测材料在无应力状态下的晶面间距计算三向应变,得到三向应变之后,结合材料的泊松比、弹性模量,基于胡克定律完成对材料残余应力的计算。材料残余应力的计算对于中子衍射峰位的精度要求极高,而现阶段算法拟合的衍射峰位结果不足以支撑应力计算所需要的峰位精度。所以需要建立一种能够精确拟合中子衍射数据的模型,从而得到高精度的衍射峰位,提升材料残余应力的计算精度。最终达到为基于残余应力的材料制造工艺调控提供有效的依据并提高材料稳定性及使用寿命的目的。

发明内容

本发明提供一种基于神经网络的中子衍射峰位预测方法、设备和介质,能够精确拟合被测材料的中子衍射数据,从而精准获取材料中子衍射峰位,以实现对残余应力的精确测定。

为实现上述技术目的,本发明采用如下技术方案:

一种基于神经网络的中子衍射峰位预测方法,包括:

系统预设置:对探测仪正中间位置与入射中子束之间的夹角进行测量校准为预设角度2θ,使用中子束对被测材料进行衍射,使用中子探测仪采集被测材料衍射时产生的中子;

获取中子衍射数据:将中子探测仪每个信道的位置转换成信道偏离角Δθ,根据预设角度 2θ和信道偏离角Δθ得到中子探测仪每个信道的角度;并根据中子探测仪每个像素块采集到的中子数量,统计中子探测仪每个信道的衍射强度和强度误差;

模型架构搭建:搭建中子衍射峰位预测模型的神经网络架构,包括隐藏层的数量、每个隐藏层以及输入层与输出层的神经元数量;

以中子探测仪各信道的角度作为输入、衍射强度作为输出,并将强度误差引入到损失函数,对搭建的神经网络进行训练,即对角度与衍射强度之间的函数关系进行拟合,得到的中子衍射峰位预测模型即为角度与衍射强度之间的函数关系;

根据拟合得到的角度与衍射强度之间的函数关系,找到衍射强度最大值所对应的角度,即为被测材料的中子衍射峰位。

进一步地,每个信道的衍射强度,是指该信道上所有像素块接收到的中子数量的累加和。

进一步地,统计中子探测仪每个信道的衍射强度和强度误差的方法为:

(1)计算中子探测仪每个像素块的中子采集效率:垂直于中子探测仪的二维面探的每个像素块,均匀地打上相同数量的中子,再统计每个像素块实际采集的中子数,计算每个像素块的中子采集效率:

式中,i表示二维面探中的第i行,j表示二维面探得第j列,Nij表示第i行第j列像素块所获取的中子数量,N代表二维面探中一个维度的像素块的数量,而Navg代表每个像素块的平均中子数,eff.factorij表示第i行第j列像素块的中子采集效率;

(2)根据像素块的中子采集效率,对像素块采集到的中子数量进行校准,得到像素块的衍射强度和强度误差:

式中,为第i行第j列像素块采集到的中子数量,为校准后的数据,即为第i行第j列像素块的衍射强度;代表中子探测仪二维面探中第i行第j列像素块的强度误差;

(3)沿中子探测仪的信道分布方向,对每个信道上也就是探测仪每一列上所有像素块的衍射强度和强度误差分别进行累加,得到该信道的衍射强度和强度误差。

进一步地,在获取到中子衍射数据后,先对数据进行预处理,包括背底数据裁切和噪声数据清除处理,再使用预处理得到的中子衍射数据训练神经网络。

进一步地,对中子衍射数据中的背底数据进行裁切的方法为:对中子衍射数据进行分析,确定被测材料对应的衍射峰形;根据确定的衍射峰形,初始化衍射峰形的参数,包括峰值、半宽高、峰位;基于初始化峰值对应的角度,参照初始化的半宽高,采用Levenberg-Marquardt 算法对中子衍射数据中的背底数据进行裁切清除,具体裁切方法为:

(a1)对效率校准后的中子衍射数据,按中子衍射角度从小到大排序;其中,每个信道对应的中子衍射数据表示为点对形式的数据为(x,y,z),x,y,z分别表示衍射角度、衍射强度和强度误差;

(a2)取其中衍射角度最大的5个点对数据,计算衍射角度平均值和衍射强度平均值,作为一个均值点;同样取衍射角度最小的5个点对数据,计算衍射角度平均值和衍射强度平均值,作为另一个均值点;基于两个均值得到一条直线,该直线即是衍射数据的本底;

(a3)将效率校准后的中子衍射数据扣除掉本底数据,将当前最大衍射强度所对应的衍射角度,确定为当前的衍射峰位;

(a4)将当前最大衍射强度所在点对的左右各五个点的衍射强度平均值,确定为当前的衍射峰值;

(a5)输出从衍射峰位开始向两侧1/2峰值对应的衍射角,而这两个衍射角差值的绝对值就是半高宽;

(a6)得到半高宽之后,按照半高宽倍数裁切中子衍射数据。进一步地,在对中子衍射数据中的背底数据裁切清除之后,再对其中的噪声进行清除,噪声清除方法为:

(a1)对背底数据裁切清除后的中子衍射数据,按中子衍射角度从小到大排序;其中,每个信道对应的中子衍射数据表示为点对形式的数据为(x,y,z),x,y,z分别表示衍射角度、衍射强度和强度误差;中子衍射点对数据序列中,使用长度为L的窗口从序列最左端选取L个点对数据;

(a2)计算当前窗口内每两个点对数据之间的欧式距离:

式中,d12为两不同点对数据之间的欧式距离,x1,x2为两个不同点对数据的衍射角度, y1,y2为两个不同点对数据的衍射强度;

(a3)对当前窗口内的每个点对数据,取该点对数据与窗口内其他点对数据之间的最小欧式距离dmin,计算该点对数据与其他所有点对数据之间欧式距离的平均值davg;若dmin>3*davg,则该点对数据为噪声数据,丢弃该点对数据;否则保留该点对数据;

(a4)将窗口向右平移1个点对数据,返回步骤(a2),直到对所有中子衍射点对数据进行上述判断处理。

进一步地,对搭建的神经网络进行训练所采用的损失函数为:

式中,p表示神经网络中所有需要更新的权重和偏置参数,yexp为训练神经网络的点对数据中的衍射强度,ypre为神经网络预测得到的衍射强度,ε为训练神经网络的点对数据中的强度误差。

进一步地,对搭建的神经网络进行训练的过程,采用多GPU基于TensorFlow框架进行并行计算优化。

一种电子设备,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现实现上述任一技术方案项所述的基于神经网络的中子衍射峰位预测方法。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一技术方案项所述的基于神经网络的中子衍射峰位预测方法。

有益效果:本专利基于神经网络模型建立能够精确输出中子衍射数据的中子衍射峰位预测模型,在构建模型的过程中通过重构损失函数,引入中子衍射强度对应的误差作为损失函数的权重,以此降低实验环境以及探测仪灵敏度等因素导致的误差。并基于背底数据裁切算法以及噪声数据清除算法完成对衍射数据的预处理,基本清除噪声数据对模型训练的干扰。随后利用Levenberg-Marquardt算法不断训练模型,随着模型训练的结束得到中子衍射角度与中子衍射强度之间精确的函数关系,最终输出高精度的中子衍射峰位。

附图说明

图1是本申请实施例所述子衍射峰位预测模型设计流程;

图2探测仪角度转换示意图;

图3中子探测仪二维面探仿真;

图4中子探测仪二维面探效率区间选择;

图5信道与强度关系;

图6背底数据和噪声数据分布;

图7背底数据裁切算法流程;

图8噪声清除算法清除数据图;

图9中子衍射峰位预测模型整体架构;

图10单一神经元结构;

图11中子衍射峰位预测模型训练过程;

图12中子衍射峰位预测模型GPU并行优化架构;

图13六组中子衍射数据散点形式;

图14[5-5]中子衍射峰位预测模型非线性回归曲线图;

图15[7-6]中子衍射峰位预测模型非线性回归曲线图;

图16[8-7]中子衍射峰位预测模型非线性回归曲线图;

图17[100-100]中子衍射峰位预测模型非线性回归曲线图;

图18中子衍射数据多峰散点图;

图19[8-7]双中子衍射峰位预测模型拟合;

图20[20-15]双中子衍射峰位预测模型拟合。

具体实施方式

下面对本发明的实施例作详细说明,本实施例以本发明的技术方案为依据开展,给出了详细的实施方式和具体的操作过程,对本发明的技术方案作进一步解释说明。

本发明公开一种基于神经网络的中子衍射峰位预测方法,参考图1所示,包括以下几个过程:

系统预设置:对探测仪正中间位置与入射中子束之间的夹角进行测量校准为预设角度2θ,使用中子束对被测材料进行衍射,使用中子探测仪采集被测材料衍射时产生的中子;

获取中子衍射数据:将中子探测仪每个信道的位置转换成信道偏离角Δθ,根据预设角度 2θ和信道偏离角Δθ得到中子探测仪每个信道的角度;并根据中子探测仪每个像素块采集到的中子数量,统计中子探测仪每个信道的衍射强度和强度误差;

架构搭建:搭建中子衍射峰位预测模型的神经网络架构,包括隐藏层的数量、每个隐藏层以及输入层与输出层的神经元数量;

以中子探测仪各信道的角度作为输入、衍射强度作为输出,并将强度误差引入到损失函数,对搭建的神经网络进行训练,即对角度与衍射强度之间的函数关系进行拟合,得到的中子衍射峰位预测模型即为角度与衍射强度之间的函数关系;

根据拟合得到的角度与衍射强度之间的函数关系,找到衍射强度最大值所对应的角度,即为被测材料的中子衍射峰位。

下面分别对每个过程进行解释说明。

1、系统预设置

参考图2所示,对探测仪正中间位置与入射中子束之间的夹角进行测量校准为预设角度 2θ,进而中子束对被测材料进行衍射,中子探测仪各像素块采集被测材料衍射产生的中子,通过统计中子数量来反映各像素块的衍射强度,进而得到中子探测仪各信道的衍射强度。

2、获取中子衍射数据

中子探测仪的二维面探是由一个个小的正方形组成的方阵,如图3所示的二维面探仿真图,图中蓝色的小正方形就称之为一个像素块,即一个pixel。

(1)计算中子采集效率

在中子谱仪系统中,所使用到的探测仪的二维面探有两种类型,其中一种的二维面探是包含1024*1024个像素块,另外一种则是由512*512个像素块组成的二维面探。每个像素块都会采集到数量不等的中子,所以需要对每个像素块采集中子的效率进行计算。效率计算就是对中子探测仪的二维面探进行的前期测试,以对中子探测仪实际采集到的中子数量进行校准,提高数据的准确性。主要流程是:垂直于二维面探对每个像素块均匀的打上相同数量的中子,然后分析实际采集的中子数,这样经公式(1)和公式(2)所示的效率计算公式进行计算之后便可得出二维面探中任意一个像素块的效率。

对照图3所示,式中i表示二维面探中的第i行,j表示二维面探得第j列,Nij表示第i行第j列像素块所获取的中子数量,N代表二维面探中一个维度的像素块的数量,而Navg代表每个像素块的平均中子数,eff.factorij表示第i行第j列像素块的中子采集效率。

公式(1)中的N是可以改变的,取决于效率区间正常像素块的数量,如图4所示方框所选。中子束是均匀打到二维面探的,但因为角度的偏差,中间区域的像素块接收到的中子数量会在一个固定的值附近波动,在图4中这个固定的均值是40000。但角度偏离较大的探测仪边缘地区,接收到的中子数量会偏离固定值较多,因此这些像素块的计数内容会被丢弃掉。

(2)使用中子采集效率对采集的中子数量校准,获得信道的衍射强度和强度误差

在完成前期对二维面探的效率计算之后,在中子应力谱仪系统测量残余应力的实验过程中,采集到的中子数量是需要误差校准的。通过该过程的计算,可以得到校准后的每个像素块的衍射强度以及每一个像素块中衍射强度集成对应的强度误差,计算方式如公式(3)和公式(4)所示:

其中为第i行第j列像素块采集到的中子数量,为校准后的数据,即为第i行第j列像素块的衍射强度;代表中子探测仪二维面探中第i行第j列像素块的强度误差。

将误差校准步骤算出来的每个正常区间中像素块的强度和强度误差,保留x方向,沿y 方向将每一列中所有的像素块衍射强度进行累加得到x位置对应的强度集成。然后继续沿y 方向将每一列中所有的像素块中衍射强度所对应的误差进行累加,从而得到强度集成对应的误差。其中x方向为信道方向,则每一列像素块对应一个信道,每个探测仪总共有N个信道,由此可得到每个信道的衍射强度和强度误差,信道与衍射强度的关系如图5所示。

(3)计算信道的衍射角度

除了上述获取到的衍射强度和强度误差外,还需要转换获取探测仪每个信道的衍射角度。

如图2所示,中心位置的角度,即探测仪正中间位置与入射中子束之间的夹角,已在系统预设置时测量校准为预设角度2θ,因此,此时只需要获取每个信道相对于中心位置的信道偏离角度Δθ即可。

参考图2所示,L为探测仪到待测件材料待测位置的距离,ΔL为每个像素块的长度,各道距偏离探测仪中心位置的距离为Δl=k*ΔL,k为信道所在像素块距离探测仪中心位置的像素块个数。因为被测材料到探测仪的距离L是已知的,每个信道偏离的ΔL也是已知的,因此根据反三角函数,也就是公式(5)就可以计算出每个信道偏离的角度值Δθ。随后将探测仪正中间位置作为零点,角度值为2θ,然后对探测仪正方向上的信道,其衍射角度为2θ+Δθ,对探测仪正方向上的信道,其衍射角度为2θ-Δθ。这样便将中子探测仪每个信道的角度计算出来,结合之前累加得到的强度以及强度误差,最终得到(角度,强度,强度误差)这样点对形式的数据,即为中子衍射数据。

其中的信道偏离角度计算式为:

(4)背底数据裁切

中子探测仪接收到的中子束是不均匀的,因此衍射数据会含有背底数据,经过效率计算、校准误差计算和角度转换三组公式计算之后,背底数据和噪声数据都会伴随着衍射数据。背底数据的存在会极大地影响寻找中子衍射峰位的精度,如果直接拟合衍射数据会导致中子衍射峰位的拟合误差过大,这样计算三向应变时误差也会较大,最终导致对被测材料的残余应力计算不准确。按照上述过程得到的中子衍射数据,其中的背底数据和噪声数据如图6所示。

因此在中子衍射数据拟合之前需要将背底数据清除,以降低数据拟合的误差,提高中子衍射峰位预测的精度。另外清除背底数据之后,如果继续用图像展示散点数据会发现某些数据组含有明显的噪声点。噪声点孤立与其他数据,一般会干扰到衍射数据的拟合效果,为了避免这些干扰需要将噪声点清除掉。因此本实施将对前述得到的中子衍射数据进行背底数据裁切和噪声数据清除。

首先进行背底数据的裁切清除。

中子衍射数据的背底数据并不是一个确定的数据范围,当测量不同的材料甚至材料的不同位置得到的衍射数据的背底数据区域也很可能存在较大差距,所以如果按照固定的数据范围裁切,就有可能会导致衍射数据的有效范围被误裁剪。因此需要针对中子衍射数据的特点设计相适应的算法对背底数据进行裁切,结合应力分析中传统的数据拟合方式,本实施例将设计基于Levenberg-Marquardt算法的背底数据裁切算法来实现对衍射数据的高效裁剪,算法流程如图7所示。

图7的算法程序流程图中,第一步是输入衍射数据,而第二步是估计高斯参数。之所以需要设计这一步,是因为Levenberg-Marquardt算法在拟合不同的峰形时需要根据选择的峰形函数的不同来使用不同的方案初始迭代参数,所以流程开始前需要对衍射数据进行分析,以区分材料所对应衍射峰形的具体类型,当前虽然90%以上的数据是使用高斯峰形,但其他几种峰形也需要判别,最后根据所选峰形的不同来设计参数对应的初始化方案。

为便于参数初始化的理解,且由于高斯峰形的占比高,本实施例针对高斯函数给出其峰值、半高宽、峰位这三个参数的初始化步骤:

①对原始的中子衍射数据按衍射角度从小到大排序;

②由最小和最大的五个衍射角对应的衍射强度平均值得到本底数据参数,也就是最小的五个衍射角的点对数据平均计算得到一个衍射角和一个衍射强度值,最大的五个衍射角的点对数据平均计算同样得到一个衍射角和一个衍射强度值,基于这两点计算一条直线,该直线就是衍射数据的本底;

③用原始数据扣除掉一次函数的本底数据,初始估计的衍射峰位由所有衍射数据中强度最大的值决定;

④而峰值则是取先前得到的衍射峰位左右各五个点的强度平均值;

⑤输出从衍射峰位开始向两侧1/2峰值对应的衍射角,而这两个衍射角差值的绝对值就是半高宽。

得到峰值、峰位、半高宽的估值之后,基于中子衍射峰位参照半高宽的倍数范围裁切衍射数据,一般按照3倍半高宽裁切,也就是从衍射峰位开始向左向右各保留1.5倍半高宽的范围,其余数据丢弃。综合以上分析,该背底数据裁切算法的设计与实现思路如下述算法1 所示。

算法1基于Levenberg-Marquardt算法的背底数据裁切算法

清除背底数据后,再对噪声数据进行清除。

背底数据清除之后,部分衍射数据中还会存在一些噪声数据,如图8所示,为了降低这些噪声点对模型训练结果的影响,本小节将设计一种基于KNN的中子衍射噪声数据清除算法,算法的伪代码算法2所示。

算法2噪声数据清除算法

根据算法2中描述的算法,使用中子衍射噪声数据清除算法过滤孤立点数据时的步骤如下:

①中子衍射数据排序

对背底数据裁切清除后的中子衍射数据,按中子衍射角度从小到大排序。其中,每个信道对应的中子衍射数据表示为点对形式的数据为(x,y,z),x,y,z分别表示衍射角度、衍射强度和强度误差;中子衍射点对数据序列中,使用长度为L的窗口从序列最左端选取L个点对数据。这里是为了保证之后算法取到的5个点对是绝对的邻近位置,否则会出现极大的误差,极有可能误删除有效点对。

②计算当前窗口内每两个点对数据之间的欧氏距离:

公式(6)中,d12为两不同点对数据之间的欧式距离,x1,x2为两个不同点对数据的衍射角度,y1,y2为两个不同点对数据的衍射强度。

③判断点位是否保留:对当前窗口内的每个点对数据,取该点对数据与窗口内其他点对数据之间的最小欧式距离dmin,计算该点对数据与其他所有点对数据之间欧式距离的平均值 da即;若dmin>3*davg,则该点对数据为噪声数据,丢弃该点对数据;否则保留该点对数据;

④将窗口向右平移1个点对数据,返回步骤(a2),直到对所有中子衍射点对数据进行上述判断处理。

经过上述算法清洗中子衍射数据的噪声数据之后得到如图8所示散点图,对比图6所示的噪声点,之前存在的较为明显的噪声点在图8中的已经不存在。

经过上述的背底数据和噪声数据清除方法对中子衍射数据进行预处理后,剩余的中子衍射数据便可以作为神经网络的训练样本数据。

3、模型架构搭建与模型训练:搭建中子衍射峰位预测模型的神经网络架构,包括隐藏层的数量、每个隐藏层以及输入层与输出层的神经元数量;进而以中子衍射数据中的衍射角度和衍射强度分别作为输入和输出,并将强度误差引入到损失函数,对神经网络进行训练。

3.1中子衍射峰位预测模型构建

由万能近似定理的结论:神经网络因为其非线性能力可以近似从任何有限散射空间映射到另一个函数。可以得出有限数量的神经元可以实现对散点数据的非线性拟合。由万有近似定理理论保障,基于神经网络模型架构特点,构建了一个包含两个隐藏层和一个输出层的中子衍射峰形预测模型,以实现对中子衍射数据的非线性回归,该模型的架构如图9所示。

该模型架构的输入层为中子衍射角,而输出层固定只有一个神经元,以用来输出预测的中子衍射强度值。图9中的中子衍射峰位预测模型中输入层的输入数据为衍射角度向量 V=[v1,v2,...,vN],由多组中子衍射点对数据中的第一列衍射角度构成,在神经网络模型中通常以向量的形式输入。输出层输出的为预测的衍射强度值ypre为模型预测的衍射强度值。

图9所构建的中子衍射峰位预测模型的每一个神经元都如图10,它包含神经元的输入、神经元自身偏置bi和激活函数。前一层神经元输出的集合组成了当前神经层的神经元的输入 V=[v1,v2,...,vN],与这些神经元所对应的权重W=[ω1,ω2,...,ωN]之积,然后加上图10中神经元对应的偏置bi就算神经元激活函数的输入,但如果该神经元的前一层是模型的输入层,那么输入的向量就是中子衍射数据的衍射角,计算过程如公式(7)所示。

得到输入向量之后,又由于中子衍射数据的非线性特征,因此为了增加中子衍射峰位预测模型的非线性回归能力,在神经元中使用激活函数(Activation Function)对输入向量做非线性激活,中子衍射峰位预测模型的激活函数都是使用的双曲正切激活函数,如公式(8)所示:

经过公式(8)对输入向量进行非线性激活之后而得到的结果a就是该神经元的输出,同理该神经元所在的神经网络层的其他神经元也会得到相同的一个输出。该层神经元的输入与下一层神经元的权重和偏置集成,就是下一层神经元的输入,如果是输出层,那a就是神经网络的输出,否则继续向前传播直到该模型的输出层。中子衍射峰位预测模型的最终输出结果如公式(9)所示。

公式(9)中a3是整个中子衍射峰位预测模型的输出值,也就是最终的强度预测值。N是输入的衍射数据数量,模型第一个隐藏层有S个神经元,M则是第二个隐藏层的神经元数量, vj表示的是第j个输入,而如果是输入层中的vj则代表的是输入的中子衍射角。f1,f2,和f3分别代表中子衍射峰位预测模型第一个、第二个隐藏层和输出层的激活函数。分别表示的是中子衍射峰位预测模型第一个隐藏层和第二个隐藏层中第m个神经元对应的偏置,b3表示的是输出层的偏置。为连接第一个隐藏层中第i个神经元与第j个输入层的权重值,表示的是连接中子衍射峰位预测模型第一个隐藏层中第i个神经元和中子衍射峰位预测模型第二个隐藏层对应的第m个神经元的权重值,代表的连接第二个隐藏层中第m个神经元与输出层神经元的权重。数据前向传播的过程在模型中经历的每一次迭代,需要计算此次预测的衍射强度值与实验测量强度值的差距来判断模型的优劣,神经网络模型性能的判别就需要损失函数。

3.2中子衍射峰位预测模型损失函数重构

一般情况下,在模型训练的前期,预测的中子衍射强度值跟中子衍射点对数据中的衍射强度值有较大的差距,因此需要设计损失函数来计算预测强度值和实验强度值之间的误差,同时也利用损失函数来反向传播更新模型的参数组。损失函数是模型对曲线与数据贴近程度的反映,贴近的效果越差损失函数的值就越大。一般用它来优化模型的参数:首先模型将预测的衍射强度值与实验测量的衍射强度值进行匹配,然后利用损失函数就能计算出模型在该次迭代的误差,基于该误差利用相应算法优化神经网络的参数(权重和偏置)来最大程度地减少神经网络的误差,这也是神经网络的基本训练流程。而又因为中子衍射数据的特性,利用二维面探获取衍射数据时因为存在二维面探中的像素块灵敏度问题,最后转换得到的衍射强度值会对应相应的误差。

因此为了更好地训练中子衍射峰位预测模型,故重构损失函数,在损失函数中引入衍射强度对应的误差值,即权重化损失函数,如公式(10)所示:

式中,p表示神经网络中所有需要更新的权重和偏置参数,yexp为训练神经网络的点对数据中的衍射强度,ypre为神经网络预测得到的衍射强度,ε为训练神经网络的点对数据中的强度误差。

上述损失函数将模型的预测值与实验值差值的加权平方和最小化,以对神经网络进行训练,能够提升训练所得中子衍射峰位预测模型的非线性能力。

3.3峰位预测模型训练收敛判定

中子衍射峰位预测模型的训练会在前向计算和反向传播过程中循环迭代,但是不可能无止境的让程序迭代运行下去,是需要相关条件能够终止这样的计算,但前提是这样的条件是需要能够满足非线性回归的相关标准的,也就是理论上收敛于中子衍射数据的局部最小位置。当然如果训练多次之后,依然没有达到训练效果也需要停止模型的训练过程,因为继续的迭代训练之后消耗资源进入“死循环”。因此设计了以下四种终止条件让模型停止训练,包括梯度收敛、参数收敛、误差收敛以及强制终止。

中子衍射峰位预测模型的构建和训练过程可简化为如图11所示。模型构建开始前首先从探测仪获取中子衍射数据,并过滤中子衍射数据。随后是模型的前向计算,通过误差利用 Levenberg-Marquardt算法进行反向传播更新权重矩阵、偏置向量以调整模型的拟合能力。每一轮衍射数据向前流动的计算和误差反向传播的训练过程中,都会判断模型是否符合对应的四个终止条件,如果满足则停止训练迭代,得到训练阶段的最终模型。从以上分析不难得知,模型停止训练迭代是需要经历多次迭代的,这必然需要大量的时间开销,为了解决这一问题,本发明实施例的的下一步将利用GPU并行计算原理加速中子衍射峰位预测模型的训练。

3.4基于并行原理优化模型训练

神经网络模型训练中涉及到大量的矩阵运算,加上模型寻找局部最优值需要经历数次迭代,所以中子衍射峰位预测模型在训练阶段的时间开销是极大的。因此为了提高中子衍射峰位预测模型的训练效率,本步骤将充分利用GPU算力资源,基于TensorFlow框架并行计算同步模式构建由三台GPU组成的并行优化架构,架构如图12所示。

该并行优化架构之所以只使用三台GPU的形式是有三个原因存在:第一个是因为模型效率的提升并不会跟随着GPU的增多而线性的减少模型训练时间,因为GPU之间的通信需要时间。第二个是,由于前端总线带宽的限制,不同GPU的延迟不同,会导致单步运行时间过长。第三个是多GPU并行需要的CPU性能极高,资源开销很大,所以对服务器的整体性能要求很高。综上所述,结合理论技术和实际成本考虑,最终选择用三台GPU组建并行优化训练架构。该并行优化架构的原理如下:

(1)通过在一台机器上搭建三组GPU组成的结构完成对并行优化模型的构建,随后将中子衍射数据中的训练集分发给三组GPU进行训练。而每一次完成一组前向计算、反向传播的过程,都会计算中子预测强度和实验强度的差值,也就是损失值。

(2)基于Levenberg-Marquardt反向传播算法利用损失函数分别计算三组GPU训练后的中子衍射峰位预测模型的权重和偏置参数,然后同步计算这三组权重和偏置参数的平均值。这里之所以是同步计算,是因为三组GPU拿到的是不同的训练集数据,这样不同数据的局部最优位置绝大部分情况下是不同的,因此很有可能因为迭代次数不一样导致训练的时间开销不同,所以需要等待三组GPU都完成同一批次的训练。最后用这些平均权重和偏置参数更新中子衍射峰位预测模型的参数组,重复上述步骤进入到下一次训练迭代,直到中子衍射峰位预测模型满足训练终止条件。

从上述原理分析中可以知道并行优化架构主要是通过多GPU同时训练不同的数据来实现中子衍射峰位预测模型参数的更新,这样的架构形式充分利用GPU的性能,能极大提高模型的训练效率。

4、预测被测材料的中子衍射峰位

上述使用中子衍射点对数据训练获得中子衍射峰位预测模型,相当于对角度与衍射强度之间的函数关系进行拟合,从而得到角度与衍射强度之间的函数关系。进而,可根据拟合得到的角度与衍射强度之间的函数关系,找到衍射强度最大值所对应的角度,即为被测材料的中子衍射峰位。

下面将展示本实施例中中子衍射峰位预测模型的训练结果,包括模型参数的确定、双衍射峰的展示,以及模型的相应评估。从多组衍射数据中随机抽取出六组衍射数据,这六组数据:图13-a到13-f的散点数据形式(即所有中子衍射点对数据)如图13所示。

1.模型参数确定

为了表示方便,将使用[a-b]的形式表示中子衍射峰位预测模型的架构,第一个字母a表示模型第一层隐藏层的神经元数量,第二个字母b表示第二层隐藏层的神经元数量,即[4-3] 中子衍射峰位预测模型表示的就是该模型第一个隐藏层含有四个神经元第二个隐藏层含有三个神经元。然后展示用[5-5]、[7-6]、[8-7]、[100-100]这四种架构的中子衍射峰位预测模型训练图13中的六组衍射数据,并展示曲线效果图。

(1)中子衍射峰位预测模型两个隐藏层神经元数量都为5个时构成的[5-5]结构的拟合结果如图14所示。从中其实可以明显的看到,六组数据中图14-a、图14-b、图14-c、图14-f 数据的收敛效果非常不理想,基本处于欠拟合的状态,图14-d、图14-e勉强符合拟合标准。而事实上其他未展示的数据大部分收敛效果不佳,因此在模型的下一次训练开始前,为了增加模型的非线性能力而增加神经元的数量。

(2)中子衍射峰位预测模型两个隐藏层神经元数量分别为7个和6个时构成的[7-6]结构的拟合结果如图15所示。对照第一次实验使用[5-5]中子衍射峰位预测模型得到的训练结果,此次实验,调整使用[7-6]形式的中子衍射峰位预测模型训练全体中子衍射训练集数据。图15 中,图15-b、图15c、图15-f相比于图14中图14-b、图14-c、图14-f的效果有了明显的提升.虽然图15-d的效果依然未达到标准,但也有了较好的拟合效果,图15-e数据效果极好,但图15-a中曲线依然是处于欠拟合状态。总体来说[7-6]模型对大部分数据有一般的效果,少部分数据有极好的效果,但依然有少部分数据的曲线拟合效果不佳。这显然是不符合应力计算所要求的高标准的,因此将再次调整模型隐藏层中神经元的数量值。

(3)中子衍射峰位预测模型两个隐藏层神经元数量分别为8个和7个时构成的[8-7]结构的拟合结果如图16所示。从该图所展示的六组中子衍射数据中不难看出模型的拟合效果相比之前[5-5]、[7-6]模型有显著的提升。对比之前模型在上述六组数据中的拟合结果,[8-7]模型有了极好的拟合效果。其他组未展示的绝大部分衍射数据的拟合效果也是如此,曲线拟合效果也十分贴近散点数据。

(4)中子衍射峰位预测模型两个隐藏层神经元数量都为100个时构成的[100-100]结构的拟合结果如图17所示。经过多次实验的证明,随着神经元数量的不断增加,拟合的效果并未有明显的提升,甚至会因为过度拟合导致模型在验证数据集和测试数据集表现效果不佳,接下来为了测试神经元数量对模型的非线性处理能力,将模型的两个隐藏层神经元数量分别提升到100个,拟合效果如图所示17所示。

从图20所显示的曲线拟合效果图可以看出,六组中子衍射数据的训练结果都出现了过度拟合的现象,模型所训练出来的曲线刻意的将诸多散点都连接起来了,其他组数据出现了同样的问题。而这种发生在训练集的过拟合现象也必然会在验证集和测试集的中子衍射数据拟合过程中发生,这也就证明了神经网络模型并不会随着神经元数量的增多而效果变好。又因为存在过拟合现象,还会增加计算机的消耗,延长模型的训练时间。这对快速处理海量的中子衍射数据是一个阻碍,因此神经元数量需要控制在一个较好的范围,以能够高效率高精度地拟合衍射数据同时输出衍射峰位。因此最终中子衍射峰位预测模型中神经元的数量确定为:第一个隐藏层和第二个隐藏层分别用8个神经元和7个神经元去组建,输出层神经元数量为一个。

2.双衍射峰展示

上述实验训练中子衍射数据的过程,确定了单峰拟合的中子衍射峰位预测模型最终架构。但是因为中子衍射数据中存在极少部分数据是双衍射峰的情况,因此为了处理这种情况,将在下一小节展示针对拟合双衍射峰数据设计的新模型架构,并将对拟合结果做详细分析和展示。

中子衍射数据的散点图中,存在极少数的双衍射峰现象,如图18所示,第一个衍射峰峰位大概在衍射角为47.5°附近,第二个衍射峰峰位的位置大概在55.5°附近。目前采集到的 10000多组数据中仅仅包含不到20组双峰数据,但是为了能够全方位的分析各种不同属性的中子衍射数据,本小节首先使用单衍射峰的模型去拟合数据。然后将重新设计中子双衍射峰位预测模型的架构,并对结果进行分析。

对于处理双衍射峰,此处将首先使用前述所确定的[8-7]中子衍射峰位预测模型来拟合双峰衍射数据,同样为了做横向纵向的对比,这里将展示两组双峰衍射数据图,曲线拟合效果图如图19所示。

图19中,图19-a组对于峰位在55.5°附近的小峰拟合较好,但峰位在47.5°附近的主峰效果一般,而图19-b组中[8-7]模型对峰位在47.5°附近的主峰拟合效果较为合适,但是峰位在 55.5°附近的小峰以及附近的数据都是处于欠拟合状态。整体来看,[8-7]模型对双峰衍射数据的拟合效果都是不理想的,因此需要调整隐藏层中神经元的数量。模型参数调整过程中,经过多次调整神经元数量之后,确定了[20-15]模型来拟合双衍射峰,实验结果如图20所示。

从图20中可以明显的看出拟合效果相对[8-7]中子衍射峰位预测模型有了极大提升,到了一个十分完美的地步,两个峰位的曲线跟散点数据贴合得很紧密,其他未展示的十几组双峰数据拟合效果也都很完美。一般算法是不能拟合双峰数据的,因此[20-15]双峰模型与其他算法相比优势极大。

3.中子衍射峰位预测模型评估

为了科学的量化评估中子衍射峰位预测模型拟合衍射数据的效果,引入机器学习中经典的两个模型评估参数:一个是均方根误差(Root Mean Squared Error),即RMSE;另外一个参数是拟合优度(Goodness of Fit),即R2

表1隐藏层中不同数量神经元的RMSE值对比

表1所示的隐藏层中不同数量神经元的RMSE值对比可以看出,在中子衍射数据验证集上当中子衍射峰位预测模型隐藏层的神经元数量分别为8和7时,均方根误差值大部分在一个较好的区间范围内,因为大部分数据在1.0~2.0之间,极少部分数据的RMSE值会超过3.0,这证明模型在验证数据集有一个非常好的表现。另外在此之前,都是随着两个隐藏层神经元数量的逐渐增多,模型的拟合效果逐渐变好,例如从[5-5]模型到[7-6]模型再到[8-7]模型, RMSE值有一个显著的提升,大部分数据的RMSE值逐渐接近于1.0。但是随着隐藏层神经元数量的逐步增多,RMSE值虽然得到进一步提升,例如在[100-100]模型中,RMSE的值不升反降,这是因为虽然该模型在训练数据集表现不错,但是它其实是对训练数据集已经过度拟合了,前面的拟合曲线图像也明确显示出这种现象,因此在验证集上表现不佳。为了进一步验证[8-7]模型的优势,将分析隐藏层中不同数量神经元的R2值的对比,如表2所示。

表2隐藏层中不同数量神经元的R2值对比

由表3-5隐藏层中不同数量神经元的R2值对比中可以得到,从[5-5]模型到[7-6]模型再到 [8-7]模型的神经网络模型,随着模型中隐藏层神经元数量的逐步增多,越来越多组的中子衍射数据对应的R2值接近于1.0。由前面R2的定义可以得出,这些模型在测试集上的效果不断变好。这四组结果对比中,大部分的衍射数据的R2值在0.985~1.0的区间内,极少部分的数据在 0.975以下,这些R2值的表现对于曲线的拟合是一个非常好的评价。而在[100-100]模型中,R2值并没有明显的增加,反而是有一个不小的下滑,但是模型的相关计算肯定会指数倍增加,这会极大地增加模型在处理数据时的时间开销,因此神经元数量应该尽可能的精简以提高模型的运行效率。结合各种R2值之间的对比,[8-7]中子衍射峰位预测模型在这一个参数上是占据绝佳优势的。

综上所述,最终确定中子衍射峰位预测模型为:第一个、第二个隐藏层神经元单元量分别为8和7,而因为中子衍射峰位预测模型只有一个输出,所以输出层只有1个神经元。为了验证模型的拟合中子衍射数据的优势。

为了验证中子衍射峰位预测模型对中子衍射数据的拟合性能,将引入一些通用的数据拟合算法,比如Levenberg-Marquardt算法、随机森林、最小二乘、梯度下降算法,然后使用这些算法来拟合相同组数的中子衍射数据,在保证硬件环境和软件环境一致的前提下,对比它们的实验结果。对比参数包括上一小节所使用的RMSE和R2,因为需要在实验过程中处理海量的中子衍射数据所以同时将引入时间开销参数(Time),各组算法之间的对比结果如表3 所示。

表3不同算法处理中子衍射数据性能对比

(1)从表3中可以得出,利用[8-7]中子衍射峰位预测模型训练各组衍射数据之后得到的 RMSE和R2分别求平均值所达到的效果相比于其他算法是最佳的,其他几个算法在这两项参数上远未能达到中子衍射峰位预测模型所取得的精度,这证明了模型对于衍射数据的拟合效果是极佳的。

(2)与梯度下降方法、最小二乘、随机森林相比,中子衍射峰位预测模型在RMSE、R2和时间开销上也是全面领先,因此与这三种算法之间的对比将不做阐述。而与通用的Levenberg-Marquardt算法相比较,RMSE值更是减小了数倍,接近于1.0,而R2值提高了110%,也接近于1.0,但是在时间开销上,Levenberg-Marquardt算法有较大的优势。

(3)Levenberg-Marquardt算法在时间开销上的优势是因为Levenberg-Marquardt算法由梯度下降方法和高斯牛顿法结合得到,即当增益比较大时使用的是高斯-牛顿迭代步长,而增益比较小时使用的是梯度下降步,这种模式大大提升了Levenberg-Marquardt算法的效率,能够让模型快速找到局部最优化位置。

(4)Levenberg-Marquardt算法在时间开销上的优势这一结论也直接证明了在背底数据裁切部分为什么以Levenberg-Marquardt算法为基础,是因为Levenberg-Marquardt算法的运算效率极高,前期预处理的时间开销在合理的范围内。综合比较,为了更高精度的计算材料的残余应力,本章所研究的中子衍射峰位预测模型对衍射数据的处理效果极佳。

以上实施例为本申请的优选实施例,本领域的普通技术人员还可以在此基础上进行各种变换或改进,在不脱离本申请总的构思的前提下,这些变换或改进都应当属于本申请要求保护的范围之内。

31页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种堆外探测器中子灵敏度校准装置及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!