导航:首页 > 网络安全 > bp神经网络是如何更改权重的

bp神经网络是如何更改权重的

发布时间:2022-10-30 12:10:49

A. BP神经网络中,如何设定神经元的初始连接权重以及阀值

初始连接权重关系到网络训练速度的快慢以及收敛速率,在基本的神经网络中,这个权重是随机设定的。在网络训练的过程中沿着误差减小的方向不断进行调整。针对这个权重的随机性不确定的缺点,有人提出了用遗传算法初始化BP的初始权重和阈值的想法,提出了遗传神经网络模型,并且有人预言下一代的神经网络将会是遗传神经网络。希望对你有所帮助。你可以查看这方面的文献

B. 深入浅出BP神经网络算法的原理

深入浅出BP神经网络算法的原理
相信每位刚接触神经网络的时候都会先碰到BP算法的问题,如何形象快速地理解BP神经网络就是我们学习的高级乐趣了(画外音:乐趣?你在跟我谈乐趣?)
本篇博文就是要简单粗暴地帮助各位童鞋快速入门采取BP算法的神经网络。
BP神经网络是怎样的一种定义?看这句话:一种按“误差逆传播算法训练”的多层前馈网络。
BP的思想就是:利用输出后的误差来估计输出层前一层的误差,再用这层误差来估计更前一层误差,如此获取所有各层误差估计。这里的误差估计可以理解为某种偏导数,我们就是根据这种偏导数来调整各层的连接权值,再用调整后的连接权值重新计算输出误差。直到输出的误差达到符合的要求或者迭代次数溢出设定值。
说来说去,“误差”这个词说的很多嘛,说明这个算法是不是跟误差有很大的关系?
没错,BP的传播对象就是“误差”,传播目的就是得到所有层的估计误差。
它的学习规则是:使用最速下降法,通过反向传播(就是一层一层往前传)不断调整网络的权值和阈值,最后使全局误差系数最小。
它的学习本质就是:对各连接权值的动态调整。

拓扑结构如上图:输入层(input),隐藏层(hide layer),输出层(output)
BP网络的优势就是能学习和储存大量的输入输出的关系,而不用事先指出这种数学关系。那么它是如何学习的?
BP利用处处可导的激活函数来描述该层输入与该层输出的关系,常用S型函数δ来当作激活函数。

我们现在开始有监督的BP神经网络学习算法:
1、正向传播得到输出层误差e
=>输入层输入样本=>各隐藏层=>输出层
2、判断是否反向传播
=>若输出层误差与期望不符=>反向传播
3、误差反向传播
=>误差在各层显示=>修正各层单元的权值,直到误差减少到可接受程度。
算法阐述起来比较简单,接下来通过数学公式来认识BP的真实面目。
假设我们的网络结构是一个含有N个神经元的输入层,含有P个神经元的隐层,含有Q个神经元的输出层。

这些变量分别如下:

认识好以上变量后,开始计算:
一、用(-1,1)内的随机数初始化误差函数,并设定精度ε,最多迭代次数M
二、随机选取第k个输入样本及对应的期望输出

重复以下步骤至误差达到要求:
三、计算隐含层各神经元的输入和输出

四、计算误差函数e对输出层各神经元的偏导数,根据输出层期望输出和实际输出以及输出层输入等参数计算。

五、计算误差函数对隐藏层各神经元的偏导数,根据后一层(这里即输出层)的灵敏度(稍后介绍灵敏度)δo(k),后一层连接权值w,以及该层的输入值等参数计算
六、利用第四步中的偏导数来修正输出层连接权值

七、利用第五步中的偏导数来修正隐藏层连接权值

八、计算全局误差(m个样本,q个类别)

比较具体的计算方法介绍好了,接下来用比较简洁的数学公式来大致地概括这个过程,相信看完上述的详细步骤都会有些了解和领悟。
假设我们的神经网络是这样的,此时有两个隐藏层。
我们先来理解灵敏度是什么
看下面一个公式:

这个公式是误差对b的一个偏导数,这个b是怎么?它是一个基,灵敏度δ就是误差对基的变化率,也就是导数。
因为?u/?b=1,所以?E/?b=?E/?u=δ,也就是说bias基的灵敏度?E/?b=δ等于误差E对一个节点全部输入u的导数?E/?u。
也可以认为这里的灵敏度等于误差E对该层输入的导数,注意了,这里的输入是上图U级别的输入,即已经完成层与层权值计算后的输入。
每一个隐藏层第l层的灵敏度为:

这里的“?”表示每个元素相乘,不懂的可与上面详细公式对比理解
而输出层的灵敏度计算方法不同,为:

而最后的修正权值为灵敏度乘以该层的输入值,注意了,这里的输入可是未曾乘以权值的输入,即上图的Xi级别。

对于每一个权值(W)ij都有一个特定的学习率ηIj,由算法学习完成。

C. BP神经网络中为什么设置阈值

你这是不是用遗传算法优化权值和阀值啊?
我不知道你x的哪里来的?所以也不知道你是如何确定初始权值和阀值。
不过我们平常写程序时这些值都是随机赋予的。

D. BP神经网络的梳理

BP神经网络被称为“深度学习之旅的开端”,是神经网络的入门算法。
各种高大上的神经网络都是基于BP网络出发的,最基础的原理都是由BP网络而来 [1] ,另外由于BP神经网络结构简单,算法经典, 是神经网络中应用最广泛的一种。

BP神经网络(back propagation neural network)全称是反向传播神经网络。
神经网络发展部分背景如下 [2] :

为解决非线性问题,BP神经网络应运而生。

那么什么是BP神经网络?稍微专业点的解释要怎么说呢?

很喜欢 最简单的神经网络--Bp神经网络 一文对算法原理的解释,语言活泼,案例简单,由浅入深。
文中提到所谓的 AI 技术,本质上是一种数据处理处理技术,它的强大来自于两方面:1.互联网的发展带来的海量数据信息;2.计算机深度学习算法的快速发展。AI 其实并没有什么神秘,只是在算法上更为复杂 [3] 。

我们从上面的定义出发来解释BP神经网络的原理。

BP神经网络整个网络结构包含了:一层输入层,一到多层隐藏层,一层输出层。
一般说L层神经网络,指的是有L个隐层,输入层和输出层都不计算在内的 [6] 。

BP神经网络模型训练的学习过程由信号的 正向传播 和误差的 反向传播 两个过程组成。

什么是信号的正向传播?顾名思义,就是结构图从左到右的运算过程。

我们来看看结构图中每个小圆圈是怎么运作的。我们把小圈圈叫做神经元,是组成神经网络的基本单元。

正向传播就是输入数据经过一层一层的神经元运算、输出的过程,最后一层输出值作为算法预测值y'。

前面正向传播的时候我们提到权重w、偏置b,但我们并不知道权重w、偏置b的值应该是什么。关于最优参数的求解,我们在 线性回归 、 逻辑回归 两章中有了详细说明。大致来讲就是:

BP神经网络全称 back propagation neural network,back propagation反向传播是什么?
反向传播的建设本质上就是寻找最优的参数组合,和上面的流程差不多,根据算法预测值和实际值之间的损失函数L(y',y),来反方向地计算每一层的z、a、w、b的偏导数,从而更新参数。
对反向传播而言,输入的内容是预测值和实际值的误差,输出的内容是对参数的更新,方向是从右往左,一层一层的更新每一层的参数。

BP神经网络通过先正向传播,构建参数和输入值的关系,通过预测值和实际值的误差,反向传播修复权重;读入新数据再正向传播预测,再反向传播修正,...,通过多次循环达到最小损失值,此时构造的模型拥有最优的参数组合。

以一个简单的BP神经网络为例,由3个输入层,2层隐藏层,每层2个神经元,1个输出层组成。

【输入层】传入
【第一层隐藏层】
对于 神经元而言,传入 ,加权求和加偏置激活函数处理后,输出 ;
对于 神经元而言,传入 ,加权求和加偏置函数处理后,输出 ;
输出:

【第二层隐藏层】
对于 神经元而言,传入 ,加权求和加偏置激活函数处理后,输出 ;
对于 神经元而言,传入 ,加权求和加偏置激活函数处理后,输出 ;
输出:

【输出层】
对于输出层神经元而言,输入 ,加权求和加偏置激活函数处理后,输出 ,输出的是一个值

第一次运行正向传播这个流程时随用随机参数就好,通过反向传播不断优化。因此需要在一开始对 设置一个随机的初始值。

首先计算正向传播输出值 与实际值的损失 ,是一个数值。所谓反向是从右到左一步步来的,先回到 ,修正参数 。

以此类推,通过对损失函数求偏导跟新参数 ,再跟新参数 。这时又回到了起点,新的数据传入又可以开始正向传播了。

keras可以快速搭建神经网络,例如以下为输入层包含7129个结点,一层隐藏层,包含128个结点,一个输出层,是二分类模型。

神经网络反向传播的优化目标为loss,可以观察到loss的值在不断的优化。

可以通过model.get_layer().get_weights()获得每一层训练后的参数结果。通过model.predict()预测新数据。

至此,BP神经网络的整个运算流程已经过了一遍。之前提到BP神经网络是为解决非线性问题应运而生的,那么为什么BP神经网络可以解决非线性问题呢?
还记得神经元里有一个激活函数的操作吗?神经网络通过激活函数的使用加入非线性因素。
通过使用非线性的激活函数可以使神经网络随意逼近复杂函数,从而使BP神经网络既可以处理线性问题,也可以处理非线性问题。

为什么激活函数的使用可以加入非线性因素 [7] ?

其实逻辑回归算法可以看作只有一个神经元的单层神经网络,只对线性可分的数据进行分类。
输入参数,加权求和,sigmoid作为激活函数计算后输出结果,模型预测值和实际值计算损失Loss,反向传播梯度下降求编导,获得最优参数。

BP神经网络是比 Logistic Regression 复杂得多的模型,它的拟合能力很强,可以处理很多 Logistic Regression处理不了的数据,但是也更容易过拟合。

具体用什么算法还是要看训练数据的情况,没有一种算法是使用所有情况的。

常见的前馈神经网络有BP网络,RBF网络等。

BP神经网络的一个主要问题是:结构不好设计。
网络隐含层的层数和单元数的选择尚无理论上的指导,一般是根据经验或者通过反复实验确定。

但是BP神经网络简单、易行、计算量小、并行性强,目前仍是多层前向网络的首选算法。

[1] 深度学习开端---BP神经网络: https://blog.csdn.net/Chile_Wang/article/details/100557010
[2] BP神经网络发展历史: https://zhuanlan.hu.com/p/47998728
[3] 最简单的神经网络--Bp神经网络: https://blog.csdn.net/weixin_40432828/article/details/82192709
[4] 神经网络的基本概念: https://blog.csdn.net/jinyuan7708/article/details/82466653
[5] 神经网络中的 “隐藏层” 理解: https://blog.csdn.net/nanhuaibeian/article/details/100183000
[6] AI学习笔记:神经元与神经网络: https://www.jianshu.com/p/65eb2fce0e9e
[7] 线性模型和非线性模型的区别: https://www.cnblogs.com/toone/p/8574294.html
[8] BP神经网络是否优于logistic回归: https://www.hu.com/question/27823925/answer/38460833

E. BP神经网络的模型已经训练好,想用多一些数据继续训练,怎么在原来的基础上训练呢

保存权重,下次赋值给新定义的网络。

F. BP神经网络在权重优化中的应用

不好意思!
走错房间了!
这里是数学!
美邦建议您
去别的地方看看!

G. 神经网络权值怎么确定

神经网络的权值是通过对网络的训练得到的。如果使用MATLAB的话不要自己设定,newff之后会自动赋值。也可以手动:net.IW{}= ; net.bias{}=。一般来说输入归一化,那么w和b取0-1的随机数就行。神经网络的权值确定的目的是为了让神经网络在训练过程中学习到有用的信息,这意味着参数梯度不应该为0。

参数初始化要满足两个必要条件:

1、各个激活层不会出现饱和现象,比如对于sigmoid激活函数,初始化值不能太大或太小,导致陷入其饱和区。

2、各个激活值不为0,如果激活层输出为零,也就是下一层卷积层的输入为零,所以这个卷积层对权值求偏导为零,从而导致梯度为0。

(7)bp神经网络是如何更改权重的扩展阅读:

神经网络和权值的关系。

在训练智能体执行任务时,会选择一个典型的神经网络框架,并相信它有潜力为这个任务编码特定的策略。注意这里只是有潜力,还要学习权重参数,才能将这种潜力变化为能力。

受到自然界早成行为及先天能力的启发,在这项工作中,研究者构建了一个能自然执行给定任务的神经网络。也就是说,找到一个先天的神经网络架构,然后只需要随机初始化的权值就能执行任务。研究者表示,这种不用学习参数的神经网络架构在强化学习与监督学习都有很好的表现。

其实如果想象神经网络架构提供的就是一个圈,那么常规学习权值就是找到一个最优点(或最优参数解)。但是对于不用学习权重的神经网络,它就相当于引入了一个非常强的归纳偏置,以至于,整个架构偏置到能直接解决某个问题。

但是对于不用学习权重的神经网络,它相当于不停地特化架构,或者说降低模型方差。这样,当架构越来越小而只包含最优解时,随机化的权值也就能解决实际问题了。如研究者那样从小架构到大架构搜索也是可行的,只要架构能正好将最优解包围住就行了。

H. matlab中BP神经网络如何设置初始权重

因为初始值(初始权值和阀值)都在x这个向量中,x(n,1)的长度n为:n=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum
其中inputnum*hiddennum是输入层到隐含层的权值数量,hiddennum是隐含层神经元个数(即隐含层阀值个数),hiddennum*outputnum是隐含层到输出层权值个数,outputnum是输出层神经元个数(即输出层阀值个数);

I. BP神经网络中初始权值和阈值的设定

首先需要了解BP神经网络是一种多层前馈网络。以看一下在matlab中BP神经网络的训练函数,有梯度下降法traingd,弹性梯度下降法trainrp,自适应lr梯度下降法traingda等。

因为初始值(初始权值和阀值)都在x这个向量中,x(n,1)的长度n为:n=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum

其中inputnum*hiddennum是输入层到隐含层的权值数量,hiddennum是隐含层神经元个数(即隐含层阀值个数),hiddennum*outputnum是隐含层到输出层权值个数,outputnum是输出层神经元个数(即输出层阀值个数)。

结构

BP网络是在输入层与输出层之间增加若干层(一层或多层)神经元,这些神经元称为隐单元,它们与外界没有直接的联系,但其状态的改变,则能影响输入与输出之间的关系,每一层可以有若干个节点。

BP神经网络的计算过程由正向计算过程和反向计算过程组成。正向传播过程,输入模式从输入层经隐单元层逐层处理,并转向输出层,每~层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转入反向传播,将误差信号沿原来的连接通路返回,通过修改各神经元的权值,使得误差信号最小。

以上内容参考:网络-BP神经网络

阅读全文

与bp神经网络是如何更改权重的相关的资料

热点内容
如何避免网络交友诈骗 浏览:572
电信网络费怎么取消 浏览:843
oppo手机没移动网络怎么办 浏览:116
路由器已连接就是无法访问网络 浏览:408
网络访问在哪里看 浏览:35
提示无法加入无线网络 浏览:178
小米3盒子增强版无线网络 浏览:133
台式电脑用网线好还是无线网络好 浏览:126
网络大屏哪个好 浏览:799
怎样查看移动网络速度 浏览:622
网络显示光信号咋回事 浏览:295
iphone怎么设置网络消耗 浏览:644
合肥付费网络推广哪里有 浏览:212
网络怎么设置才最好 浏览:742
wifi网络设置是有线无线 浏览:623
网络游戏温度多少度 浏览:450
教室的希沃白板怎么连接网络 浏览:571
三星i450网络设置 浏览:492
电脑无法连接家用网络 浏览:95
昆广电电脑怎么连接网络 浏览:166

友情链接