基于人工神经网络的非线性回归_王宜怀
一种基于改进型RBF神经网络的非线性时间序列预测模型
一种基于改进型RBF神经网络的非线性时间序列预测模型陈海英【摘要】RBF神经网络具有收敛速度缓慢、全局搜索能力差等缺点,提出了一种基于遗传算法的RBF神经网络,经过自适应遗传算子参数优化,提高了RBF神经网络模型的预测精度,实现了非线性时间序列的预测.仿真实验结果表明,基于遗传算法的RBF网络预测模型非常适合非线性时间序列的预测,是可行的、精准的、有效的.【期刊名称】《湖南工程学院学报(自然科学版)》【年(卷),期】2015(025)001【总页数】4页(P41-43,47)【关键词】时间序列预测模型;RBF神经网络;遗传算法【作者】陈海英【作者单位】华中农业大学楚天学院,武汉430205【正文语种】中文【中图分类】O2441987年神经网络被首次运用于预测,此后便逐渐受到网络预测领域的关注和重视.目前,不同形式的神经网络已经被运用到经济、工业和生活等方面的预测中.但由于神经网络的自身局限性,导致其具有收敛速度缓慢、全局搜索能力较差的特点,容易造成局部极小值情况,因此在单独运用的预测效果方面存在缺陷[1].随着近年来人工智能学科的发展和进步,遗传算法、模糊控制、自适应控制等技术逐渐成熟,神经网络开始联合其他技术一起应用于时间序列预测领域.人工神经网络(ANN)是一个较为复杂的网络结构,其由大量简单处理单元构成,可模拟出动物神经网络的行为和结构.该神经网络中含有若干个神经元,每个神经元均可向其周边的神经元发送消息或接收周边神经元发送过来的消息,各个神经元通过相互合作来实现网络信息的处理.这种网络格局具有自适应和自学习的特点,通过对输入输出数据的分析,可掌握到相对性的数据规律,并由此推算出数据输出结果,神经网络中的这种输入输出分析过程就是一种“训练”和“学习”过程[2].神经网络的基本结构如图1所示.1988年,Lowe和Broomhead提出了径向基(RBF)神经网络,该网络的隐藏层中扩展了一个“函数”集,组建起一个“基”[3].径向基神经网络分别包括输入层、隐含层及输出层三种形式,为前向神经网络.径向基(RBF)神经网络基本结构图如图2所示.RBF神经网络内的隐节点基函数的运算采用了距离函数,其径向基函数采用的是激活函数[4].则RBF分布函数见公式(1):在公式(1)中,s代表隐含层神经元节点的数量,也就是径向基函数中心个数;系数ωj(j=1,2,…s)代表连接权重.RBF神经网络主要有两个映射关系(其中m代表输入维数,n代表输出维数);第一部分是指输入层空间非线性变换至隐含层空间;第二部分是指从隐含层空间线性变化至输出层空间.也就是:在公式(2)中,s为输出节点数,wik表示连接隐含层至输出层的权值向量.在RBF神经网络内,结构内的隐含层为训练样本的中心空间模式,各个中心之间的位置与其宽度一致.为求得隐含层中各个神经单元基函数的宽度、中心和连接隐含层至输出层的权值,这里在完成输入至输出的映射后,实现对RBF神经网络的构建、学习和训练.因此,构建具有良好性能的RBF网络的关键是设计出符合要求的隐含层,并在此基础上衔接起非线性映射(输入层至隐含层)和线性映射(隐含层至输出层)[5].从技术的角度上来说,RBF神经网络中的隐单元中心ci,输出权重wi,宽度σi值在RBF神经网络预测模型占有举足轻重的作用,在很大程度上影响着系统预测性.然而在实际运算过程中,隐单元中心ci,输出权重wi,宽度σi的取值较为困难,为RBF神经网络的运行带来阻力[6].由于遗传算法具有较强的搜索能力,本文基于自适应遗传算法的对RBF神经网络参数进行优化,具体步骤如下:步骤1:初始化假设每个隐节点的中心参数ci和宽度参数σi为染色体,将上述参数的集合假设为一组种群,该种群具有M个随机产生的个体,则得到X=(X1,X2,…,Xn)T,其中种群内单个个体Xi=(X1,X2,…,Xn)为各个神经网络中的初始权值分布,各个基因值代表单个神经网络中的单个连接权值,个体长度与神经网络权值个数一致,得到S1+S1×S2+S1+S2,这里采用浮点数编码编码神经网络内的权值,以获取较高的权值运算精度.步骤2:参数优化个体的评价采用适应度函数值进行,解码神经网络内的各个个体,可获取一个输入样本,将负的平均相对误差(MAPE)来衡量适应度函数f,以区分出参数的优劣,即在上式中,yi表示实际值表示预测值,w代表训练样本的数量,进而运用适应度函数对各个图的适应值进行求解.获取各个个体适应度大小后,降序排列种群内个体,对比此代群体中的个体平均适应度,若平均适应度高于以往的平均值,则表明此代群体适应值有所提高,可适当缩小种群规模.这里假设种群个数由w减少到w*,则可得到下式:w*=wmin+(wmax-wmin)exp(-Δ)在公式(3)中,wmax代表种群变化规模的最大范围,wmin代表种群变化规模的最小范围,△代表种群中适应度平均值的增加量.在各代遗传算法中,将种群内最优解保存到下一代,以获取最大代数和最高权值运算精度.步骤3:遗传操作①选取算子:通过比例运算选择算子,在种群中,适应值较大的个体在被选择概率方面较大,假设有第i个个体,则该个体被选择的概率可由下式求出:在公式(4)中,w代表种群规模,pi代表个体i在种群内的适应度.②交叉算子:本文采用了浮点编码方式对个体进行编码处理,因此在此采用交叉算子进行种群内的算术交叉处理.假设交叉概率为pc,种群内未进行交叉处理的个体自行复制,可得到下式:③变异算子:选取适量均匀变异算子,与基因座中的基因值相对应;假设变异概率为Pm,随机选择对应基因取值范围内的任意数进行.在公式(6)中表示第k个基因座的最大取值范围表示第k个基因座的最小取值范围[8].④在初始化种群内插入变异后的新个体,并对群众的评价函数进行重新运算.⑤若寻求到满意的个体,则结束搜寻,进入步骤2.完成上述操作后,得到神经网络中的最优初始权值,通过RBF算法训练神经网络,取得最优解.本文采用的实验平台基本数据如下:Windows XP ,1 GB内存, Athlon 64x2 Dual Core Processor 3600 1. 91 GHz,MatlabR2007b.将本文提出的预测模型运用于某地2013年全年的月平均温度值的预测,为消除原始数据之间的差异,采用归一化处理原始样本数据.经处理得到的2012年1月~12月温度序列分别为5.0 ℃、7.1 ℃、11.0 ℃、13.5 ℃、21.3 ℃、26.0 ℃、27.9 ℃、29.9 ℃、25.3 ℃、17.8 ℃、13.8 ℃、7.8 ℃.将2012年全年的月平均温度记作m,由此预测出m+1~m+12的数据.假设遗传算法内的初始种群大小为w=50,遗传代数最大值为100代,变异概率pm=0. 009,交叉概率Pc=0.9,训练误差为0. 001,RBF神经网络学习速率为0. 03,该算法的迭代步长为10,最大迭代次数为5000次.基于RBF神经网络模型的月温度预测值见下表1所示.由表可知,由RBF神经网络模型计算得出的预测结果的最大和最小误差值分别为17.37 %和1.42 %,由此可得出该预测模型的平均相对误差值为7.73 %,而月温度值的绝对误差最大值和最小值分别为1.7 ℃和0.5 ℃,其绝对误差的平均值为1.12 ℃.上述结果表明RBF 神经网络模具有较高的预测精度,其预测得出的结果可有效反映出该地每月温度时间的变化规律.由图3可知,改进型RBF神经网络在网络预测精度方面显著优于传统的BP网络模型,与实际值相对接近,在均方误差和相对误差方面均小于BP网络预测模型,具有较高的收敛性.较传统的预测方法而言,神经网络的预测方式在很大程度上解决了非线性复杂动力系统问题,在社会经济和自然现象中有较好的运用效果.实验结果表明,基于遗传算法的RBF网络预测模型可有效运用于非线性时间序列的预测,具体可行性、精准性和有效性特点,在时间序列的预测领域具有广阔的发展前景.【相关文献】[1] 张传斌,王学孝,邓正隆.非线性时间序列的RBF神经网络预测方法及其应用[J].热能动力工程,2001,16(3):311-312,342.[2] 韩敏,王晨,席剑辉.基于改进RBF神经网络的非线性时间序列预测[J].仪器仪表学报,2003,24(Z1):574-575.[3] 甘敏,彭辉,陈晓红.RBF-AR模型在非线性时间序列预测中的应用[J].系统工程理论与实践,2010,30(6):1055-1061.[4] 张冬青,宁宣熙,刘雪妮.基于RBF神经网络的非线性时间序列在线预测[J].控制理论与应用,2009,26(2):151-155.[5] 段其昌,赵敏,王大兴.一种改进PSO优化RBF神经网络的新方法[J].计算机仿真,2009,26(12):126-129.[6] 郭兰平,俞建宁,张旭东,漆玉娟,张建刚.基于改进RBF神经网络的混沌时间序列预测[J].云南民族大学学报(自然科学版),2011,20(1):63-70.[7] GUO Lanping,YU Jianning,ZHANG Jiangang,QI Yujuan,ZHANG Xudong.Nonlinear Time Series Forecasting of RBF Neural Network Based on Genetic Algorithm[J].Journal of Hebei Normal University,2011,35(3).[8] WU Chun-guo , ZHU Shi-zhao , WANG Bing-hong , GUAN Yu-hang.POD-based Radial Basis Function Neural Network for Nonlinear Time Series Prediction[J].Mini-micro Systems,2013,34(8).。
基于深度学习的非线性回归模型研究
基于深度学习的非线性回归模型研究随着深度学习技术的快速发展,非线性回归模型已经成为了机器学习领域中非常重要的一部分。
非线性回归模型可以用于解决许多实际问题,例如金融预测、医疗诊断、图像识别、自然语言处理等等。
本文将从深度学习的角度出发,探讨非线性回归模型的研究。
一、深度学习的基础深度学习是一种基于神经网络的机器学习方法,它通过多层神经网络对数据进行学习和特征提取。
与传统机器学习方法相比,深度学习具有以下优势:1. 可以自动学习特征,无需人工提取。
2. 可以处理大量高维数据,提高模型的准确率。
3. 可以通过增加神经网络的深度,进一步提高模型的表现能力。
深度学习的核心组件是神经网络,它由输入层、隐藏层和输出层三部分构成。
其中,隐藏层可以有多层,每一层都通过数学公式进行计算和转换,最终输出预测结果。
神经网络可以用于分类、回归、聚类等多种任务。
二、非线性回归模型非线性回归模型是指因变量和自变量之间存在非线性关系的回归模型。
通俗来说,如果自变量和因变量之间的关系不能用一条直线来表示,那么我们就需要使用非线性回归模型。
非线性回归模型通常包括输入层、隐藏层和输出层三部分,其中隐藏层可以有多层。
随着隐藏层的增多,模型的复杂度和表现能力也会逐渐提高。
深度学习的方法可以用于训练非线性回归模型,其核心思想是通过大量数据的训练,不断调整神经网络的权重和偏差,达到最优化的结果。
在训练过程中,我们需要针对不同的问题选择不同的激活函数、损失函数和优化器。
对于非线性回归模型而言,一般采用ReLU激活函数、MSE损失函数和Adam优化器。
三、深度学习在非线性回归模型中的应用深度学习在非线性回归模型中的应用非常广泛。
下面我们简单介绍几种常用的模型:1. 多层感知器(MLP)多层感知器是一种最基本的神经网络,它由输入层、隐藏层和输出层三部分构成。
多层感知器可以用于解决多变量、非线性关系的回归问题。
在深度学习中,MLP可以通过增加隐藏层的节点数量和层数,提高模型的表现能力。
基于Attention机制优化CNN-GRU混合神经网络的短期负荷预测技术
基于Attention机制优化CNN-GRU混合神经网络的短期负荷预测技术刘会;岳东明;苗光尧;王乐乐;王国彬;朱慧娴【期刊名称】《电工技术》【年(卷),期】2024()9【摘要】电力系统负荷预测实质是对电力市场需求的预测,短期电力负荷预测是电力部门的重要工作之一。
目前主要的负荷预测方法有传统预测、灰色预测、混沌理论预测、智能技术预测、优选组合预测等,其中智能预测中最典型的就是人工神经网络。
人工神经网络是一个极其复杂的非线性动力学系统。
它的自学习功能对预测有着重要的意义,能通过学习历史负荷数据来反映出输入变量和输出变量之间的非线性关系。
由于很多因素都会对电力负荷造成影响,因此可以把神经网络算法引用到负荷预测中,提高电力负荷的预测精度。
基于宁夏电网短期电力负荷预测的实际需求,提出了一种基于Attention机制优化CNN-GRU混合神经网络的短期负荷预测技术。
该技术通过引入Attention机制对CNN-GRU模型进行改进,有效提升了预测精度和可解释性。
在宁夏电网实际数据集上进行的仿真实验表明所提出的模型具有较高的预测准确性和可靠性。
【总页数】4页(P20-23)【作者】刘会;岳东明;苗光尧;王乐乐;王国彬;朱慧娴【作者单位】国网宁夏营销服务中心-国网宁夏计量中心;北京清软创新科技股份有限公司【正文语种】中文【中图分类】TM714【相关文献】1.基于attention机制的LSTM神经网络\r超短期负荷预测方法2.基于CNN-GRU神经网络的短期负荷预测3.基于Attention-BiLSTM神经网络和气象数据修正的短期负荷预测模型4.基于TCN-Attention神经网络的短期负荷预测5.基于贝叶斯优化的CNN-GRU短期电力负荷预测因版权原因,仅展示原文概要,查看原文内容请购买。
人工神经网络和随机森林在回归问题中的应用比较
人工神经网络和随机森林在回归问题中的应用比较作者:陆龙妹赵明松卢宏亮张平来源:《科技创新与应用》2019年第10期摘; 要:机器学习方法在回归问题中的应用十分广泛,人工神经网络(Artificial Neural Network,ANN)和随机森林(random forest,RF)均是经典的机器学习算法,在回归问题中均有众多的应用。
神经网络和RF算法均为决策树算法的扩展,且均在解决回归问题中有着良好的精度。
ANN是一种可以广泛应用于各个学科的经典机器学习算法;RF算法具有结构清晰、易于解释、运行效率高且对于数据要求低等优势,且RF模型具有稳定性较高,不易出现过拟合问题等特点。
文章通过2个回归问题的案例,比较神经网络和RF算法在回归问题中的区别,为研究2种算法在回归问题中的应用提供参考。
关键词:人工神经网络;随机森林;重要性评价;回归问题;机器学习中图分类号:TP391.77; ; ; 文献标志码:A 文章编号:2095-2945(2019)10-0031-03Abstract: The machine learning method is widely used in regression. Artificial neural network (ANN) and random forest (RF) are classical machine learning algorithms widely applied in regression problems. Both neural network and RF algorithm are extensions of decision tree algorithm, and both of them have good accuracy in solving regression problems. ANN is a classical machine learning algorithm which can be widely used in various disciplines, RF algorithm has the advantages of clear structure, easy interpretation, high running efficiency and low data requirements, and the RF model has high stability. It is not easy to have the characteristics of over-fitting problem and so on. In this paper, two cases of regression problems are used to compare the difference between neural network and RF algorithm in regression problems, which provides a reference for the study of the application of the two algorithms in regression problems.Keywords: artificial neural network; stochastic forest; importance evaluation; regression problem; machine learning1 概述随着计算机和信息技术不断地发展,大数据的到来使机器学习算法成为解决实际问题的重要工具,对于机器学习算法的研究也成为了热门的研究方向。
Python利用神经网络解决非线性回归问题实例详解
Python利⽤神经⽹络解决⾮线性回归问题实例详解本⽂实例讲述了Python利⽤神经⽹络解决⾮线性回归问题。
分享给⼤家供⼤家参考,具体如下:问题描述现在我们通常使⽤神经⽹络进⾏分类,但是有时我们也会进⾏回归分析。
如本⽂的问题:我们知道⼀个⽣物体内的原始有毒物质的量,然后对这个⽣物体进⾏治疗,向其体内注射⼀个物质,过⼀段时间后重新测量这个⽣物体内有毒物质量的多少。
因此,问题中有两个输⼊,都是标量数据,分别为有毒物质的量和注射物质的量,⼀个输出,也就是注射治疗物质后⼀段时间⽣物体的有毒物质的量。
数据如下图:其中Dose of Mycotoxins 就是有毒物质,Dose of QCT就是治疗的药物。
其中蓝⾊底纹的数字就是输出结果。
⼀些说明由于本⽂是进⾏回归分析,所以最后⼀层不进⾏激活,⽽直接输出。
本⽂程序使⽤sigmoid函数进⾏激活。
本⽂程序要求程序有⼀定的可重复性,隐含层可以指定。
另外,注意到本⽂将使⽤数据预处理,也就是将数据减去均值再除以⽅差,否则使⽤sigmoid将会导致梯度消失。
因为数据⽐较⼤,⽐如200,这时输⼊200,当sigmoid函数的梯度就是接近于0了。
与此同时,我们在每⼀次激活前都进⾏BN处理,也就是batch normalize,中⽂可以翻译成规范化。
否则也会导致梯度消失的问题。
与预处理情况相同。
程序程序包括两部分,⼀部分是模型框架,⼀个是训练模型第⼀部分:# coding=utf-8import numpy as npdef basic_forard(x, w, b):x = x.reshape(x.shape[0], -1)out = np.dot(x, w) + bcache = (x, w, b)return out, cachedef basic_backward(dout, cache):x, w, b = cachedout = np.array(dout)dx = np.dot(dout, w.T)# dx = np.reshape(dx, x.shape)# x = x.reshape(x.shape[0], -1)dw = np.dot(x.T, dout)db = np.reshape(np.sum(dout, axis=0), b.shape)return dx, dw, dbdef batchnorm_forward(x, gamma, beta, bn_param):mode = bn_param['mode']eps = bn_param.get('eps', 1e-5)momentum = bn_param.get('momentum', 0.9)N, D = x.shaperunning_mean = bn_param.get('running_mean', np.zeros(D, dtype=x.dtype))running_var = bn_param.get('running_var', np.zeros(D, dtype=x.dtype))out, cache = None, Noneif mode == 'train':sample_mean = np.mean(x, axis=0)sample_var = np.var(x, axis=0)x_hat = (x - sample_mean) / (np.sqrt(sample_var + eps))out = gamma * x_hat + betacache = (gamma, x, sample_mean, sample_var, eps, x_hat)running_mean = momentum * running_mean + (1 - momentum) * sample_meanrunning_var = momentum * running_var + (1 - momentum) * sample_varelif mode == 'test':scale = gamma / (np.sqrt(running_var + eps))out = x * scale + (beta - running_mean * scale)else:raise ValueError('Invalid forward batchnorm mode "%s"' % mode)bn_param['running_mean'] = running_meanbn_param['running_var'] = running_varreturn out, cachedef batchnorm_backward(dout, cache):gamma, x, u_b, sigma_squared_b, eps, x_hat = cacheN = x.shape[0]dx_1 = gamma * doutdx_2_b = np.sum((x - u_b) * dx_1, axis=0)dx_2_a = ((sigma_squared_b + eps) ** -0.5) * dx_1dx_3_b = (-0.5) * ((sigma_squared_b + eps) ** -1.5) * dx_2_bdx_4_b = dx_3_b * 1dx_5_b = np.ones_like(x) / N * dx_4_bdx_6_b = 2 * (x - u_b) * dx_5_bdx_7_a = dx_6_b * 1 + dx_2_a * 1dx_7_b = dx_6_b * 1 + dx_2_a * 1dx_8_b = -1 * np.sum(dx_7_b, axis=0)dx_9_b = np.ones_like(x) / N * dx_8_bdx_10 = dx_9_b + dx_7_adgamma = np.sum(x_hat * dout, axis=0)dbeta = np.sum(dout, axis=0)dx = dx_10return dx, dgamma, dbeta# def relu_forward(x):# out = None# out = np.maximum(0,x)# cache = x# return out, cache### def relu_backward(dout, cache):# dx, x = None, cache# dx = (x >= 0) * dout# return dxdef sigmoid_forward(x):x = x.reshape(x.shape[0], -1)out = 1 / (1 + np.exp(-1 * x))cache = outreturn out, cachedef sigmoid_backward(dout, cache):out = cachedx = out * (1 - out)dx *= doutreturn dxdef basic_sigmoid_forward(x, w, b):basic_out, basic_cache = basic_forard(x, w, b)sigmoid_out, sigmoid_cache = sigmoid_forward(basic_out)cache = (basic_cache, sigmoid_cache)return sigmoid_out, cache# def basic_relu_forward(x, w, b):# basic_out, basic_cache = basic_forard(x, w, b)# relu_out, relu_cache = relu_forward(basic_out)# cache = (basic_cache, relu_cache)## return relu_out, cachedef basic_sigmoid_backward(dout, cache):basic_cache, sigmoid_cache = cachedx_sigmoid = sigmoid_backward(dout, sigmoid_cache)dx, dw, db = basic_backward(dx_sigmoid, basic_cache)return dx, dw, db# def basic_relu_backward(dout, cache):# basic_cache, relu_cache = cache# dx_relu = relu_backward(dout, relu_cache)# dx, dw, db = basic_backward(dx_relu, basic_cache)## return dx, dw, dbdef mean_square_error(x, y):x = np.ravel(x)loss = 0.5 * np.sum(np.square(y - x)) / x.shape[0]dx = (x - y).reshape(-1, 1)return loss, dxclass muliti_layer_net(object):def __init__(self, hidden_dim, input_dim=2, num_classes=2, weight_scale=0.01, dtype=np.float32, seed=None, reg=0.0, use_batchnorm=True): self.num_layers = 1 + len(hidden_dim)self.dtype = dtypeself.reg = regself.params = {}self.weight_scale = weight_scalee_batchnorm = use_batchnorm# init all parameterslayers_dims = [input_dim] + hidden_dim + [num_classes]for i in range(self.num_layers):self.params['W' + str(i + 1)] = np.random.randn(layers_dims[i], layers_dims[i + 1]) * self.weight_scaleself.params['b' + str(i + 1)] = np.zeros((1, layers_dims[i + 1]))if e_batchnorm and i < (self.num_layers - 1):self.params['gamma' + str(i + 1)] = np.ones((1, layers_dims[i + 1]))self.params['beta' + str(i + 1)] = np.zeros((1, layers_dims[i + 1]))self.bn_params = [] # listif e_batchnorm:self.bn_params = [{'mode': 'train'} for i in range(self.num_layers - 1)]def loss(self, X, y=None):X = X.astype(self.dtype)mode = 'test' if y is None else 'train'# compute the forward data and cachebasic_sigmoid_cache = {}layer_out = {}layer_out[0] = Xout_basic_forward, cache_basic_forward = {}, {}out_bn, cache_bn = {}, {}out_sigmoid_forward, cache_sigmoid_forward = {}, {}for lay in range(self.num_layers - 1):# print('lay: %f' % lay)W = self.params['W' + str(lay + 1)]b = self.params['b' + str(lay + 1)]if e_batchnorm:gamma, beta = self.params['gamma' + str(lay + 1)], self.params['beta' + str(lay + 1)]out_basic_forward[lay], cache_basic_forward[lay] = basic_forard(np.array(layer_out[lay]), W, b)out_bn[lay], cache_bn[lay] = batchnorm_forward(np.array(out_basic_forward[lay]), gamma, beta, self.bn_params[lay])layer_out[lay + 1], cache_sigmoid_forward[lay] = sigmoid_forward(np.array(out_bn[lay]))# = out_sigmoid_forward[lay]else:layer_out[lay+1], basic_sigmoid_cache[lay] = basic_sigmoid_forward(layer_out[lay], W, b)score, basic_cache = basic_forard(layer_out[self.num_layers-1], self.params['W' + str(self.num_layers)], self.params['b' + str(self.num_layers)]) # print('Congratulations: Loss is computed successfully!')if mode == 'test':return score# compute the gradientgrads = {}loss, dscore = mean_square_error(score, y)dx, dw, db = basic_backward(dscore, basic_cache)grads['W' + str(self.num_layers)] = dw + self.reg * self.params['W' + str(self.num_layers)]grads['b' + str(self.num_layers)] = dbloss += 0.5 * self.reg * np.sum(self.params['W' + str(self.num_layers)] * self.params['b' + str(self.num_layers)])dbn, dsigmoid = {}, {}for index in range(self.num_layers - 1):lay = self.num_layers - 1 - index - 1loss += 0.5 * self.reg * np.sum(self.params['W' + str(lay + 1)] * self.params['b' + str(lay + 1)])if e_batchnorm:dsigmoid[lay] = sigmoid_backward(dx, cache_sigmoid_forward[lay])dbn[lay], grads['gamma' + str(lay + 1)], grads['beta' + str(lay + 1)] = batchnorm_backward(dsigmoid[lay], cache_bn[lay])dx, grads['W' + str(lay + 1)], grads['b' + str(lay + 1)] = basic_backward(dbn[lay], cache_basic_forward[lay])else:dx, dw, db = basic_sigmoid_backward(dx, basic_sigmoid_cache[lay])for lay in range(self.num_layers):grads['W' + str(lay + 1)] += self.reg * self.params['W' + str(lay + 1)]return loss, gradsdef sgd_momentum(w, dw, config=None):if config is None: config = {}config.setdefault('learning_rate', 1e-2)config.setdefault('momentum', 0.9)v = config.get('velocity', np.zeros_like(w))v = config['momentum'] * v - config['learning_rate'] * dwnext_w = w + vconfig['velocity'] = vreturn next_w, configclass Solver(object):def __init__(self, model, data, **kwargs):self.model = modelself.X_train = data['X_train']self.y_train = data['y_train']self.X_val = data['X_val']self.y_val = data['y_val']self.update_rule = kwargs.pop('update_rule', 'sgd_momentum')self.optim_config = kwargs.pop('optim_config', {})self.lr_decay = kwargs.pop('lr_decay', 1.0)self.batch_size = kwargs.pop('batch_size', 100)self.num_epochs = kwargs.pop('num_epochs', 10)self.weight_scale = kwargs.pop('weight_scale', 0.01)self.print_every = kwargs.pop('print_every', 10)self.verbose = kwargs.pop('verbose', True)if len(kwargs) > 0:extra = ', '.join('"%s"' % k for k in kwargs.keys())raise ValueError('Unrecognized argements %s' % extra)self._reset()def _reset(self):self.epoch = 100self.best_val_acc = 0self.best_params = {}self.loss_history = []self.train_acc_history = []self.val_acc_history = []self.optim_configs = {}for p in self.model.params:d = {k: v for k, v in self.optim_config.items()}self.optim_configs[p] = ddef _step(self):loss, grads = self.model.loss(self.X_train, self.y_train)self.loss_history.append(loss)for p, w in self.model.params.items():dw = grads[p]config = self.optim_configs[p]next_w, next_config = sgd_momentum(w, dw, config)self.model.params[p] = next_wself.optim_configs[p] = next_configreturn lossdef train(self):min_loss = 100000000num_train = self.X_train.shape[0]iterations_per_epoch = max(num_train / self.batch_size, 1)num_iterations = self.num_epochs * iterations_per_epochfor t in range(int(num_iterations)):loss = self._step()if self.verbose:# print(self.loss_history[-1])passif loss < min_loss:min_loss = lossfor k, v in self.model.params.items():self.best_params[k] = v.copy()self.model.params = self.best_params第⼆部分import numpy as np# import datadose_QCT = np.array([0, 5, 10, 20])mean_QCT, std_QCT = np.mean(dose_QCT), np.std(dose_QCT)dose_QCT = (dose_QCT - mean_QCT ) / std_QCTdose_toxins = np.array([0, 0.78125, 1.5625, 3.125, 6.25, 12.5, 25, 50, 100, 200])mean_toxins, std_toxins = np.mean(dose_toxins), np.std(dose_toxins)dose_toxins = (dose_toxins - mean_toxins ) / std_toxinsresult = np.array([[0, 4.037, 7.148, 12.442, 18.547, 25.711, 34.773, 62.960, 73.363, 77.878], [0, 2.552, 4.725, 8.745, 14.436, 21.066, 29.509, 55.722, 65.976, 72.426],[0, 1.207, 2.252, 4.037, 7.148, 11.442, 17.136, 34.121, 48.016, 60.865],[0, 0.663, 1.207, 2.157, 3.601, 5.615, 8.251, 19.558, 33.847, 45.154]])mean_result, std_result = np.mean(result), np.std(result)result = (result - mean_result ) / std_result# create the train datatrain_x, train_y = [], []for i,qct in enumerate(dose_QCT):for j,toxin in enumerate(dose_toxins):x = [qct, toxin]y = result[i, j]train_x.append(x)train_y.append(y)train_x = np.array(train_x)train_y = np.array(train_y)print(train_x.shape)print(train_y.shape)import layers_regressionsmall_data = {'X_train': train_x,'y_train': train_y,'X_val': train_x,'y_val': train_y,}batch_size = train_x.shape[0]learning_rate = 0.002reg = 0model = layers_regression.muliti_layer_net(hidden_dim=[5,5], input_dim=2, num_classes=1, reg=reg, dtype=np.float64)solver = layers_regression.Solver(model, small_data, print_every=0, num_epochs=50000, batch_size=batch_size, weight_scale=1, update_rule='sgd_momentum', optim_config={'learning_rate': learning_rate})print('Please wait several minutes!')solver.train()# print(model.params)best_model = modelprint('Train process is finised')import matplotlib.pyplot as plt# %matplotlib inlineplt.plot(solver.loss_history, '.')plt.title('Training loss history')plt.xlabel('Iteration')plt.ylabel('Training loss')plt.show()# predict the training_datapredict = best_model.loss(train_x)predict = np.round(predict * std_result + mean_result, 1)print('Predict is ')print('{}'.format(predict.reshape(4, 10)))# print('{}'.format(predict))# observe the error between the predict after training with ground truthresult = np.array([[0, 4.037, 7.148, 12.442, 18.547, 25.711, 34.773, 62.960, 73.363, 77.878],[0, 2.552, 4.725, 8.745, 14.436, 21.066, 29.509, 55.722, 65.976, 72.426],[0, 1.207, 2.252, 4.037, 7.148, 11.442, 17.136, 34.121, 48.016, 60.865],[0, 0.663, 1.207, 2.157, 3.601, 5.615, 8.251, 19.558, 33.847, 45.154]])result = result.reshape(4, 10)predict = predict.reshape(4, 10)error = np.round(result - predict, 2)print('error between predict and real data')print(error)print('The absulate error in all data is %f' % np.sum(np.abs(error)))print('The mean error in all data is %f' % np.mean(np.abs(error)))# figure the predict map in 3Dx_1 = (np.arange(0, 20, 0.1) - mean_QCT) / std_QCTx_2 = (np.arange(0, 200, 1) - mean_toxins) / std_toxinsx_test = np.zeros((len(x_1)*len(x_2), 2))index = 0for i in range(len(x_1)):for j in range(len(x_2)):x_test[int(index), 0] = x_1[int(i)]x_test[int(index), 1] = x_2[int(j)]index += 1test_pred = best_model.loss(x_test)predict = np.round(test_pred * std_result + mean_result, 3)from mpl_toolkits.mplot3d import Axes3Dx_1, x_2 = np.meshgrid(x_1 * std_QCT + mean_QCT, x_2 * std_toxins + mean_toxins)figure = plt.figure()ax = Axes3D(figure)predict = predict.reshape(len(x_1), len(x_2))ax.plot_surface(x_1, x_2, predict, rstride=1, cstride=1, cmap='rainbow')plt.show()# 最后本⽂将进⾏⼀些预测,但预测效果不是很好# question 2: predict with givendose_QCT_predict = np.ravel(np.array([7.5, 15]))dose_QCT_predict_ = (dose_QCT_predict - mean_QCT)/ std_QCTdose_toxins_predict = np.array([0, 0.78125, 1.5625, 3.125, 6.25, 12.5, 25, 50, 100, 200])dose_toxins_predict_ = (dose_toxins_predict - mean_toxins) / std_toxinstest = []for i,qct in enumerate(dose_QCT_predict):for j,toxin in enumerate(dose_toxins_predict):x = [qct, toxin]test.append(x)test = np.array(test)print('Please look at the test data:')print(test)test = []for i,qct in enumerate(dose_QCT_predict_):for j,toxin in enumerate(dose_toxins_predict_):x = [qct, toxin]test.append(x)test = np.array(test)test_pred = best_model.loss(test)predict = np.round(test_pred * std_result + mean_result, 1)print(predict.reshape(2, 10))更多关于Python相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》希望本⽂所述对⼤家Python程序设计有所帮助。
基于GA-BP神经网络的非线性模拟量回归
㊀2021年㊀第1期仪表技术与传感器Instrument㊀Technique㊀and㊀Sensor2021㊀No 1㊀基金项目:国家自然科学基金项目(61672369)收稿日期:2020-01-13基于GA-BP神经网络的非线性模拟量回归周㊀欣,王宜怀,姚望舒,葛新越(苏州大学计算机科学与技术学院,江苏苏州㊀215006)㊀㊀摘要:针对嵌入式系统中传感器测量模拟量与采样值之间的非线性关系难以找寻确定公式进行表达的问题,提出使用BP神经网络对非线性模拟量进行回归拟合㊂并针对BP神经网络易陷入局部极小值的缺陷,采用遗传算法进行优化㊂实验表明,与最小二乘法与三次样条插值法相比,BP神经网络对曲线拟合程度优于其余两种方法,且具有较高的准确度㊂遗传算法优化后的BP神经网络,能够更加快速收敛,准确度也进一步提升㊂同时将网络模型应用在MCU端,实现在MCU端的预测与参数更新,具有一定的实用性和适应性㊂关键词:嵌入式系统;模拟量;非线性;回归拟合;BP神经网络;遗传算法中图分类号:TP273㊀㊀㊀文献标识码:A㊀㊀㊀文章编号:1002-1841(2021)01-0084-05NonlinearAnalogRegressionBasedonGA-BPNeuralNetworkZHOUXin,WANGYi⁃huai,YAOWang⁃shu,GEXin⁃yue(SchoolofComputerScienceandTechnology,SoochowUniversity,Suzhou215006,China)Abstract:Aimingattheproblemthatthenon⁃linearrelationshipbetweentheanalogquantitymeasuredbythesensorandthesampledvalueintheembeddedsystemwasdifficulttofindacertainformulatoexpress,aregressionfittingusingBPneuralnet⁃workwasproposed.AndinordertosolvetheproblemthattheBPneuralnetworkiseasytofallintothelocalminimum,thegeneticalgorithmwasusedforoptimization.Experimentsshowthatcomparedwiththetraditionalleastsquaremethodandcubicsplinein⁃terpolationmethod,theBPneuralnetworkwasbetterthantheothertwomethodsincurvefitting,andhashigheraccuracy.Andthegeneticalgorithm⁃optimizedBPneuralnetworkcanconvergemorequicklyandtheaccuracywasfurtherimproved.AndapplyingthenetworkmodeltotheMCUtoachievepredictionandparameterupdateontheMCUhascertainpracticalityandadaptability.Keywords:embeddedsystem;analog;nonlinear;regressionfitting;BPneuralnetwork;geneticalgorithm0㊀引言在嵌入式测控系统中,控制终端通过传感器对外界信息进行检测,经由放大电路㊁模数转换模块(analogtodigitalconvertmodule,A/D转换模块)等,转换成能被终端识别的数字信号(又称为A/D值)㊂为便于测控系统使用,需将A/D值与实际外界信息对应,此对应过程可称之为物理量回归㊂目前常见的物理量回归方法[1]有公式法,查表法,分段直线法,最小二乘法及三次样条插值法等㊂但受采样过程中传感器自身采样特性,放大电路与A/D转换模块转换过程中所具有的非线性变换等因素的影响,待回归A/D值与回归后的物理量之间成非线性关系㊂上述方法虽可用于解决物理量回归问题,但存在一定的缺陷㊂如公式法利用固定数字公式进行转换,速度快,但准确度不高;查表法根据输入输出表格进行查找,占用空间过大;分段直线法的分段越多,精度越高,但其复杂性也不断增加;而最小二乘法和三次样条插值法是通过采样数据确定相应的匹配函数,针对不同情况需重新确认公式,且非线性关系较为复杂,不易确定合适公式㊂针对上述情况,本文提出以A/D值作为输入,传感器测量的实际模拟量作为输出,使用BP神经网络进行回归拟合㊂并针对BP神经网络易陷入局部极小值的问题,选择使用遗传算法进行参数优化㊂将遗传算法优化后的BP神经网络与最小二乘法㊁三次样条插值法及传统BP神经网络进行比较,实验表明,通过GA-BP算法能够有效的提高物理量回归的精度㊂同时提出一种回归模型在MCU端应用的方法,该方法能够较好地在MCU进行物理量回归及参数更新,具有一定的实用性和适应性㊂1㊀GA-BP神经网络回归模型1.1㊀BP神经网络反向传播(backpropagation,BP)学习算法,是一㊀㊀㊀㊀㊀第1期周欣等:基于GA-BP神经网络的非线性模拟量回归85㊀㊀种基于误差反向传播的前向多层反馈的人工神经网络算法㊂通过梯度下降法,寻找实际输出值和目标值之间误差平方的极小值,从而对网络的连接权值进行调整,达到在调整过的网络模型中,对于每一组输入都能得到期望输出的目的[2]㊂以A/D值作为输入,传感器测量模拟量作为输出,可构建单输入输出的神经网络模型㊂理论与实践表明,含有一个隐藏层的BP神经网络具有逼近任何闭区间内一个连续函数的能力[3],因此使用3层神经网络模型进行训练和预测㊂其3层BP神经网络模型如图1所示㊂图1㊀BP神经网络模型在此网络模型中,设训练样例个数为D,网络由1个输入层单元,Q个隐藏层单元,1个输出层单元构成㊂输入层仅进行数据的输入,表示为ad=X,d=1,2,3, ,D为训练样本编号㊂隐藏层使用sigmoid函数作为激活函数,提供非线性变换过程,其输出为hdi=sig(wiad+oi)(1)式中:wi为输入层与隐藏层之间的权值;oi为输入层与输出层的权值,i=1,2,3, ,Q为隐藏层单元数㊂输出层同样使用sigmoid函数,其输出为Y=yd=sig(ðQivihdi+r)(2)式中:r为隐藏层与输出层的阈值;vi为隐藏层节点与输出节点的权值,i=1,2,3, ,Q为隐藏层单元数㊂1.2㊀遗传算法遗传算法(geneticalgorithm,GA)是一种模拟自然生存和遗传机制的最优解搜索算法[4]㊂通过选择㊁交叉和变异对种群进行多次迭代优化,选择符合当前问题的最优解,其进化过程如图2所示㊂图2㊀遗传算法种群进化过程该算法提供了一种求解复杂系统问题的通用框架,其全局搜索策略和优化搜索方法的计算不依赖问题的具体领域,只需要确定影响搜索方向的目标函数和适应度函数,便可以实现最优解搜索㊂1.3㊀GA-BP神经网络算法流程针对传统BP神经网络训练过程易陷入局部极小值的问题,使用遗传算法进行优化㊂将随机生成的初始权值与阈值作为种群的个体,经遗传算法筛选出较为合适的解作为BP神经网络的权值与阈值;由BP神经网络模型进行权值与阈值的进一步调整,得到能够较好反映输入输出非线性关系的训练模型,其训练过程如图3所示㊂图3㊀GA-BP神经网络训练过程其具体执行步骤如下:(1)训练样本归一化㊂使用最大最小值归一化对训练样本进行数据压缩,保留数据特性的同时,加快训练速度㊂(2)确定网络拓扑结构㊂根据训练样本确定隐藏层单元数㊁学习速率与激活函数等网络参数,生成相应的网络拓扑结构㊂(3)生成初始种群㊂随机生成权值与阈值的初始值,并将其作为种群的个体,进行实数编码㊂(4)计算适应度㊂适应度函数为㊀㊀㊀㊀㊀86㊀InstrumentTechniqueandSensorJan 2021㊀f=1E(3)式中:E为遗传算法的目标函数,是BP神经网络训练后实际输出值和目标值之间误差平方和㊂(5)选择父代㊂按适应度大小对个体进行排序,并使用赌轮盘算法[5]筛选出2个个体作为父代㊂(6)随机交叉㊂父代以每层网络的权值与阈值作为基因,采用随机交叉算法,对基因进行组合生成新的子代㊂(7)变异㊂生成子代中,存在一部分个体发生变异,变异概率为0.01㊂变异个体的权值和阈值将重新赋值,生成新的基因㊂(8)是否满足停止条件㊂在不满足停止条件时,从原始种群中选择部分适应度高的个体与新生成子代组成新的种群,重复(4) (7)的步骤继续求解满足情况的权值与阈值㊂(9)权值与阈值的赋值㊂将遗传算法求解的权值与阈值赋值给BP神经网络,通过网络训练进一步实现参数的更新㊂(10)权值与阈值的更新㊂通过网络训练比较全局误差极小值[6]来判断是否生成满足需求的权值与阈值,并使用误差反向传播方法对权值与阈值进行更新,直到满足目标训练次数或目标误差㊂(11)模型生成㊂保存最终权值与阈值及相关参数,生成相应的回归模型㊂2㊀GA-BP的非线性回归实验分析2.1㊀数据的获取本文针对传感器模拟量的非线性问题进行回归分析,故选择随光照强度变化,而阻值成非线性变化的光敏电阻获取训练样本㊂此处选用光敏电阻的型号为GM5506,其阻值随光照强度的升高而降低,使用如图4所示的采样电路,其对应电压范围为[0.55V(亮),3.28V(暗)],可测得[0lux,15000lux]区间内的光照强度㊂图4㊀光敏电阻采样电路控制终端的16位A/D模块与采样点连接,测试获得一组光照强度和对应A/D采样值的训练样本,该训练样本数据能够较好地涵盖测量范围及其变化情况,其数据如表1所示,其中1 18为训练数据,19 26为测试数据㊂表1㊀训练样本 光照强度与A/D值样本为了对不同方法进行比较,引入均方根误差与决定系数对预测效果进行评判㊂均方根误差(rootmeansquarederror,RMSE)计算观测值与真实值之间的偏差,其值越小,预测效果越好㊂RMSE(o,t)=1N-2ðNi=1(o-t)2(4)式中:o为观测值;t为真实值㊂实际使用中使用RMSE/o(o为输出均值)进行判断㊂决定系数又称为拟合优度,通常使用R表示,反映的是回归的拟合程度,其值越大,拟合程度越好,预测性能也就越优㊂R=1-ð(o-t)2ð(o-o)2(5)2.3㊀实验方案与结果本文实验模型使用C#语言编程实现,具有训练与验证功能㊂通过对模型的分析可知,其输入与输出神经元个数均为1㊂采用sigmoid型函数作为激活函数的神经网络具有对任意连续函数的逼近能力[7],故选取sigmoid函数作为激活函数,使用梯度下降法进行权值与阈值的更新㊂隐藏层单元个数的范围可依据经验公式[8]计算得出:q=p+m+α(6)式中:q为隐藏层单元数;p为输入层单元数;m为输出㊀㊀㊀㊀㊀第1期周欣等:基于GA-BP神经网络的非线性模拟量回归87㊀㊀层单元数;α为1 10之间的常数㊂对于回归模型,其隐藏层单元数范围在3 11之间㊂经多次实验验证得出隐藏层单元数为8时,具有更好的拟合效果㊂设定学习速率为0.1,目标误差精度为0.000001,初始权值和阈值随机生成㊂在此网络结构基础上,使用遗传算法对初始权值与阈值进行优化,初始种群大小为100,变异概率为0.01,迭代次数为1000㊂在上述网络中,使用样本中的训练数据进行训练,得到对应的权值与阈值参数如表2所示㊂表2㊀BP神经网络各层参数输入层与隐藏层权值wi输入层与隐藏层阈值oi隐藏层与输出层权值vi隐藏层与输出层阈值r68.8104866010556-0.66003077579745746.73321813933922.73067762764518-1.4613382643164-11.854879783609389.3053999526315-2.42689739802703-21.109017087818332.33091647935413.4269637209893419.160911532471432.730230400004621.01962240528156.16027469240735-2.2545600648712518.74721332834160.161949852000884-6.84377968780148172.0503307777850.950824710764604-70.225607384132317.12623727885054.721111751110490.825034658531259㊀㊀权值与阈值以及网络相关参数共同构成一个GA-BP网络模型㊂使用该网络模型对测试数据进行验证分析,由表3可以看出,光照强度的预测值与实际值误差基本能控制在可接受范围以内㊂表3㊀测试样例输出测试A/D目标输出实际输出误差504592.42.10.3370078.99.70.82504243.444.10.716452127.2126.90.311369261.3260.50.88036501.6500.61.043881159.21158.40.8111712924.512925.00.52.4㊀方法对比2.4.1㊀传统方法与神经网络的对比传统的非线性回归方法有最小二乘法和三次样条插值法㊂最小二乘法通过最小化误差平方和找寻最佳函数匹配[9],三次样条插值法通过三弯矩法并结合边界条件推导系数方程确定对应的回归函数[10],实际是在相邻数据点之间确定一个三次样条函数㊂针对本文使用的训练样本,使用最小二乘法和三次样条插值法进行回归拟合,并使用测试样例与BP神经网络进行验证对比,图5给出各方法的预测结果的回归曲线,并列出各方法的均方根误差和决定系数,如表4所示㊂图5㊀光照强度与A/D值的物理量回归曲线表4㊀传统方法与神经网络的对比回归方法RRMSE最小二乘法0.964970.83197三次样条插值0.971050.75750BP神经网络0.997250.23508㊀㊀综合图5和表4可以看出BP神经网络的预测准确度优于其余2种方法㊂最小二乘法与三次样条插值法的拟合是确定具体公式及其系数,BP神经网络确定网络相关参数㊂3种方法在回归形式上存在一定的区别,但都可转换为使用一定的回归公式进行回归预测㊂不同在于对不同的训练样本,最小二乘法与三次样条插值法需要重新确认公式,而BP神经网络模型的回归公式可不改变,仅需校正权值与阈值㊂同时BP神经网络可以通过不断提升训练次数来减小误差,达到更好的拟合效果,是一种具有较好拟合能力的非线性回归方法㊂2.4.2㊀BP神经网络优化对比由上述对比实验可知,BP神经网络对于传感器㊀㊀㊀㊀㊀88㊀InstrumentTechniqueandSensorJan 2021㊀模拟量的非线性回归问题具有较好的拟合能力㊂但BP神经网络存在易陷入局部极小值的特点,针对此问题使用遗传算法进行优化㊂分别记录下BP神经网络与GA-BP神经网络训练过程中每10000次训练实际值与目标值之间的误差平方和,绘制成如图6所示的曲线㊂并计算相应的均方根误差和决定系数,如表5所示㊂图6㊀GA-BP与BP误差状态表5㊀GA-BP与BP对比回归方法RRMSEBP神经网络0.997250.23508GA-BP神经网络0.999220.12553㊀㊀从图6可以看出,GA-BP神经网络模型在训练过程中的收敛速度明显优于传统BP神经网络㊂同时结合表5可以看出,在训练相同次数的情况下对GA-BP的拟合程度优于传统BP算法,具有更好的预测准确度㊂3㊀BP神经网络在MCU上的应用模型训练过程在PC端完成,而生成的网络模型则应用于MCU端㊂图7为训练模型在MCU端的应用过程㊂针对上述流程,将BP神经网络在MCU端回归预测功能封装成构件,构件中各函数及功能如表6所示㊂按图8所示的结构类型将网络参数存储在固定Flash区域;芯片启动后,使用BPinit函数读取位于Flash区域的存储参数,构建神经网络模型;实时使用A/D转换模块读取传感器A/D采样值后,利用BPpre⁃dict函数进行转换到传感器的实际输出值;同时包含参数更新功能,当计算结果存在误差时,可重新采集训练样本在PC端训练,并将训练结果利用BPUpdate函数将网络模型重新写入相应Flash区域㊂以MKL36Z64[11](简称KL36)芯片和S32K144[12](简称S32K)芯片为例进行MCU端预测实验㊂KL36属于ARMCortex-M0+内核,其对应的Flash为64KB,图7㊀神经网络在MCU端应用表6㊀BP神经网络预测构件函数名称功能BPinitBP网络模型初始化读取位于Flash的参数,并生成网络模型BPpredict预测函数A/D值回归预测BPUpdate参数更新解析更新后的参数并重新写入FlashRAM大小为8KB;而S32K属于ARMCortex-M4内核,其对应的Flash为512KB,RAM大小为60KB;其内置A/D转换模块精度均为16位㊂使用该构件进行光照强度的采样与回归,在KL36与S32K上均能按照如图7所示的流程进行回归预测㊂图8㊀网络参数存储结构体4㊀结束语本文针对非线性传感器A/D值与模拟量之间存在的非线性关系难以确定回归公式进行表达的问题,提出使用BP神经网络对传感器A/D值与模拟量进行回归拟合㊂实验表明,使用BP神经网络能够对两者之间的非线性关系进行良好表达,和最小二乘法与三次样条插值法相比,BP神经网络的拟合程度明显优于其余2种方法,具有较高的准确(下转第101页)㊀㊀㊀㊀㊀第1期陶洋等:基于稀疏自编码器的传感器在线漂移补偿算法101㊀㊀[3]㊀裴高璞,史波林,赵镭,等.典型掺假蜂蜜的电子鼻信息变化特征及判别能力[J].农业工程学报,2015,31(S1):325-331.[4]㊀孙皓.面向伤口感染检测的电子鼻传感器阵列构建与优化研究[D].重庆:重庆大学,2017.[5]㊀ZHANGL,ZHAGND.DomainadaptationextremelearningmachinesfordriftcompensationinE⁃nosesystems[J].IEEEtransactionsoninstrumentationandmeasurement,2014,64(7):1790-1801.[6]㊀GONGB,SHIY,SHAF,etal.Geodesicflowkernelforun⁃superviseddomainadaptation[C]//2012IEEEConferenceonComputerVisionandPatternRecognition.RhodeIsland:IEEE,2012:2066-2073.[7]㊀CUIZ,LIW,XUD,etal.Flowingonriemannianmanifold:domainadaptationbyshiftingcovariance[J].IEEEtransac⁃tionsoncybernetics,2014,44(12):2264-2273.[8]㊀ZHANGL,LIUY,HEZ,etal.Anti⁃driftinE⁃nose:Asub⁃spaceprojectionapproachwithdriftreduction[J].SensorsandActuatorsB:Chemical,2017,253:407-417.[9]㊀UZAIRM,MIANA.Blinddomainadaptationwithaugmentedextremelearningmachinefeatures[J].IEEEtransactionsoncybernetics,2016,47(3):651-660.[10]㊀RUMELHARTDE,HINTONGE,WILLIAMSRJ.Learningrepresentationsbyback⁃propagatingerrors[J].Nature,1986,323(6088):533-536.[11]㊀JUY,GUOJ,LIUS.AdeeplearningmethodcombinedsparseautoencoderwithSVM[C]//2015InternationalConferenceonCyber⁃EnabledDistributedComputingandKnowledgeDiscovery.Xi an:IEEE,2015:257-260.[12]㊀LUOW,YANGJ,XUW,etal.Locality⁃constrainedsparseauto⁃encoderforimageclassification[J].IEEESignalPro⁃cessingLetters,2014,22(8):1070-1073.[13]㊀VERGARAA,VEMBUS,AYHANT,etal.Chemicalgassensordriftcompensationusingclassifierensembles[J].SensorsandActuatorsB:Chemical,2012,166:320-329.作者简介:陶洋(1964 ),教授,硕士生导师,博士后,主要研究领域为机器学习,模式识别等㊂E⁃mail:cqtxrjyjs@126.com杨皓诚(1995 ),硕士研究生,主要研究领域为机器嗅觉,模式识别㊂E⁃mail:jackwilliam_yang@163.com(上接第88页)度,并能有效提升转换后的精度㊂而使用遗传算法优化后的GA-BP神经网络,能加快BP神经网络的收敛速度,回归的精度也进一步提升㊂同时提出一种在MCU端应用的方法,网络参数固化至MCU端存储,并利用BP神经网络构件实现在MCU的回归预测,具有一定的实用性和适应性㊂参考文献:[1]㊀陈韦名,曾喆昭,廖震中,等.一种湿度传感器温度补偿的非线性校正方法[J].传感技术学报,2017(5):742-745.[2]㊀焦李成,杨淑媛,刘芳.神经网络七十年:回顾与展望[J].计算机学报,2016,39(8):1697-1716.[3]㊀Hecht⁃NielsenR.TheoryoftheBackpropagationNeuralNet⁃work[C]//International1989JointConferenceonNeuralNetworks,Washington:IEEE,1989.[4]㊀梁丰,熊凌.基于GA-BP神经网络的移动机器人UWB室内定位[J].微电子学与计算机,2019,36(4):33-37.[5]㊀丛秋梅,张北伟,苑明哲.基于同步聚类的污水水质混合在线软测量方法[J].计算机工程与应用,2015,51(24):27-33.[6]㊀DINGS,SUC,YUJ.AnoptimizingBPneuralnetworkalgo⁃rithmbasedongeneticalgorithm[J].ArtificialIntelligenceReview,2011,36(2):153-162.[7]㊀ITOY.Approximaterepresentationofacontinuousfunctionbyaneuralnetworkwithscaledorunscaledsigmoidunits[C]//IJCNN-91-SeattleInternationalJointConferenceonNeuralNetworks,Seattle:IEEE,2002.[8]㊀NURYAH,HASANK,ALAMMJB.Comparativestudyofwavelet-ARIMAandwavelet-ANNmodelsfortemperaturetimeseriesdatainnortheasternBangladesh[J].JournalofKingSaudUniversity-Science,2017,29(1):47-61.[9]㊀田垅,刘宗田.最小二乘法分段直线拟合[J].计算机科学,2012,39(S6):482-484.[10]㊀王冰冰,李淮江.基于三次样条插值的硅压阻式压力传感器的温度补偿[J].传感技术学报,2015(7):61-65.[11]㊀NXP.KL36Sub⁃FamilyReferenceManual[EB/OL].(2013-07)[2019-10-13].https://www.nxp.com/docs/en/ref⁃erence⁃manual/KL36P121M48SF4RM.pdf.[12]㊀NXP.S32K1xxSeriesReferenceManual[EB/OL].(2019-06)[2019-11-04]https://www.nxp.com/docs/en/refer⁃ence⁃manual/S32K-RM.pdf.作者简介:周欣(1995 ),硕士研究生,主要从事嵌入式与物联网方面的研究㊂E⁃mail:20174227026@stu.suda.edu.cn王宜怀(1962 ),教授,博士生导师,主要从事嵌入式系统㊁传感网与智能控制技术方面的研究。
基于BP神经网络的非线性函数拟合——程序设计说明
基于BP神经网络的非线性函数拟合——程序设计说明程序设计说明:1.确定网络结构首先,需要确定BP神经网络的结构,包括输入层、隐藏层和输出层的节点数。
输入层的节点数由样本的特征数确定,隐藏层的节点数可以通过试验确定,输出层的节点数则由问题的要求确定。
2.初始化网络参数初始化网络的权值和偏置,可以使用随机数生成,初始值不能太大或太小。
权值和偏置的初始值会对模型的训练效果产生影响,一般可以根据问题的复杂程度来选择。
3.前向传播通过前向传播,将样本数据输入到神经网络中,并计算每个神经元的激活值。
激活函数可以选择Sigmoid函数或者ReLU函数等非线性函数。
4.计算误差5.反向传播通过反向传播,将误差从输出层向输入层传播,更新网络的权值和偏置。
反向传播的过程可以使用梯度下降法来更新网络参数。
6.训练网络7.测试网络使用未参与训练的样本数据测试网络的泛化能力,计算测试误差。
如果测试误差较小,说明网络能够较好地拟合非线性函数。
8.参数调优根据训练误差和测试误差结果,可以调整网络的参数,如学习率、隐藏层节点数等,以提高网络的训练效果和泛化能力。
9.反复训练和测试网络根据需要,反复进行训练和测试的过程,直至网络的训练误差和测试误差均满足要求。
这是一个基于BP神经网络的非线性函数拟合的程序设计说明,通过实现以上步骤,可以有效地进行非线性函数的拟合和预测。
在具体实现中,可以使用Python等编程语言和相应的神经网络框架,如TensorFlow、PyTorch等,来简化程序的编写和调试过程。
同时,为了提高程序的性能和效率,可以使用并行计算和GPU加速等技术。
基于径向基函数神经网络的非线性模型辨识
基于径向基函数神经⽹络的⾮线性模型辨识
基于径向基函数神经⽹络的⾮线性模型辨识
宋宜斌;王培进
【期刊名称】《计算机⼯程》
【年(卷),期】2004(030)005
【摘要】从径向基函数(RBF)神经⽹络原理分析出发,提出了⼀种基于RBF神经⽹络学习算法,⽤于对⾮线性对象模型的拟合与辨识,并将此⽅法⽤于实际⾮线性模型的学习与辨识.结果表明,基于RBF的神经⽹络可快速完成对样本的学习与拟合,对具有连续特性的线性与⾮线性模型,具有快速实时的学习速度和优良的学习性能.
【总页数】3页(142-143,169)
【关键词】RBF神经⽹络;⾮线性模型辨识;径向基函数
【作者】宋宜斌;王培进
【作者单位】烟台⼤学计算机学院,烟台,264005;烟台⼤学计算机学院,烟台,264005
【正⽂语种】中⽂
【中图分类】TP183
【相关⽂献】
1.基于径向基函数神经⽹络模型的砂⼟液化概率判别⽅法 [C], 陈国兴; 李⽅明
2.基于⼴义径向基函数神经⽹络的⾮线性时间序列预测器 [J], 张嵩; 汪元美
3.基于径向基函数神经⽹络的⾮线性系统预测控制 [J], 蔡宁; 李胜; 赵英凯
4.基于径向基函数神经⽹络的电容传感器⾮线性辨识 [J], 邹海荣
5.基于RBF神经⽹络的⽕电站机炉协调⾮线性模型辨识 [C], 彭道刚; 杨平; 王。
基于人工神经网络的电力设备状态评估
基于人工神经网络的电力设备状态评估随着电力设备的普及和电力行业的发展,电力设备的状态评估变得越来越重要。
传统的基于物理模型的评估方法需要大量的实验数据和理论知识,难以应对复杂的电力系统。
人工神经网络(Artificial Neural Network,ANN)作为一种有效的非线性建模工具,已经被广泛应用于电力设备状态评估领域。
本文将从理论、应用及发展趋势三个方面探讨基于人工神经网络的电力设备状态评估。
一、人工神经网络人工神经网络是一种基于生物学神经网络的数学模型,其主要应用于函数逼近、分类和模式识别等领域。
其模型结构由多个节点(又称神经元)组成,每个节点以非线性函数作为激活函数,可以对输入的数据进行处理和转换。
节点之间的连接权值可以通过训练算法进行调整,从而优化模型的预测精度。
人工神经网络的优点是具有很强的非线性映射和自适应能力,可以对数据进行高效的建模和预测。
二、基于人工神经网络的电力设备状态评估在电力设备状态评估中,人工神经网络可以应用于多种场景。
例如,对于发电机的状态评估,可以通过神经网络模型对发电机的电流和振动信号进行处理和分析,识别出磨损和过载等异常状态。
对于变压器和开关柜等设备的状态评估,则可以通过神经网络对温度、压力和湿度等传感器采集到的原始数据进行处理和分析,识别出设备的故障和预警信息。
在电力设备状态评估中,人工神经网络还可以结合其他技术进行综合分析。
例如,可以将传统的基于物理模型的方法和数据驱动的方法相结合,通过充分利用物理模型的先验知识和神经网络的非线性建模能力,提高状态评估的准确度和可靠性。
此外,也可以将神经网络与故障诊断技术相结合,通过对设备的故障模式进行分析和识别,推断出设备故障的原因和位置等信息,为设备的维护和修复提供有力的支持。
三、基于人工神经网络的电力设备状态评估的发展趋势随着大数据和人工智能技术的飞速发展,基于人工神经网络的电力设备状态评估将逐渐实现自动化和智能化。
基于人工神经网络的图像分割研究
基于人工神经网络的图像分割研究图像分割是计算机视觉领域的一个重要任务,它是将图像分成若干个不同的区域或物体的过程。
在自动化检测、医学影像诊断等方面都有广泛的应用。
近年来,人工神经网络在图像分割领域的应用得到了广泛的探讨和应用。
一、基本概念图像分割是指将一个 Digital Image 进行复杂操作,将其中的像素划分成若干组,每组与其他组之间差异较大,组内差异较小,常用来分离不同的目标、提取图像特征等。
神经网络是一个大型的非线性函数参数组,可对复杂的输入向量进行 non-smooth transform,继而映射到合适的输出空间, 并具有适应性和自学习能力。
神经网络是由大量神经元有机结合的网络,其中任何一个神经元都简单地完成输入和输出的映射。
图像分割中的神经网络即是一种基于神经元自学习、适应性的算法。
该算法将图像输入神经网络,对图像像素进行自适应学习,确定图像中不同物体的区域,实现图像分割。
二、经典算法1. 传统分割算法经典的图像分割算法包括阈值分割法、边缘分割法、区域分割法等。
阈值分割法根据图像像素的灰度值阈值将图像分成各个互不相交的区域。
它的优点是简单快速,但是不适用于复杂的图像。
边缘分割法则是根据边缘信息将图像分割成各个区域,它的优点是精度较高但是计算量大。
区域分割法则是根据图像的空间分布规律,将图像分成若干个区域。
2. 基于神经网络的分割算法基于神经网络的图像分割算法主要有BP神经网络、卷积神经网络、膨胀神经网络等。
其中,卷积神经网络(CNN)是应用最广泛的一种算法。
卷积神经网络是一种具有深度的神经网络,利用卷积层、池化层和全连接层等连接性结构对图像像素进行分割。
CNN的优点在于减少计算量、提高计算效率。
其核心思想是利用图像的局部空间关系,对图像进行卷积和池化处理,提取图像特征,再通过全连接层将特征图进行图像分割。
三、性能评价在图像分割领域,常用的性能评价指标有:精确度、召回率和F1度量。
基于非线性回归和BP神经网络的奥运会奖牌预测模型
基于非线性回归和BP神经网络的奥运会奖牌预测模型
王诗语
【期刊名称】《文体用品与科技》
【年(卷),期】2017(000)024
【摘要】本文通过考察各国上一届奖牌数、总人口、人均GDP、社会制度和东道主等5个因素对奥运奖牌获得能力的影响,并建立多元非线性回归模型,经参数优化获得最佳预测模型.同时在这些分类汇总数据的基础上,建立BP神经网络预测模型,最后实现对2020年东京奥运会奖牌榜前十位的预测.
【总页数】3页(P4-5,83)
【作者】王诗语
【作者单位】青岛经济技术开发区第一中学山东青岛 266580
【正文语种】中文
【中图分类】G80
【相关文献】
1.基于非线性回归和BP神经网络的交通事故时空影响预测模型
2.基于多元非线性回归和BP神经网络的长春花形态指标生长模型的比较
3.2022年北京冬奥会我国运动员奖牌预测与参赛策略——基于奥运会主场优势效应分析
4.基于多元非线性回归与BP神经网络模型对土壤水分蒸发量的预测
5.东京奥运会中国奖牌分布特征研究——基于项群训练理论
因版权原因,仅展示原文概要,查看原文内容请购买。
基于BP神经网络模型的股票价格研究
Finance金融视线 2018年3月029基于BP神经网络模型的股票价格研究北京交通大学经济管理学院 刘佳祺 刘德红 林甜甜摘 要:本文将BP神经网络模型与主成分分析法和遗传算法相结合,建立了预测股票价格变化的动态PCA-GA-BP模型。
该模型能改善BP神经网络模型运算速度缓慢和易陷入局部最小值的缺点,弥补传统股票价格预测方法的不足。
关键词:BP神经网络模型 主成分分析 遗传算法 PCA-GA-BP模型中图分类号:F832 文献标识码:A 文章编号:2096-0298(2018)03(b)-029-02股票的价格走势不仅可以从一定程度上体现宏观经济的发展状况,而且与每个投资者的经济利益相关,因此研究我国股票市场的可预测性非常有意义。
股票价格的预测方法主要分为两类:第一类是基于线性模型的传统统计经济学方法,第二类是采用人工神经网络模型的非线性方法。
然而股票市场是一个复杂的系统,它具有非结构性、非线性、高噪声的特性,使用传统的方法建立精确、有效的模型比较困难。
研究结果表明,BP 神经网络模型能有效地考虑到影响股票价格的各种非线性因素,在股市预测方面效率和精准度相对较高。
1 BP神经网络模型BP 神经网络是由Rumelhart 和McClelland 为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。
1.1 BP神经网络模型原理BP 神经网络模型主要包括三个部分,分别是输入层、隐含层和输出层如图1所示。
学习样本从输入层经各隐含层传向输出层,最终在输出层的各个神经元收到来自输入层的信息。
之后,系统以减少输出值与期望值的误差为目标,从输出层开始经过各个中间隐含层修正各连接权值,最后回到输入层。
随着这种修正传播的不断进行,网络调整权值直至误差达到理想值。
图1 BP神经网络结构1.2 BP神经网络模型优缺点首先,BP 神经网络模型具有非线性映射能力强、自适应性和自学习能力强、容错能力强等优点,能通过网络训练储存网络权值中的学习内容,较好地处理内部作用机制复杂的非线性函数,从而准确地预测数据。
基于BP与SVR的非线性回归之比较
基于 B P与 S R的非 线 性 回归 之 比较 V
丁 蕾, 朱德权
( 安庆师范学 院 物理与电气3_ 7 程学院 , 安徽 安庆 2 6 3 ) 4 13
摘
要 :B P神经网络 和用 于回归的支持向量机( V 在非线性 回归中表现出很好 的学 习和预测能力。本文对这两 S R)
种方法 的算法思想进行 分析 比较 , 并通过仿真实例对它们 的回归性能加以 比较 , 理论 和实验结果表明 S R方法在稳定性 V
为可能 。
3 B P网络 与 S R方 法 V
下 面从几 个 角度对 B P神 经 网络 和用 于 回归 的支持 向量机 加 以 比较 : 首先 , P算 法 的优 化 目标是 基 于经验 风 险最 B
小化 准则 的 , 即最 小 化 经验 风 险从 而试 图使 期 望 风 险最小 。 的 目标 是保 证 网络 输 出 和理 想 输 出 它 的训 练误 差最小 , 就意 味着 B 神 经 网络拟 合 的 这 P
7 K一2 0 0 9 K和 3 K一 9 K的全部 温度 范 围 内的电 阻变 0 20 化 进行 预测 , 并与 实验 数据进 行 了 比较 , 它们之 间的 用
相 关 系数 来 反映 回归估 计性 能 的优劣 , : 即
一
:
I )l I I l・l I I Y
[ 2 ]
述 两种 方法 的性 能 。
我 们 分 别 在 7 K 一2 0 、0 一 10 和 7 K 一 0 1K 7K 6K 0 15 3 K的温 度范 围 内每隔 5 0个数 据 选 取 1个样 本 进 行
训 练 , 出 回归 估 计 函 数 l ) 并 利 用 得 厂 , (
)分 别 对
基于非线性回归和BP神经网络的奥运会奖牌预测模型
引言2016年8月,第三十一届夏季奥林匹克运动在巴西里约热内卢成功举行,中国代表队取得了金牌第三,奖牌榜第二的好成绩。
奥运会期间,奖牌榜排名成为人们关注的焦点,而在奥运会开赛之前,很多数学家、经济学家以及体育数据统计公司纷纷推出各自预测模型和虚拟奖牌榜。
达特茅斯大学塔克商学院的研究者发布了一份关于2016年里约奥运会各代表团夺金、银牌数的预测报告,其在Bernard-Busse 模型的基础上并根据国家(或地区)人口、财富的相对水平、历届奥运会表现和主办国的加成实现奖牌榜预测。
而国内在奥运奖牌预测领域也有着广泛的研究,董琦等采用支持向量机非线性扩展样本对时间序列模型定阶,通过分析新样本加入训练集后支持向量集变化的情况,从而构建一种支持向量机的奥运金牌预测的模型。
该模型的预测效果和传统时间序列模型预测相比,具有主观度低,预测精度高,预测稳定性更好的优点。
郭爱民等基于灰色理论预测里约奥运会金牌榜次序,张玉华等基于线性回归动态模型对里约奥运会奖牌数进行预测。
通过对2020年东京奥运会奖牌的科学预测,可以提高各项体育工作的预见性,促进训练工作的科学化。
1、多元非线性回归预测模型1.1、数据来源及预处理在Wikipedia (维基百科)All-time Olympic Games medal table 词条下,获取到历届奥运会的奖牌数据,用VLOOKUP 函数进行奖牌数据的分类整理,从世界银行数据库获得各国历年的总人口数和人均GDP 数据,而对数量级较大的数据需进行对数处理。
1.2、模型建立首先将上述分类汇总后奥运奖牌数据整理成时间序列形式,通过自回归分析来求解模型参数。
再根据回归分析结果中R 2(拟合优度)、SSE (残差平方和)Significance F 、P value (显著性水平)等参数以及通过测试集获得的ρ(相关系数)和MSE (均方差)两个指标进行权衡,对预测模型进一步的调优。
利用Microsoft Excel 软件进行回归分析,建立模型如式1所示。
一种基于BP神经网络自回归模型的动态过程监测方法[发明专利]
专利名称:一种基于BP神经网络自回归模型的动态过程监测方法
专利类型:发明专利
发明人:宋励嘉,童楚东,俞海珍
申请号:CN201810658889.0
申请日:20180611
公开号:CN108845546A
公开日:
20181120
专利内容由知识产权出版社提供
摘要:本发明公开一种基于BP神经网络自回归模型的动态过程监测方法,旨在利用BP神经网络建立非线性的自回归模型,并在此基础上实施动态过程监测。
本发明方法的主要核心首先在于利用BP神经网络识别出被监测对象采样数据的自相关模型,其次在于利用BP神经网络自回归模型过滤后的误差实施过程监测。
本发明方法的主要优势首先在于利用BP神经网络的非线性拟合能力建立非线性的自回归模型,以达到剔除了测量变量中的非线性自相关特征的目的;其次,本发明方法不仅利用了误差具备能够反映非线性自相关特征异常变化情况的能力,而且误差数据不再存在自相关性同样为后续故障检测模型的建立提供了便利。
可以说,本发明方法更适合于动态过程监测。
申请人:宁波大学
地址:315211 浙江省宁波市江北区风华路818号信息学院521室
国籍:CN
更多信息请下载全文后查看。
基于人工神经网络的非线性回归
基于人工神经网络的非线性回归
王宜怀;王林
【期刊名称】《计算机工程与应用》
【年(卷),期】2004(040)012
【摘要】探讨了人工神经网络在回归分析领域应用的理论基础,对基于人工神经网络的非线性回归进行了深入的实践分析.以BP网络为例给出了基于人工神经网络的非线性回归实例分析.结果表明利用人工神经网络进行非线性回归是一种良好的数据回归方法,可以方便地应用于解决非线性回归问题.
【总页数】4页(P79-82)
【作者】王宜怀;王林
【作者单位】河海大学水电工程学院,南京,210098;苏州大学计算机科学与技术学院,苏州,215006;苏州大学计算机科学与技术学院,苏州,215006
【正文语种】中文
【中图分类】TP183
【相关文献】
1.基于人工神经网络的聚合物驱提高采收率预测——人工神经网络与二次多项式逐步回归方法的对比 [J], 周丛丛;李洁;张晓光;罗峰;李亚;曾嘉
2.基于人工神经网络的非线性回归预测模型的研究 [J], 高洪深;陶有德
3.基于多元非线性回归理论的坦克蓄电池剩余容量非线性回归预测研究 [J], 王江荣;文晖
4.基于人工神经网络及非线性回归的岩爆判据 [J], 张光存;高谦;杜聚强;李铿铿
5.基于多元非线性回归模型的高强混凝土强度预测研究 [J], 甘彬霖;冯旭海;毕经龙;姜浩亮
因版权原因,仅展示原文概要,查看原文内容请购买。
BP神经网络的非线性思想
BP神经网络的非线性思想
郝中华
【期刊名称】《洛阳师范学院学报》
【年(卷),期】2008(027)004
【摘要】BP神经网络是误差反向传播神经网络的简称,是目前应用最为广泛和成功的神经网络模型之一.它的最大特点是提供了一个处理非线性问题的模型,系统地解决了多层网络中隐单元连接权的学习问题.
【总页数】5页(P51-55)
【作者】郝中华
【作者单位】山西大学科学技术哲学研究中心,山西太原030006
【正文语种】中文
【中图分类】N031
【相关文献】
1.一种BP神经网络的高分子PTC热敏电阻非线性校正模型 [J], 董小龙;金晶;叶炜禄
2.基于GA-BP神经网络的非线性模拟量回归 [J], 周欣;王宜怀;姚望舒;葛新越
3.基于多元非线性回归与BP神经网络模型对土壤水分蒸发量的预测 [J], 韦琦;李思颖;白胤豪;朱鹏飞;胡舒璇;黄品天
4.改进型BP神经网络的非线性多模型自适应控制 [J], 王素珍;刘建锋
5.思维进化算法优化BP神经网络在非线性函数拟合中的应用 [J], 王永亮
因版权原因,仅展示原文概要,查看原文内容请购买。
一种SVM非线性回归算法
一种SVM非线性回归算法
业宁;梁作鹏;董逸生;王厚立
【期刊名称】《计算机工程》
【年(卷),期】2005(031)020
【摘要】提出了一种新的基于分类的SVM非线性回归算法(CSVR),首先将Y扩展为Y+ 和Y- 两个数据集,再将n维输入空间X中的数据连同Y+ 和Y- 组成n+1维空间中的两类数据,并用Z {+1,-1}来标识两类数据,再利用标准的SVM二分类算法求解.利用该算法对一系列的基准函数进行测试,取得了令人满意的结果.该算法对噪声数据不敏感,具有较好的鲁棒性,并且可以根据实际需要设定ε的大小,防止出现过拟合现象.该算法由于不需要先验地建立一个参数未知的回归模型,因此可以用在其他传统统计回归算法失效的场合.
【总页数】3页(P19-21)
【作者】业宁;梁作鹏;董逸生;王厚立
【作者单位】东南大学计算机科学与工程系,南京,210096;南京林业大学信息学院计算机系,南京,210037;东南大学计算机科学与工程系,南京,210096;东南大学计算机科学与工程系,南京,210096;南京林业大学信息学院计算机系,南京,210037【正文语种】中文
【中图分类】TP181
【相关文献】
1.一种非线性回归模型参数估计的混合基因算法 [J], 陈金山;韦岗
2.MLSVM4--一种多乘子协同优化的SVM快速学习算法 [J], 业宁;孙瑞祥;董逸生
3.一种新的非线性回归模型参数估计算法 [J], 陈金山;韦岗
4.一种SVM增量学习算法α-ISVM [J], 萧嵘;王继成;孙正兴;张福炎
5.非线性回归的一种算法 [J], 周志丹;朱功勤
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
+
基于人工神经网络的非线性回归的实践分析
在人工神经网络的发展中,误差逆传播学习算法 (,--.占有重要地位。以该算法为基础的人工神经 /0123(-.405067.8 ) 它是目前 人 工 神 经 网 络 领 域 中 应 用 最 为 广 网络简称 /( 网络, 泛的模型之一。该文以 /( 网络为例对基于人工神经网络的非 线性回归进行实践分析。 传统的回归是寻找 % 与 & 表 % 为取自文献 9#: 的实验数据, 的函数关系, 文献 9#:给出富氏级数回归式为: ( % ( %? $ %! ) ( ! % = %!< $ "@ ) & ; < $ !! = !! $ %< >78 = # $ ## >78 = (+%)A<$!% ) +$?#>78
最小二乘多项式回归与神经网络回归的对比
杉木径向 杉木弦向 漆树横向
’" ’% ’! ’&
相关系数 剩余标准差
"$/&0!./&".&!/%"% 30$"’!’/-&#.%##%# &.$--/.&.!#00%&! 3#’$%-’.%!"&-’"&’ $0#."-""0&.!"/’& #$%’!#/".%0##00#43!
基于人工神经网络的非线性回归
! 王宜怀 %,
王
林!
% (河海大学水电工程学院, 南京 !%""1) ) (苏州大学计算机科学与技术学院, 苏州 !%2""* ) !
345678: 97:;67<=>;/6$,/;$?.
摘 要 探讨了人工神经网络在回归分析领域应用的理论基础,对基于人工神经网络的非线性回归进行了深入的实践
分析。以 @A 网络为例给出了基于人工神经网络的非线性回归实例分析。 结果表明利用人工神经网络进行非线性回归是 一种良好的数据回归方法, 可以方便地应用于解决非线性回归问题。 关键词 人工神经网络 非线性回归 理论基础 实践分析 中图分类号 DA%)(
(!""# ) 文章编号 %""!4)((%4 %!4""B14"#
基金项目: 江苏省教育厅自然科学基金 (编号: T!%%)!"% )
图 % 传统的回归希望找到映射的具体表达式 #
作者简介: 王宜怀, 男, 博士研究生, 苏州大学教授, 主要研究方向: 人工神经网络、 嵌入式系统。王林, 男, 副教授。
计算机工程与应用 !""#$%!
B1
有时, 我们的努力是徒劳的, 因为有可能 “! ” 根本就 不 能 表 达成一种简明的函数形式。但是, 实验上 " !# 的映射关系是 的具体表达难以找到。例如, 在基于 &’( (数字信 明确的, 而 “! ” 号处理) 的系统中, 实际物理量要经过传感器、 变换器、 放大器、 其 ) * & 转换器等电子器件才能成为计算机能够处理的数字量, 过程的任何一个过程的非线性, 必然导致实际物理量与数字量 的非线性关系, 这里的实际物理量与数字量关系明确, 有一一 对应关系, 只不过不是线性关系。 通常情况下, 这种非线性关系 是难以用一个简明的数学关系来表达的。于是, 在以前的计算 机控制系统中, 人们使用了许多硬件方法试图减少信号变换过 程中的非线性性。 那么, 怎样才能更好地解决这类问题呢? 鉴于 人工神经网络在非线性领域应用的成功实践,对于非线性回 归, 神经网络模型也许有用武之地。 基于神经网络的回归分析, 希望寻找的不是具体的映射数学表达, 而是通过网络对样本的 进行学习 训 练 , 当网络训练完成后, 其网络结构 $ 就代表了映 射 " !# ,见图 ! 。虽然这个过程不能得出简明的数学公式表 达, 但它却代表了更复杂的映射关系。 通过这个网络结构 (网络 层数、 各层单元数、 各连接权及阈值等均确定下来) , 当有一自 就 会 产 生 一 因 变 量 输 出 &, 这就是网络的回想 变量 % 输入时, 过程,这个参数被确定下来的网络就成为解决该特殊问题的 “专家” , 上述问题可以得到较好的解决。 在计算机编程过程中, 所使用的网络模型及确定的参数, 可以通过类、 对象等软件技 术实现。需要指出的是, 学习过程必须是有教师示教的学习方 、 (" ! , , (" + , …, ("’ , 式, 实验 数 据 样 本 组 (" % , # %) # !) # +) #’) 就是学习样本, 从理论上说, 学习样本越多, 学习效果越好。
文献标识码 C
!"# $%&’(&#)* +#,*#--(%& .)-#/ %& .0 1*2(3(4()’ $#5*)’ $#26%*7
; 8)&, 9("5)(:, 8)&, <(&; % ( EF88,-, FG H9/0FIF<,0 3.-7.,,07.- FG HF:67 J.7K,0>7L9 , M6.N7.- !%""1)) ! (EF88,-, FG EF5I;L,0 O?7,.?, 6./ D,?:.F8F-9 FG OFF?:F< J.7K,0>7L9 , O;P:F; !%2""*)
!’ , 显示出它的强大生命力。对于实验数据的非线性回归分 用 &%,
之间的函数关系, 即力求把 ! 表 素 (对响应有影响的自变量 " ) (以一 元 回 归 为 例 ) , 使之在 “某 种 意 达成 " 的一个合适的函数 义” 上最好。为了与下面所要表述的问题易于衔接, 在术语上, 把这种函数关系表述为映射。那么, 传统的回归分析就是希望 (" ) , 见图 % 。这里的 “某种意义” 找到映射的具体表达式 #: ! $# “使 误 差 平 可以是 %)"* 年 +,-,./0, 提 出 的 最 小 二 乘 原 理 中 的 方和为最小以限制极限误差” 的思想, 也可以是其它体现整体 误差的表述。但不论如何表述, 要从大量的带有一定随机性的 、 (" ! , , (" ( , …, ("% , 中 实验数据样本组 (" % , ! %) ! !) ! () !%) 通常是十分困难 “回 归 ” 出 映 射 " !! 的 具 体 表 达 # 的 形 式 , 的。 人们对此进行了长期的研究, 提出了许多拟合方法。 在一些 基本函数的组合无法表达时, 就用多项式进行回归, 从而近似 确定这种规律。 从理论上说, 在多项式回归中, 拟合的多项式次 数越高, 模型越准确, 但实际拟合过程并非如此。甚至, 有些情 相应的误差都较大, 或者对应的相 况无论怎样拟合所找出的 #, 关系数都比较小, 就是说拟合不好。也可以说, 在这种情况下, 传统的回归分析方法找不到合适的 # 来表述映射 " !! 。
析、 实验数据的补漏、 非线性校正等方面, 人工神经网络应该有 其用武之地。 但有的作者试图用此方法寻找传统回归方程的系 该文试 数, 只是人工神经网络在回归分析中应用的一个侧面 &(’。 图从理论与实践两个角度较系统地探讨人工神经网络在回归 分析方面的应用, 分析其基本原理, 并给出应用方法与实例, 同 时与传统的回归方法进行对比, 从而说明人工神经网络是非线 性回归分析的一种较好方法, 可以方便地应用于实验数据处理 之中, 并对应用中的关键点进行了分析。
神经网络的非线性处理能力分析, 人工神经网络完全具有处理 此类问题的能力, 而且回归效果优于传统的回归方法。当学习 也 完成后, 确定的网络模型、 网络参数就代表了相应的映射 $, 就是说, 我们找到了映射 $。下面把基于神经网络的回归 分 析 与传统的回归分析作简要比较:
(0 )
(C )
图 ! 基于神经网络的回归是希望找到映射的网络结构 $
表% (D) " % 取自文献 9#: 的实验数据 (某周;
<"
%!" %A" %?" +E +% %A$+
!%" !#" # 3?
!E" 3%+$!
+""
++"
&
<$+ %A %E$# !+
3%#$! 3@
图 + 给 出 了 基 于 /( 神 经 网 络 的 回 归 演 化 进 程 (网 络 层 隐含层单元个数: 为方便程序运算图中对数据进行了 数: +, @, 单位变换) , 图中给出了学习参考时间、 神经网络回归的相关系 数和剩余标准差及传统回归方法的相关系数和剩余标准差的 对比, 由此看到, 随着神经网络学习时间的延长, 神经网络回归 (B ) , 神经 的相关系数不断提高, 剩余标准差不断减小, 到图 + 网络回归的相关系数已经大于传统回归方法的相关系数, 神经 网络回归的剩余标准差小于传统回归方法的剩余标准差, 图形 曲线也说明了这一点。 这里仅给出一例的过程, 实际上, 从人工 (% ) 传统的回归分析目标在于寻找函数表达的具体形式, 而基于神经网络的回归分析目的在于寻找一个神经网络模型, 用实验样本来训练这个网络, 训练完成后, 这个网络就成为该
%
问题的提出
在测量数据的处理与分析领域中, 回归分析是重要方法之
!
基于人工神经网络的非线性回归的理论基础
回归分析就是确立和分析某种响应 (因 变 量 ! ) 和重要因
一。在此过程中, 人们试图从实际测量数据中寻找出某种能用 简明数学公式表达的规律。传统的回归分析方法多种多样, 不 同的思路和模型采取不同的拟合方法, 有时也用几种拟合方法 加以对比,从而决定采用哪种拟合方法更适合所研究的对象。 不论如何, 其目的只有一个, 寻找自然规律, 即简明的数学表 达。 但是, 在更多的情况下, 很难找到一个普适规律, 因此, 能够 建立一个带有参数的经验公式就成为回归分析的出发点。 由于 自然规律的复杂性, 以现实世界为研究对象的目标系统, 绝大 多数为非线性系统, 非线性回归就成为传统回归分析的研究重 点。有时, 为了研究方便, 对非线性关系进行 “线性化” 处理, 期 望达到回归的目的, 一般情况下, 线性回归作为非线性回归的 特例或近似。 人工神经网络是一个具有高度非线性的动力学系 统, 它在预测复杂非线性系统的行为中已经获得了广泛的应