导航:首页 > 编程大全 > 非线性自回归神经网络

非线性自回归神经网络

发布时间:2023-01-28 17:51:45

Ⅰ 神经网络输出层采用非线性函数和线性函数,有区别嘛

神经网络输出层采用非线性函数和线性函数是有区别的。对于非线性问题应用非线性函数来处理,而对于线性问题应用线性函数处理,也可以用非线性函数处理。

Ⅱ Tensorflow系列3:多层神经网络--解决非线性问题

这里拿医院的数据做一个简单的线性分类任务,任务特征是病人的年龄和肿瘤大小,任务目标是病人的肿瘤是良性的还是恶性的。

补充知识:

补充知识:

MSE 的公式为:

cross entropy 一般用于分类问题,表达的意思是样本属于某一类的概率,公式为:

这里用于计算的a也是经过分布统一化处理的(或者是经过Sigmoid函数激活的结果),取值范围在0~1之间。

在tensorflow中常见的交叉熵函数有:Sgimoid交叉熵,softmax交叉熵,Sparse交叉熵,加权Sgimoid交叉熵
MSE的预测值和真实值要控制在同样的数据分布内,假设预测值经过Sigmoid激活函数得到取值范围时候0 1之间,那么真实值也要归一化成0 1之间。
在tensorflow中没有单独的MSE函数,可以自己组合:
MSE=tf.rece_mean(tf.square(logits-outputs))

softmax_cross_entropy_with_logits 函数,必须要自己定义,比如:
loss = tf.rece_mean(-tf.rece_sum(labels*tf.log(logits_scaled),1))
损失函数的选取取决于输入标签数据的类型:如果输入是实数、无界的值,多使用MSE;如果输入标签是位矢量(分类标志),使用cross entropy比较合适

补充知识点:

reshape() 函数接受-1时,该行(列)数可以为任意值。[-1,1]代表行数随意,列数变成1。

模型生成的z用公式可以表示成z=x1w1+x2w2+b,如果将x1和x2映射到直角坐标系中的x和y坐标,那么z就可以被分为小于0和大于0两部分。当z=0时,就代表直线本身。

这次再在刚刚的二分类基础上再增加一类,变成三类,可以使用多条直线将数据分成多类。

生成的X,Y的数据样本如下内容:

常用的激活函数比如sigmoid,relu,tanh输出值只有两种,面对以上多分类问题,就需要使用softmax算法。该算法的主要应用就是多分类,而且是互斥的,即只能属于某一类。(对于不是互斥的分类问题,一般使用多个二分类来组成)

补充知识:

也可以画出更直观的图示:

例如:

对于线性不可分的数据样本,可以使用多层神经网络来解决,也就是在输入层和输出层中间多加一些神经元,每一层可以加多个,也可以加多层。

在模型训练过程中会出现欠拟合和过拟合的问题,欠拟合的原因并不是模型不行,而是我们的学习方法无法更精准地学习到适合的模型参数。模型越薄弱,对训练的要求就越高,但是可以采用增加节点或者增加隐藏层的方式,让模型具有更高的拟合性,从而降低模型的训练难度。过拟合的表现在模型在训练集上的表现非常好,loss很小;但是在测试集上的表现却非常差。

避免过拟合的方法很多:常用的有early stopping、数据集扩增、正则化、dropout

本质就是加入噪声,在计算loss时,在损失后面再加上意向,这样预测结果与标签间的误差就会受到干扰,导致学习参数W和b无法按照目标方向来调整,从而实现模型与训练数据无法完全拟合的效果,从而防止过拟合。

这个添加的干扰项必须具有如下特性:

这里有两个范数L1和L2:

tf.rece_sum(tf.abs(w))

tf.nn.l2_loss(t,name=None)

拿上面的异或数据做举例,dropout方法就是在刚刚的layer_1层后面再添加一个dropout层。

实际训练时,将keep_prob设置成0.6,意味着每次训练将仅允许0.6的节点参与学习运算。由于学习速度这样就变慢了,可以将learning_rate调大,加快训练速度。 注意:在测试时,需要将keep_prob设置为1。

全连接神经网络是一个通用的拟合数据的框架,只要有足够多的神经元,及时只有一层hidden layer,利用常见的Sigmoid,relu等激活函数,就可以无限逼近任何连续函数。在实际使用中,如果想利用浅层神经网络拟合复杂非线性函数,就需要你靠增加的神经元个数来实现,神经元过多会造成参数过多,从而增加网络的学习难度,并影响网络的泛化能力。因此,在实际构建网络结构时,一般倾向于使用更深的模型,开减少所需要的神经元数量。

Ⅲ matlab中怎么用 neural network建立一个感知器

第一:特点
1、监督网络包括:正反馈、径向基、LVQ、时延、非线性自回归(NARX)以及层递归的神经网络

2、非监督网络包括:自组织图与竞争层结构;
3、通过预处理和后处理提高网络训练与评估网络性能;
4、模块化网络用以管理和可视化任何大小的网络;
5、用于构建和评估神经网络的Simulink模块
第二:数据拟合、分类和模式识别
1、数据拟合
应用举例:房价均值估计
问题描述:通过创建神经网络以估计社区房价的均值,该社区采用以下13个属性进行描述

1)每城市的人均犯罪率
2)住宅用地的比例大于25000平方
3)每个城市的非零售商业用地比例
4)1表示Charles river的边界,0则表示其他的
5)氮氧化合物浓度(1000万分之1)
6)平均每个寓所的房间数量
7)业主单位是1940年以前的比例
8)距离波士顿就业中心的加权距离
9)径向高速公路的可访问性指数
10)每10,000美元全部价值财产税税率
11)城市中小学老师的比例
12)1000(Bk - 0.63)^2
13)地位较低的人口百分比
上述输入是与目标输出相关联的。
数据准备
输入矩阵X和目标输出矩阵T
X中每一列都是由上述13个特征属性所表征的数字所组成。该已知的13个数值表示当前已知的房价均值。T矩阵的每一列都会有一个元素,用以表示1000年后的房价均值
(the median house price in 1000's of dollars)
数据导入:
[x,t]=house_dataset;
可以看到X和T都是506列,表示的是506个社区的属性,即所谓的输入。这些输入与房价均值相关联,即目标。X有13行,即表示13个属性;目标矩阵T只有1行。
用神经网络进行数据拟合
神经网络是用随机权值进行初始化的,所以每次运行的结果会有稍微的不一样。可以通过设置随机化种子以避免这种随机性。但是我们在应用过程中是不需要setdemorandstream(491218382)的。
一般越是复杂的问题,所需要设置的神经元数量越多,神经元层数也越多。在此,我们在隐含层设置的是10个神经元。
net = fitnet(10);
view(net)
从下图可以看出,神经网络的输入和输出都是0,这是因为此时的神经网络尚未进行配置,以对输入数据和输出数据进行匹配。需要对其进行训练!

接下来需要做得就是训练:
数据集一共分成三种:训练数据集、验证数据集和测试数据集。用训练数据集对神经网络进行训练,用以拟合模型,即用这部分数据来建立模型。 验证数据集,刚才说training建了一个模型,但是模型的效果仅体现了训练数据,但不一定适合同类的其他数据,所以需要在建模前会将数据分成两部分,一部分为训练数据,一部分为验证数据(两部分数据的比例大致为7:3,这取决于所采用的验证方法);另外,有时候也可能训练多个模型,但不知哪个模型性能更佳,这时可以将验证数据输入不同模型进行比较。所以,训练过程是需要不断进行的,直到验证数据集的性能不再有所提升。 test是测试数据,它跟前两者的最大区别在于:training和validation数据均是同一时期的数据,如都是5-7月数据,但既然是测试,就需要用跨期的数据来验证模型的稳定性,此时,可采用8月单月数据或9月单月数据对建好的模型进行测试,看性能有没有下降或偏移。
采用NN Training Tool可以展现被训练的神经网络和用以训练的算法。此外,该工具也展示了训练的过程中的训练时态和训练终止的准则(该准则用绿色进行标注)。在该UI底部的可以绘制。在算法名称和绘制按钮的旁边都有其对应的链接,以补充对该算法或者绘制图像的说明。

可以点击"Performance" 按钮或者用语句plotperform(tr)来查看神经网络在训练过程性能的提升。该性能的测量是基于最小均方误差,以对数log为底进行显示。在训练过程中可以发现该曲线是迅速下降的。且需要注意,多次运行所需要的迭代次数是不一样的。图中绿色圈圈所指示的是验证数据集性能最好的地方。

测试神经网络
通过测量测试数据的最小均方误差,可以感知经过训练的神经网络对应真实数据所表现出来的性能。
testX = x(:,tr.testInd);
testT = t(:,tr.testInd);

testY = net(testX);

perf = mse(net,testT,testY)

此外,也可以通过绘制回归线来测量神经网络对应数据的拟合程度。下面基于所有样本绘制回归线:
y = net(x);

plotregression(t,y)

若神经网络已经训练好,可以对数据进行拟合,则在回归图上面线性输出的目标拟合曲线Fit应该横贯左下角和右上角。若是没有达到,则需要继续进行训练,或者采用更多神经元的神经网络进行训练。
第三种测量神经网络对于数据的拟合程度方法是误差分布图。误差分布图可以展示误差情况,一般多数误差是靠近0的,只有少数远离0。

Ⅳ 非线性建模-神经网络

        这学期选修了Python与算法基础,利用Python语言编写力图实现高效算法。前期接触了线性建模中的单变量及多元变量回归模型、多项式回归和灰度模型等。目前正在解决非线性建模问题,引入了神经网络的概念,这里作为自我梳理。

        首先该网络有三层:输入层、隐含层和输出层。输入层进行变量与优化权重的加权计算,每个节点输出z=Σxiwij,此时我们把多个变量(x),变为了单个变量(z)。隐含层完成“非线性的实现”,节点值ho=1/((1+e^(-z))),此处使用了生长函数。当我们调节wij(优化权重),使模型收敛,就能解决该非线性问题。

        接着我们建立MLPClassifier神经网络模型。以下辨明多个参数。

hidden_layer_sizes :用元组,一个数字代表一个隐含层的节点。如hidden_layer_sizes=(50,50) 两个隐含层,每层50个节点hidden_layer_sizes=(60,) 一个隐含层,60个节点,其中逗号不能省略

activation :激活函数, 对Σxiwij的函数转换。

{'identity','logistic', 'tanh', 'relu'}, 默认relu                                                

•identity:f(x)= x

•logistic:其实就是sigmod,f(x) = 1 / (1 + exp(-x)).

•tanh:f(x) = tanh(x).

•relu:f(x) = max(0, x)

solver : {'bfgs', 'sgd', 'adam'}, 默认adam,用来优化权重

lbfgs:quasi-Newton(拟牛顿法)方法的优化器

sgd:随机梯度下降

adam: Kingma, Diederik, and Jimmy Ba提出的基于随机梯度的优化器

注意:默认solver 'adam',在相对较大的数据集上效果比较好(几千个样本或者更多),对小数据集来说,lbfgs收敛更快效果也更好。

learning_rate  :学习率,用于权重更新,只有当solver为’sgd’时使用,{'constant','invscaling', 'adaptive'},默认constant

•constant: 由learning_rate_init给定的恒定学习率

•invscaling:随着时间t使用power_t的逆标度指数不断降低学习率learning_rate_ ,effective_learning_rate = learning_rate_init / pow(t, power_t)

•adaptive:只要训练损耗在下降,就保持学习率为learning_rate_init不变,当连续两次不能降低训练损耗或验证分数停止升高至少tol时,将当前学习率除以5。

Ⅳ BP神经网络的非线性系统建模

在工程应用中经常会遇到一些复杂的非线性系统(我们航空发动机就是典型的强非线性模型),这些系统状态方程复杂,难以用数学方法准确建模。在这种情况下,可以建立BP神经网络表达这些非线性系统。该方法把未知系统看成黑箱,首先用系统输入输出数据训练BP神经网络,使网络能够表达该未知函数,然后用训练好的BP神经网络预测系统输出。
本文要拟合的非线性函数是

该函数的图形如下图1所示。

回顾上一篇文章建立BP网络的算法流程,进行具有非线性函数拟合的BP网络可以分为网络构建、训练和预测三步,如下图2所示。

BP神经网络构建 根据要拟合的非线性函数特点确定BP网络结构,由于该非线性函数有两个输入参数,一个输出参数,所以BP网络结构可以设置为2-5-1,即输入层有2个节点,隐含层有5个节点,输出层有1个节点。
BP神经网络训练 用非线性函数输入输出数据训练神经网络,使训练后的网络能够预测非线性函数输出。从非线性函数中随机得到2 000组输入输出数据,从中随机选择1 900组作为训练数据,用于网络训练,100组作为测试数据,用于测试网络的拟合性能。
神经网络预测 用训练好的网络预测输出,并对预测结果进行分析。

根据非线性函数方程随机得到该函数的2 000组输入输出数据,将数据存储在data.mat文件中,input是函数输入数据,output是函数输出数据。从输入输出数据中随机选取1 900组数据作为网络训练数据,100组作为网络测试数据,并对训练数据进行归一化处理。

用训练数据训练BP神经网络,使网络对非线性函数输出具有预测能力。

用训练好的BP神经网络预测非线性函数输出,并通过BP神经网络预测输出和期望输出,分析BP神经网络的拟合能力。

用训练好的BP神经网络预测函数输出,预测结果如下图3所示。

BP神经网络预测输出和期望输出的误差如下图4所示。

从图3和图4可以看出,虽然BP神经网络具有较高的拟合能力,但是网络预测结果仍有一定误差,某些样本点的预测误差较大。

在上一篇文章中提到了调整隐含层节点数目、改变权值和阈值更新算法以及变学习率学习算法等方法,针对非线性拟合,BP神经网络的优化还可以使用多隐层的BP神经网络、改变激活函数等方法。

Ⅵ 怎么判断是线性回归还是非线性回归

在计量经济学中,线性或非线性,不是针对自变量而言的,也就是X,而是针对自变量的系数参数而言的.如:
y=a+bx这是线性,y=a+bx+cx^2这也是线性,因为a b c导数都是常数,或者说都是1次的,而y=a+bcX1+dX2,这样的模型就是非线性的,因为bc是2次的.区分其实就这么简单.先说原理,数据中隐含有模式,要做的是把模式提取出来(即模型)。模式提取的充分与否,是看残差(提取模式后剩下的)是否不再含有模式,如果是,则残差服从0附近的正态分布(即随机白噪声),此时模型已经是成功的充分模型。否则,说明数据中的模式没有完全提取出来,模型是不充分的,需要继续改进。

再说具体操作,可以先选用简单的多元线性回归模型,然后检验残差,若是随机白噪声,则完成建模。否则就需要继续引入各变量的非线性项、交互项,当然优先从低次到高次。那么引入很多项进来,如何取舍,用逐步回归即可。

Ⅶ 非线性Granger因果关系发现的可解释稀疏神经网络模型

虽然大多数经典的格兰杰因果关系检测方法依赖于线性时间序列假设,但神经科学和经济学应用中的许多交互作用是非线性的。我们发展了一种使用多层感知器的非线性格兰杰因果关系检测方法,其中网络的输入是所有序列的过去时间滞后,输出是单个序列的未来值。在这种情况下,Granger非因果关系的一个充分条件是,输入数据的所有输出权重(序列的过去滞后)到第一个隐藏层都为零。对于估计,我们使用一组套索惩罚将输入权重组缩小为零。我们还提出了一个等级惩罚同时格兰杰因果关系和滞后估计。我们在稀疏线性自回归模型和稀疏非线性Lorenz-96模型的模拟数据上验证了我们的方法。

格兰杰因果关系量化了一个时间序列的过去活动对另一个时间序列的预测程度。当研究一个完整的时间序列系统时,相互作用网络可能会被发现[2]。经典上,估计格兰杰因果关系的大多数方法假设线性时间序列动力学,并使用流行的向量自回归(VAR)模型[9,8]。然而,在许多现实世界的时间序列中,序列之间的依赖是非线性的,使用线性模型可能导致格兰杰因果相互作用的不一致估计[12,13]。估计时间序列中相互作用的常见非线性方法使用加法模型[12,4,11],其中每个序列的过去可能有一个相加的非线性效应,在序列之间解耦。然而,加性模型可能会忽略预测因子之间重要的非线性相互作用,因此也可能无法检测到重要的Granger因果关系。

为了解决这些挑战,我们提出了一个框架,以解释非线性格兰杰因果关系发现使用正则化神经网络。用于时间序列分析的神经网络模型传统上只用于预测和预测,而不用于解释。这是因为,由于隐藏层中相互作用的节点错综复杂,输入的影响难以精确量化。我们避开了这个困难,而是构建了一个简单的体系结构,允许我们精确地选择对输出没有线性或非线性影响的时间序列。

我们将最近关于神经网络体系结构选择稀疏诱导惩罚的研究[1,7]应用到我们的案例中。特别是,我们通过在输入的输出权重上添加一组套索惩罚[14]来选择格兰杰因果关系,我们称之为编码选择。我们还探讨了一种自动滞后选择的分层套索惩罚[10]。当真实的非线性相互作用网络是稀疏的时,该方法将选取Granger引起的输出序列和这些相互作用的滞后的几个时间序列

Ⅷ 非线性是神经网络的王道啥意思

神经元的广泛互联与并行工作必然使整个网络呈现出高度的非线性特点。在客观世界中,许多系统的输入与输出之间存在着复杂的非线性关系,对于这类系统,往往很难用传统的数理方法建立其数学模型。设计合理地神经网络通过对系统输入输出样本对进行自动学习,能够以任意精度逼近任何复杂的非线性映射。神经网络的这一优点能使其可以作为多维非线性函数的通用数学模型。该模型的表达式非解析的,输入输出数据之间的映射规则由神经网络在学习阶段自动抽取并分布式存储在网络的所有连接中。具有非线性映射功能的神经网络应用十分广阔,几乎涉及所有领域。

Ⅸ 神经网络做函数逼近,会做了,但是函数逼近到底有什么用处呢

针对你前两个问题:
在系统建模、辨识和预测中,对于线性系统,在频域,传递函数矩阵可以很好地表达系统的黑箱式输入输出模型;在时域,Box-Jenkins方法、回归分析方法、ARMA模型等,通过各种参数估计方法也可以给出描述。对于非线性时间序列预测系统,双线性模型、门限自回归模型、ARCH模型都需要在对数据的内在规律知道不多的情况下对序列间关系进行假定。
可以说传统的非线性系统预测,在理论研究和实际应用方面,都存在极大的困难。相比之下,神经网络可以在不了解输入或输出变量间关系的前提下完成非线性建模。神经元、神经网络都有非线性、非局域性、非定常性、非凸性和混沌等特性,与各种预测方法有机结合具有很好的发展前景,也给预测系统带来了新的方向与突破。建模算法和预测系统的稳定性、动态性等研究成为当今热点问题。目前在系统建模与预测中,应用最多的是静态的多层前向神经网络,这主要是因为这种网络具有通过学习逼近任意非线性映射的能力。利用静态的多层前向神经网络建立系统的输入/输出模型,本质上就是基于网络逼近能力,通过学习获知系统差分方程中的非线性函数。但在实际应用中,需要建模和预测的多为非线性动态系统,利用静态的多层前向神经网络必须事先给定模型的阶次,即预先确定系统的模型。

针对你第三个问题:
预测是利用数理统计的原理作出假设,给出预测区间,准不准也只是从统计的角度来讲,也就是说准确度实际上是相对的,预测区间越不精确可信度就越大,预测区间越精确可信度就越小,也就是说你想要精确一点的话,就要牺牲一点可信度

Ⅹ 神经网络非线性回归怎么做

给你一个例子来说明如何用神经网络非线性回归。

如,用神经网络拟合函数y=0.12*exp(-0.23*x)+0.54*exp(-0.17*x)*sin(1.23*x)

执行代码如下:

阅读全文

与非线性自回归神经网络相关的资料

热点内容
网易有道词典怎么浏览网站 浏览:75
dnf进程保护的程序 浏览:963
夏普手机网络机顶盒怎么样 浏览:232
苹果7连不上隐藏wifi密码 浏览:392
u盘文件没有了怎么办啊 浏览:54
怎么修改小火箭配置文件 浏览:539
澄海3c那个版本最新 浏览:713
齐鲁银行官方网站是多少 浏览:955
苹果手机为什么不带收音机功能 浏览:145
手机酷狗音乐7去升级 浏览:602
编程类的书籍哪个好 浏览:378
win10创意版更新 浏览:857
惠普bf001ax升级版 浏览:364
win10如何更换账号 浏览:183
linux显示内核 浏览:242
excel用按键功能打开文件 浏览:456
狼人杀文件名字是什么 浏览:679
重装系统以前的文件 浏览:663
全民超神113版本百度 浏览:11
编程ts什么意思 浏览:280

友情链接