首页 > 编程语言 >多层前馈神经网络及BP算法

多层前馈神经网络及BP算法

时间:2023-09-01 22:36:06浏览次数:42  
标签:偏置 前馈 神经网络 BP 所示 单元

一.多层前馈神经网络
首先说下多层前馈神经网络,BP算法,BP神经网络之间的关系。多层前馈[multilayer feed-forward]神经网络由一个输入层、一个或多个隐藏层和一个输出层组成,后向传播(BP)算法在多层前馈神经网络上面进行学习,采用BP算法的(多层)前馈神经网络被称为BP神经网络。给出一个多层前馈神经网络的拓扑结构,如下所示: 图1 多层前馈神经网络 神经网络的拓扑结构包括:输入层的单元数、隐藏层数(如果多于一层)、每个隐藏层的单元数和输出层的单元数。神经网络可以用于分类(预测给定元组的类标号)和数值预测(预测连续值输出)等。

二.后向传播(BP)算法详解
1.初始值权重
神经网络的权重被初始化为小随机数,每个神经元都有一个相关联的偏置,同样也被初始化为小随机数。
2.前向传播输入
以单个神经网络单元为例,如下所示: 这里写图片描述 给定隐藏层或输出层的单元,到单元的净输入,如下所示:

其中,是由上一层的单元到单元的连接的权重;是上一层的单元的输出;是单元的偏置。需要说明的是偏置充当阀值,用来改变单元的活性。 给定单元的净输入,单元的输出,如下所示:

3.后向传播误差
(1)对于输出层单元,误差用下式计算:

其中,是单元的实际输出,而给定训练元组的已知目标值。需要说明的是,是逻辑斯缔函数的导数。
(2)对于隐藏层单元,它的误差用下式计算:

其中,是由下一较高层中单元到单元的连接权重,而是单元的误差。
(3)权重更新,如下所示:

其中,是权重的改变量,变量是学习率,通常取0.0和1.0之间的常数值。
(4)偏置更新,如下所示:

其中,的改变量。

(5)权重和偏置更新
如果每处理一个样本就更新权重和偏置,称为实例更新(case update);如果处理完训练集中的所有元组之后再更新权重和偏置,称为周期更新(epoch update)。理论上,反向传播算法的数据推导使用周期更新,但是在实践中,实例更新通常产生更加准确的结果。
说明:误差反向传播的过程就是将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值,即权值调整的过程。
4.终止条件
如果满足条件之一,就可以停止训练,如下所示:
(1)前一周期所有的都太小,小于某个指定的阀值。
(2)前一周期误分类的元组百分比小于某个阀值。
(3)超过预先指定的周期数。
实践中,权重收敛可能需要数十万个周期。神经网络的训练有很多的经验和技巧,比如可以使用一种称为模拟退火的技术,使神经网络确保收敛到全局最优。

三.用BP训练多层前馈神经网络
举个例子具体说明使用BP算法训练多层前馈神经网络的每个细节,如下所示: 这里写图片描述 设置学习率为0.9,第一个训练元组为,其类标号为1。神经网络的初始权重和偏置值如表1所示: 这里写图片描述 根据给定的元组,计算每个神经元的净输入和输出,如表2所示: 这里写图片描述 每个神经元的误差值如表3所示: 这里写图片描述 说明:从误差的计算过程来理解反向(BP)传播算法也许更加直观和容易。 权重和偏置的更新如表4所示: 这里写图片描述 说明:将该神经网络模型训练好后,就可以得到权重和偏执参数,进而做二分类。

四.用Python实现BP神经网络[3]
神经网络拓扑结构,如下所示: 这里写图片描述 解析:
1.第33和35行:l1和l2分别表示第1层和第2层神经元的输出。(第0层表示元组输入)
2.第37行:l2_error与相对应。
3.第40行:l2_delta与输出层误差相对应。
4.第42行:l1_error与相对应。
5.第43行:l1_delta与隐藏层误差相对应。
6.第45行:l1.T.dot(l2_delta)与相对应,而syn1与相对应。
7.第46行:l0.T.dot(l1_delta)与相对应,而syn0与相对应。
说明:一边代码,一边方程,做到代码与方程的映射。这是一个基础的三层BP神经网络,但是麻雀虽小五脏俱全。主要的不足有几点:没有考虑偏置;没有考虑学习率;没有考虑正则化;使用的是周期更新,而不是实例更新(一个样本)和批量更新(m个样本)。但是,足以理解前馈神经网络和BP算法的工作原理。神经网络和BP算法的详细数学推导参考[5]。

参考文献:
[1]数据挖掘:概念与技术[第三版] [2]使用Python构造神经网络:http://www.ibm.com/developerworks/cn/linux/l-neurnet/
[3]一个11行Python代码实现的神经网络:http://python.jobbole.com/82758/
[4]用BP人工神经网络识别手写数字:http://blog.csdn.net/gzlaiyonghao/article/details/7109898
[5]反向传导算法:http://ufldl.stanford.edu/wiki/index.php/%E5%8F%8D%E5%90%91%E4%BC%A0%E5%AF%BC%E7%AE%97%E6%B3%95

标签:偏置,前馈,神经网络,BP,所示,单元
From: https://www.cnblogs.com/shengshengwang/p/17672965.html

相关文章

  • 残差神经网络:原理与实践
    VGGNet和GoogLeNet等网络都表明有足够的深度是模型表现良好的前提,但是在网络深度增加到一定程度时,更深的网络意味着更高的训练误差。误差升高的原因是网络越深,梯度弥散[还有梯度爆炸的可能性]的现象就越明显,所以在后向传播的时候,无法有效的把梯度更新到前面的网络层,靠前的网络层参......
  • ABP框架-介绍
    什么是ABPABP(ASP.NETBoilerplate)是一个开源的应用程序框架,以帮助开发人员快速开发。但它又不仅仅是一个框架,更提供了一套基于DDD的架构模型和最佳实践。下面我们来研究一个最简单的示例来看看使用ABP有哪些好处publicclassTaskAppService:ApplicationService,ITaskApp......
  • 【转】对神经网络与图像识别的好奇
    虽然我是个学Java的,但是今天看到人工智能的图像识别系统,不得不让我感到震惊与好奇,我学编程有两大爱好,一就是搞出个自己的大的系统,二就是研究AI,但是两者不能并肩,不然学的东西太多了。但是作为了解我推荐下下面的关于图像分析类的论文阅读:[论文阅读]WhenDoesLabelSmoothingHelp?......
  • 前馈神经网络解密:深入理解人工智能的基石
    本文深入探讨了前馈神经网络(FNN)的核心原理、结构、训练方法和先进变体。通过Python和PyTorch的实战演示,揭示了FNN的多样化应用。作者TechLead,拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业......
  • Tensorflow的简单神经网络
     #导入库importtensorflowastfimportnumpyasnpfromtensorflowimportkeras#定义和编译一个神经网络model=tf.keras.Sequential([keras.layers.Dense(units=1,input_shape=[1])])#编译并指定lossoptimizermodel.compile(optimizer='sgd',loss='mean_sq......
  • 神经网络架构:最新进展和未来挑战
    文章目录1.神经网络架构的演化历程1.1感知机(Perceptron)1.2多层感知机(Multi-layerPerceptron,MLP)1.3卷积神经网络(ConvolutionalNeuralNetwork,CNN)1.4循环神经网络(RecurrentNeuralNetwork,RNN)1.5长短时记忆网络(LongShort-TermMemory,LSTM)1.6注意力机制和Transformer2.最......
  • bp利用CSRF漏洞(dvwa)
    打开dvwa,将难度调为low,点击CSRF,打开后发现有一个修改密码的输入框:在这里修改密码,并用bp抓包,在httphistory查看数据包,点击engagementtools中的GenerateCSRFPoc根据请求包生成一个CSRF攻击的网页:在生成的代码中修改密码为12345,点击testinbrowser在浏览器中测试:复制生成网页的UR......
  • bp利用CSRF漏洞(dvwa)
    打开dvwa,将难度调为low,点击CSRF,打开后发现有一个修改密码的输入框:在这里修改密码,并用bp抓包,在httphistory查看数据包,点击engagementtools中的GenerateCSRFPoc根据请求包生成一个CSRF攻击的网页:在生成的代码中修改密码为12345,点击testinbrowser在浏览器中测试:复制生成网页的UR......
  • webpack生产环境优化:懒加载和预加载
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:懒加载和预加载一、直接加载浏览器一打开,直接加载了test.js这里使用了直接导入方式。直接导入:import{mul}from'./test';//./src/js/index.js//入口文件console.......
  • webpack生产环境优化:externals
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:externalsexternals配置主要是为了防止某些通过CDN引入的包被打包到输出的bundle中。一、核心配置/*webpack.config.jswebpack的配置文件路径:./webpack.config......