『壹』 bp神经网络数据检验的误差太大,如何调解
呵呵,bp算法本身有缺陷 ,你的训练步长 迭代率啥的要设置好
『贰』 神经网络训练一定次数后准确率突然下降怎么回事
经网络训练时准确度突然变得急剧下降,很有可能是你的休息不够睡眠不足导致注意力不集中,近段时间的心情也很影响训练时的准确度,心情烦躁准确度也就会下降。
『叁』 bp神经网络训练速度慢怎么调整
BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。
人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。
『肆』 如何训练神经网络
1、先别着急写代码
训练神经网络前,别管代码,先从预处理数据集开始。我们先花几个小时的时间,了解数据的分布并找出其中的规律。
Andrej有一次在整理数据时发现了重复的样本,还有一次发现了图像和标签中的错误。所以先看一眼数据能避免我们走很多弯路。
由于神经网络实际上是数据集的压缩版本,因此您将能够查看网络(错误)预测并了解它们的来源。如果你的网络给你的预测看起来与你在数据中看到的内容不一致,那么就会有所收获。
一旦从数据中发现规律,可以编写一些代码对他们进行搜索、过滤、排序。把数据可视化能帮助我们发现异常值,而异常值总能揭示数据的质量或预处理中的一些错误。
2、设置端到端的训练评估框架
处理完数据集,接下来就能开始训练模型了吗?并不能!下一步是建立一个完整的训练+评估框架。
在这个阶段,我们选择一个简单又不至于搞砸的模型,比如线性分类器、CNN,可视化损失。获得准确度等衡量模型的标准,用模型进行预测。
这个阶段的技巧有:
· 固定随机种子
使用固定的随机种子,来保证运行代码两次都获得相同的结果,消除差异因素。
· 简单化
在此阶段不要有任何幻想,不要扩增数据。扩增数据后面会用到,但是在这里不要使用,现在引入只会导致错误。
· 在评估中添加有效数字
在绘制测试集损失时,对整个测试集进行评估,不要只绘制批次测试损失图像,然后用Tensorboard对它们进行平滑处理。
· 在初始阶段验证损失函数
验证函数是否从正确的损失值开始。例如,如果正确初始化最后一层,则应在softmax初始化时测量-log(1/n_classes)。
· 初始化
正确初始化最后一层的权重。如果回归一些平均值为50的值,则将最终偏差初始化为50。如果有一个比例为1:10的不平衡数据集,请设置对数的偏差,使网络预测概率在初始化时为0.1。正确设置这些可以加速模型的收敛。
· 人类基线
监控除人为可解释和可检查的损失之外的指标。尽可能评估人的准确性并与之进行比较。或者对测试数据进行两次注释,并且对于每个示例,将一个注释视为预测,将第二个注释视为事实。
· 设置一个独立于输入的基线
最简单的方法是将所有输入设置为零,看看模型是否学会从输入中提取任何信息。
· 过拟合一个batch
增加了模型的容量并验证我们可以达到的最低损失。
· 验证减少训练损失
尝试稍微增加数据容量。
『伍』 患上神经衰弱怎么办
神经衰弱是一种常见的神经病症,患者常感脑力和体力不足,容易疲劳,工作效率低下,常有头痛等躯体不适感和睡眠障碍,但无器质性病变存在。神经衰弱主要症状有:①容易疲劳;②容易兴奋;③睡眠障碍;④情绪障碍;⑤紧张性疼痛和植物神经功能紊乱。这些都会对学习产生不良的影响。
如果你已患了神经衰弱,首先不要为此而苦恼,或背上思想包袱,因为这种病不是器质性疾病,也不是神经中枢的病变,而是大脑机能暂时性功能失调所引起的一种心因疾病。只要稍加调节,抱以乐观的态度,神经衰弱是可以治愈的。在治愈过程中,可注意以下几个问题:
一、树立战胜疾病的自信心
对神经衰弱这一疾病的态度正确与否,常常影响治愈的进程与效果。如前所述,神经衰弱既然不是器质性疾病,因此,不必为患此病而顾虑重重,对平时出现的一些症状,不要过多地去注意,要尽可能地去淡化它,不要随时去体验,随时去暗示自己。
曾有一位患神经衰弱的病人,因他总是担心自己病情加重,住进了医院,他最害怕的就是晚上失眠。第二天清早,护士刚走进病房,他便对护士讲:“不行了,昨天我一夜都没睡好!”护士说:“你昨晚睡得挺好的,夜里下雨时我来病房关窗子,你睡得呼呼的,一点都不知道。我还两次进来拿药,你也不知道。”可见,这位病人主要是疑心太重的缘故。因此,淡化病情,树立治愈的自信心,是病情好转的前提和条件。
二、劳逸结合,科学用脑
应根据自己的情况,制订出合理的作息制度,在保证8小时的睡眠的前提下,有规律地生活,这利于大脑神经活动的节律化。用脑时间长了,便会感到疲劳和注意力不集中,学习效率下降。这是一种正常的现象。因为疲劳是人体的一种保护性反应。大脑疲劳后,应及时休息。
休息可分两大类,一类是消极的休息,即睡眠或闭目养神。这种休息可使刚才过度兴奋的脑细胞暂时处于相对抑制状态,得到相应的休息。另一类是积极的休息。如适当参加文体活动或轮换学习不同课程,这种休息可以交替发挥大脑两个半球不同功能区的作用。因为大脑的左半球主要管人的逻辑、语言思维,右半球主要管人的形象、运动思维。因此,交替发挥大脑两个半球不同功能区的作用,便可使原来处于兴奋状态的部位转入抑制状态,原来处于抑制的部位转入兴奋状态。如看语文久了,可演算一会儿数学题;物理、化学题做多了,可唱唱歌、听听音乐等。
三、培养乐观、开朗、活泼的性格
具有自卑、敏感、多疑、自制力差、主观任性、争强好胜等性格特征的人易患神经衰弱,因此,培养活泼、乐观的性格是治本的关键。
四、适当运用药物治疗
治疗神经衰弱常用的药物有:三溴合剂、安定、谷维素、维生素C、谷氨酸、利眠宁、养血安神丸、安神补心丸等。
五、注意营养补充
营养出现障碍时也会出现神经衰弱的一些症状。饥饿时人可以出现疲劳感、注意力涣散、行动迟缓、头痛头晕、嗜睡或失眠等神经衰弱症状,除食物以外对任何事物都不感兴趣。此外维生素B、维生素C的缺乏,水、盐的摄人不足等等,都可以出现神经衰弱症状。大脑需要的营养物质,除了脂类、蛋白质、糖类、氧气和水分以外,其他如维生素、钙、磷、钾、镁以及微量元素等也是不可缺少的。神经衰弱患者在饮食疗法方面应特别注意食用对脑有营养价值的食物。
『陆』 lstm神经网络训练时如何减小误差
lstm神经网络训练时如何减小误差:
istm神经网络主要通过结合函数本身的曲线的特点对加速度进行误差补偿。
加速度计受其零偏、温度等影响明显,直接影响导航系统的精度,需要研究补偿方法,提高加速度计的测量精度。鉴于神经网络具有高效的曲线拟合功能和优越的逼近复杂非线性函数的特点,提出了基于BP神经网络的加速度计误差补偿方法。仿真结果表明,经BP神经网络补偿后,加速度计误差补偿后的输出能良好地逼近其期望输出,输出最大误差的绝对值由0.4575g减少到0.07014g,误差降低了一个数量级,很好地抑制了加速度计的误差,提高了加速度计的精度。
『柒』 我用bp神经网络做预测,可是每次预测出来的结果都不一样,且差的比较多,要怎么办
初始值不一样,结果可能相差很大。
还有bp网络的收敛速度很慢。
不知道你的训练函数是什么。
样本一般来说越多越好,但是多了训练就更慢了。
『捌』 神经网络:欠拟合和过拟合
以我们前面讲述的线性回归为例,比如我们在训练集上训练出最优的模型,但是当我们将其使用到测试集时,测试的误差很大,我们该怎么办?
我们一般采取的措施主要包括以下6种:
增加训练样本的数目(该方法适用于过拟合现象时,解决高方差。一般都是有效的,但是代价较大,如果下面的方法有效,可以优先采用下面的方式);
尝试减少特征的数量(该方法适用于过拟合现象时,解决高方差);
尝试获得更多的特征(该方法适用于欠拟合现象时,解决高偏差);
尝试增加多项式特征(该方法适用于欠拟合现象时,解决高偏差);
尝试减小正则化程度λ(该方法适用于欠拟合现象时,解决高偏差);
尝试增加正则化程度λ(该方法适用于过拟合现象时,解决高方差);
上面的方法不是随机选择,是在合适的情况下(过拟合和欠拟合)选择合适的方法,对于怎么判断一个模型是过拟合还是欠拟合,我们会在下面给出一些机器学习诊断法。
如何对一个假设进行评估?
我们前面在讲述线性回归和逻辑回归时,只是注重针对训练数据集训练出一个最优的参数,但是我们训练处的模型对于测试集的性能好坏我们没有进行判断,我们只是训练的模型使得损失函数最小,我们前面也讨论过,在训练数据集上损失函数最小并不能代表对于给定的测试数据,测试数据的评估非常准确,比如过拟合现象发生时,那我们如何评价一个假设的好坏呢?
主要的方法包括两种:
1.对于简答的模型,我们可以采用将hθ(x)的图像画出,来判断模型的好坏,但是这种方法对于特征变量不是一个时,这种方法很难实现或者不可能实现。例如我们曾经看到过这样的图像,可以通过hθ(x)的图像明显可以看出,该假设存在着过拟合现象。
2.另一种评估假设的方法为:将原来的数据集分为训练集和测试集,一般我们是从原来的数据集中随机选取(保证训练集和测试集中都含有各种类型的数据)70%的数据作为训练集,剩下的30%的样本作为测试集。同时这种将原来数据集划分为训练集和测试集的方法可以用于帮助特征选择、多项式次数的选择以及正则化参数的选择等。数据集划分的过程如下:
以上面数据集为例,选取前7个为训练集,后3个为测试集。用前7个数据集做训练训练出一个最优的模型,评价这个训练出的模型的好坏可以使用测试集来进行判断,判断的标准可以使用测试集的损失函数来进行定量的衡量。
对于回归问题,测试集的损失函数计算公式如下:
Jtest(θ)=12mtest∑i=1mtest(hθ(x(i)test)−y(i)test)2
而对于分类问题,测试集的损失函数计算公式如下:
这种测量方式,如果测试样本损失函数很大,则代表训练出的模型泛化能力不好。
对于分类问题,还有另外一种测量的方式,称为误分类率,它对于每一个测试样本进行计算,计算的公式如下:
error=1mtest∑i=1mtesterr(hθ(x(i)test),y(i)))
其中,
模型的选择和交叉验证集:
上述我们是在模型选择好了之后进行训练的,也就是上述我们都是确定了假设进行训练的,但是我们怎么对模型进行选择呢,这一节我们来讨论一下模型的选择,以及和交叉验证集的关系。
模型选择主要包括以下内容:1.怎样选择正确的特征来构造学习算法?2.怎样选择学习算法中正则化参数λ?等问题。
首先我们结合一个例子来引出模型的选择和验证集:
例如我们有上面十个模型,我们对于给定的数据集选择哪种模型呢?按照我们上面讨论的将数据集划分为训练集和测试集,使用训练集对上述模型进行训练,然后使用测试集来进行选择最佳的模型,比如最优的为第五个模型,但是这并不能衡量这个模型的泛化能力,因为测试集已经用于选择最优的模型,这个模型对于其他未知数据的泛化能力还是未知的。
所以针对上述问题我们可以将数据集划分为训练集、交叉验证集和测试集。一般情况下,训练集占总样本的60%,交叉验证集占20%,测试集占20%。其中训练集用于训练,交叉验证集用于选择最优的模型,测试集用于测试模型的泛化能力。
模型选择方法为:
1. 使用训练集训练10个模型;
2. 用10个模型分别对交叉验证集计算出交叉验证误差(代价函数的值),其中计算公式为:
3. 选取交叉验证误差最小的模型作为选择的模型;
4. 用测试集对选择出的模型计算泛化能力(测试样本的损失函数),计算公式如上文中讨论的一样。
假设对诊断偏差和方差(即过拟合还是欠拟合)的影响
利用上述方法学习到的算法性能不好一般会有两种情况:
1.会出现过拟合,也就是所谓的方差很大;
2.会出现欠拟合,也就是所谓的偏差很大;
首先应该确定算法性能的不好,是由哪种原因造成的,然后针对不同的情况采取不同的改进策略,可以有效的改进当前的算法。下面我们来讲述一下怎么判断是过拟合还是欠拟合。
以下面例子为例,来进行讨论:
我们可以通过绘制出训练集的代价函数和交叉验证验证集的代价函数与方次d的关系来进行判断是上述哪种情况的一种:
对于训练集,当d较小时,模型的拟合程度不是很好,所以训练样本集的代价函数比较大;随着d的增加,模型的拟合程度不断提高,代价函数不断的减小;
对于交叉验证集,由于d比较小时,模型的拟合程度不是很好,对于新来的样本预测结果会偏差很大,所以交叉验证集的代价函数在初始阶段会很大,而随着d的增加会出现一个比较好的方次d,使得模型的拟合程度最佳,同时对于新来的样本泛化能力很强,所以会有一个代价函数最小的点出现(该转折点即是模型开始由欠拟合转向过拟合的点),随后随着d的增加,由于过拟合,会存在对新的样本预测结果不良的现象,所以代价函数会逐渐增大。
当我们绘制出上述曲线时,我们就可以判断出什么时候是过拟合什么时候欠拟合,判断的标准如下:
1. 当训练误差与交叉验证集误差接近时,并且都很大时,该模型高偏差(欠拟合);
2. 当训练误差远小于验证集误差时,并且训练误差很小时,该模型高方差(过拟合)。
判断出该模型是过拟合或者欠拟合之后,然后使用上述提到的过拟合和欠拟合的解决方法,对算法进行改进。
正则化对偏差和方差的影响
我们前面讲述过正则化可以有效的处理过拟合现象,但是我们上述所说的处理过拟合是在合适的λ情况下,那么λ值的大小对模型的性能是怎样影响的呢?我们采用上述与方次d对性能的影响相同的方式来分析λ的值对性能的影响。
我们首先选择一系列的λ值,通常λ的选择是0~10之间呈现二倍关系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,5.26,5.12,10)
构建方式如下:
选择λ的方法如下:
1.使用训练集训练处12个不同程度正则化模型;
2.用12个模型分别对交叉验证集计算出交叉验证误差;
3.选择得出交叉验证误差最小的模型;
4.运用步骤3选出的模型对测试集计算得出推广误差
我们同样可以将训练集和交叉验证集模型的代价函数与λ的值绘制在一张图上。对于训练集、验证集和测试集的代价函数计算公式为:
需要注意的是,当计算训练集、交叉验证集和测试集误差时,不计算正则项,然后绘制出训练集和交叉验证集代价函数与λ值的关系,如下图所示:
1. 当λ较小时,训练误差较小(过拟合)而交叉验证集误差较大;
2. 随着λ的增加(从过拟合到欠拟合的过程),训练集误差逐渐增大(欠拟合),而交叉验证集误差则是先减小后增大。
学习曲线
学习曲线也是一种可以判断算法是否处于过拟合还是欠拟合的情况,学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图像。学习曲先不仅可以帮助我们是不是处于过拟合或者欠拟合,它还可以帮助我们判断是否为了提高算法的性能需要我们收集多的数据。
假设我们有100行数据,我们从第一行数据开始,逐渐增加数据进行训练,得到每次训练数据的代价函数值。当数据很少时,训练模型能够非常完美的拟合很少的数据,但是训练出的模型却不能泛化其他的数据,所以当数据很少时,训练集的代价函数很小,但是交叉验证集的代价函数很大,随着样本的增加,训练集的代价函数逐渐增大,交叉验证集的代价函数逐渐减小。绘制的曲线如下图所示:
1. 如何用学习曲线识别欠拟合:
假设我们的模型处于欠拟合的情况下,拟合曲线如下图所示:
我们可以看出,无论我们怎样增加样本数据,误差都不会有很大改观。同时在欠拟合的情况下,会出现随着样本的增加,训练集代价函数和交叉验证集代价函数都很大的情况,在这种情况下,就没有必要花费时间在收集数据上了,同时这也是一种判断模型是过拟合还是欠拟合的方法。
2. 如何使用学习曲线识别过拟合:
假设我们有一个非常高次的多项式模型(比如最高次项达到100次),并且正则化非常小时,从下图可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。
对于过拟合现象时,会出现训练集代价函数一直都很小(虽然是增加的趋势),但是验证集的损失函数会很大(虽然是减小的趋势),同时训练集代价函数和验证集代价函数相差会很大,可以使用这种方法来判断该模型处于过拟合阶段。
对于神经网络我们在讨论一下过拟合和欠拟合现象:
使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但是计算代价小;使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。
对于 神经网络的模型选择 :我们一般选择较大的神经网络并采用正则化处理,而不会选择较小的神经网络。
对于 神经网络隐藏层的层数选择 ,一般我们从一层开始逐渐增加层数,为了更好的选择出最佳的层数,可以针对不同隐藏层层数的神经网络进行训练,然后选择交叉验证集代价函数最小的神经网络。
『玖』 神经网络测试结果很差,该怎么做
你好,计算机等级考试不是所有科目都考的,如计算机二级有office操作,C语言等,报名的时候是要你自己选择的,考试的时候也只考自己选择的科目。 ps:只选一门就行。
『拾』 MATLAB神经网络BP,误差超大,怎样调试是误差更接近目标值主要调试哪些参数谢谢。。。
被推荐的答案倒是没说错,基本上和没说一样…… 就好比问怎么安排时间,回答一个“合理安排时间”……
误差大,第一步需要尝试的是做归一化处理。有线性归一化,有对数函数归一化等等,这个你可以去网上搜索数据归一化方法,有相关的代码,应该。
第二部需要做出的改动是隐层节点数量,如果节点数量太多,那么结果的随机性就会很大,如果太少,那么复杂数据的规律计算不出来。多少层节点最合适,这个目前除了一个一个试没有更好的办法。但是你会发现每一个相同的结构计算出的结果却不尽相同,这个时候就需要考虑后续的问题。
第三步尝试,变换transfer function。麻烦你查查字典,因为我不是用中文学的神经网络。我姑且翻译成传输函数。传输函数在matlab中内建了3中 pureline logsig tansig。分别有不同的应用范围。因为没看到你的数据,我也不清楚具体应该推荐你用哪一种。不过你可以去网上搜索一下三种传输函数的特点。
一般情况下,前三步已经可以解决问题了。
如果不行,那么你需要尝试的就是比较高级的内容了。尝试一下,不行再追问。