反向传播

神经网络反向传播原理(作用,为什么要反向传播) 参考 这里给出关键的一句话: 反向传播就是为了实现最优化,省去了重复的求导步骤 背景 在机器学习中,很多算法最后都会转化为求一个目标损失函数(loss function)的最小值。这个损失函数往往很复杂,难以求出最值的解析表达式。而梯度下降法正是为了解决这类问题。直观地说一下这个方法的思想:我们把求解损失函数最小值的过程看做“站在山坡某处去寻找山坡的最低点”。我们并不知道最低点的确切位置,“梯度下降”的策略是每次向“下坡路”的方向走一小步,经过长时间的走“下坡路”最后的停留位置也大概率在最低点附近。这个“ 阅读详情

最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进行补充,但是补充的又是错的,难怪觉得有问题。反向传播法其实是神经网络的基础了,但是很多人在学的时候总是会遇到一些问题,或者看到大篇的公式觉得好像很难就退缩了,其实不难,就是一个链式求导法则反复用。如果不想看公式,可以直接把数值带进去,实际的计算一下,体会一下这个过程之后再来推导公式,这样就会觉得很容易了。

  说到神经网络,大家看到这个图应该不陌生:

 

  这是典型的三层神经网络的基本构成,Layer L1是输入层,Layer L2是隐含层,Layer L3是隐含层,我们现在手里有一堆数据{x1,x2,x3,...,xn},输出也是一堆数据{y1,y2,y3,...,yn},现在要他们在隐含层做某种变换,让你把数据灌进去后得到你期望的输出。如果你希望你的输出和原始输入一样,那么就是最常见的自编码模型(Auto-Encoder)。可能有人会问,为什么要输入输出都一样呢?有什么用啊?其实应用挺广的,在图像识别,文本分类等等都会用到,我会专门再写一篇Auto-Encoder的文章来说明,包括一些变种之类的。如果你的输出和原始输入不一样,那么就是很常见的人工神经网络了,相当于让原始数据通过一个映射来得到我们想要的输出数据,也就是我们今天要讲的话题。

  本文直接举一个例子,带入数值演示反向传播法的过程,公式的推导等到下次写Auto-Encoder的时候再写,其实也很简单,感兴趣的同学可以自己推导下试试:)

  假设,你有这样一个网络层:

  第一层是输入层,包含两个神经元i1,i2,和截距项b1;第二层是隐含层,包含两个神经元h1,h2和截距项b2,第三层是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数我们默认为sigmoid函数。

  现在对他们赋上初值,如下图:

  其中,输入数据  i1=0.05,i2=0.10;

     输出数据 o1=0.01,o2=0.99;

     初始权重  w1=0.15,w2=0.20,w3=0.25,w4=0.30;

           w5=0.40,w6=0.45,w7=0.50,w8=0.55

 

  目标:给出输入数据i1,i2(0.05和0.10),使输出尽可能与原始输出o1,o2(0.01和0.99)接近。

 

  Step 1 前向传播

  1.输入层---->隐含层:

  计算神经元h1的输入加权和:

神经元h1的输出o1:(此处用到激活函数为sigmoid函数):

 

 

  同理,可计算出神经元h2的输出o2:

  

 

  2.隐含层---->输出层:

  计算输出层神经元o1和o2的值:

  

 

这样前向传播的过程就结束了,我们得到输出值为[0.75136079 , 0.772928465],与实际值[0.01 , 0.99]相差还很远,现在我们对误差进行反向传播,更新权值,重新计算输出。

 

Step 2 反向传播

1.计算总误差

总误差:(square error)

但是有两个输出,所以分别计算o1和o2的误差,总误差为两者之和:

 

2.隐含层---->输出层的权值更新:

以权重参数w5为例,如果我们想知道w5对整体误差产生了多少影响,可以用整体误差对w5求偏导求出:(链式法则)

下面的图可以更直观的看清楚误差是怎样反向传播的:

现在我们来分别计算每个式子的值:

计算:

计算:

(这一步实际上就是对sigmoid函数求导,比较简单,可以自己推导一下)

 

计算:

最后三者相乘:

这样我们就计算出整体误差E(total)对w5的偏导值。

回过头来再看看上面的公式,我们发现:

为了表达方便,用来表示输出层的误差:

因此,整体误差E(total)对w5的偏导公式可以写成:

如果输出层误差计为负的话,也可以写成:

最后我们来更新w5的值:

(其中,是学习速率,这里我们取0.5)

同理,可更新w6,w7,w8:

 

3.隐含层---->隐含层的权值更新:

 方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对w5的偏导时,是从out(o1)---->net(o1)---->w5,但是在隐含层之间的权值更新时,是out(h1)---->net(h1)---->w1,而out(h1)会接受E(o1)和E(o2)两个地方传来的误差,所以这个地方两个都要计算。

 

 

计算:

先计算:

同理,计算出:

          

两者相加得到总值:

再计算:

再计算:

最后,三者相乘:

 为了简化公式,用sigma(h1)表示隐含层单元h1的误差:

最后,更新w1的权值:

同理,额可更新w2,w3,w4的权值:

 

  这样误差反向传播法就完成了,最后我们再把更新的权值重新计算,不停地迭代,在这个例子中第一次迭代之后,总误差E(total)由0.298371109下降至0.291027924。迭代10000次后,总误差为0.000035085,输出为[0.015912196,0.984065734](原输入为[0.01,0.99]),证明效果还是不错的。

反向传播算法(backpropagation) 算法简介 百度百科: BP算法(即反向传播算法)适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。BP网络的输入输出关系实质上是一种映射关系:一个n输入m输出的BP神经网络所完成的功能是从n维欧氏空间向m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。它的信息处理能力来源于简单非线性函数的多次复合,因此具有很强的函数复现能力。这是BP算法得以应用的基础。 ... 阅读详情

相关推荐

深入浅出反向传播原理 Backpropagation

深入浅出反向传播原理 Backpropagation 在深度学习中,我们的训练模型是一个多层次的神经网络,每个节点对应一个激活函数,上一个Layer的输出就是下一个Layer的输入。这样的模型,非常像复合函数层层的依赖关系:可以把第一层Layer想象成g(x),则经过下一个Layer,函数就可以表示成f[g(x)]。依靠链式法则,我们可以简化对神经网络梯度下降优化参数时的计算,从而大大减少训练所...

Ever Young 7448

一文弄懂神经网络中的反向传播法——BackPropagation

  最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进行补充,但是补充的又是错的,难怪觉得有问题。反向传播法其实是神经网络的基础了,但是很多人在学的时候总是会遇到一些问题,或者看到大篇的公式觉得好像很难就退缩了,其实不难,就是一个链式求导法则反复用。...

weixin_30757793的博客 3676

【机器学习】反向传播的基本概念、如何优化反向传播算法以及大量样本如何优化反向传播

反向传播算法是深度学习领域的关键组成部分,理解其原理和实现过程对于深入掌握机器学习和深度学习至关重要通过上述策略,可以有效地优化反向传播算法,提升神经网络的训练效果和模型性能。不过,需要注意的是,不同的优化策略适用于不同类型的网络和数据集,通常需要根据具体情况进行选择和调整通过这些详细的策略,可以有效地处理大量样本的反向传播问题,提高训练效率和模型性能。在实际操作中,可能需要根据具体情况进行调整和优化。

ya的博客 2134

神经网络中的反向传播----Back Propagation

说到神经网络,大家看到这个图应该不陌生:     这是典型的三层神经网络的基本构成,Layer L1是输入层,Layer L2是隐含层,Layer L3是隐含层,我们现在手里有一堆数据{x1,x2,x3,...,xn},输出也是一堆数据{y1,y2,y3,...,yn},现在要他们在隐含层做某种变换,让你把数据灌进去后得到你期望的输出。如果你希望你的输出和原始输入一样,那么就是

小白_努力 6241

LSTM反向传播求导

1 LSTM结构图和公式 将结构图转换为如下所示(将“用于极简”的说明反向传播),实际上当用于反向传播时,所有的箭头的方向都是需要反过来看。 图中τ 代表最后时刻。 2 反向传播 tips 2.1本文所有向量全为列向量 以最后时刻的 构造softmax函数。 2.2 softmax层反向传播 公式(1)结论很简单,但实际上是 L 先对 a 求偏导然后再对 z 求偏导。 2.3hadama...

weixin_39910711的博客 1968

反向传播算法的理论基础,反向传播算法应用

反向传播算法适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上写作猫。反向传播算法网络的输入输出关系实质上是一种映射关系:一个n输入m输出的BP神经网络所完成的功能是从n维欧氏空间向m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。反向传播算法主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络的对输入的响应达到预定的目标范围为止。反向传播算法的信息处理能力来源于简单非线性函数的多次复合,因此具有很强的函数复现能力。这是BP算法得以应用的基础。...

jiefu6666的博客 1705

深度学习之反向传播算法

最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推...

weixin_43886278的博客 530

反向传播详解

这是一场以误差(Error)为主导的反向传播(Back Propagation)运动,旨在得到最优的全局参数矩阵,进而将多层神经网络应用到分类或者回归任务中去 文章目录一、为什么引入反向传播二、反向传播的重要性三、反向传播的推导过程四、反向传播与梯度下降的关系 一、为什么引入反向传播 神经网络的过程就是正向传播得到Loss值,再把Loss值反向传播,并对神经网络的参数进行更新,其中反向传播正是神经...

南淮北安的博客 1720

BP神经网络后向传播算法

下图显示了三层神经网络的后向传播算法实现过程:         每个神经元有两个单元组成。一个是权重和输入信号。另一个是非线性单元,叫做激励函数。信号e是激励信号。y = f(e) 是非线性单元的输出,即是神经元的输出。         为了训练神经网络,我们需要训练数据。训练数据由输入信号(x1 and x2 )和期

yunpiao123456的专栏 1万+

利用OTSU阈值算法在ZYNQ上实现浒苔识别

利用OTSU阈值算法进行图像二值化,结果用HDMI显示

qq_38075564的博客 1275

语音数据标注工具与平台

最近在做语音深度学习的项目,整理了一下语音数据标注工具和语音标注平台,供大家参考 语音标注工具–Praat Praat是目前已经成为比较流行也比较专业的语音处理的软件,可以进行语音数据标注、语音录制、语音合成、语音分析等等,具有免费、占用空间小、通用性强、可移植性好等特点 官网链接 http://www.fon.hum.uva.nl/praat/ 汉化版下载 http://www.hejingzo...

qq_21379593的博客 1万+

吴恩达神经网络反向传播算法matlab作业疑问的解答

吴恩达神经网络反向传播算法matlab作业疑问

rodneyzhaonet的专栏 1195

用ESP32和HomeSpan自制HomeKit智能灯,手把手教你从零接入苹果家庭App

本文详细介绍了如何使用ESP32开发板和HomeSpan开源库自制原生HomeKit智能灯,从硬件搭建到软件配置,再到通过苹果家庭App控制的全过程。项目绕过了苹果MFi认证,成本低廉但功能完整,支持Siri语音控制、自动化场景等高级功能,是智能家居DIY的实用指南。

weixin_28717431的博客 325

误差反向传播算法

通过单个感知机或者单层神经网络只能够实现线性分类的问题,而多层神经网络可以解决非线性分类问题。 神经网络中的模型参数,是神经元模型中的连接权重以及每个功能神经元的阈值, 这些模型参数并不是我们人工设计或者指定的,而是通过算法自动学习到的。 和其他机器学习算法一样,神经网络的训练,就是给定训练集,通过学习算法,确定学习参数的过程。可以直接使用梯度下降法需要计算损失函数的梯度,在没有隐含层的单层神经网络中,可以通过计算直接得到梯度。 在多层神经网络中,上一层的输出是下一层的输入,要在网络中的每一层计算损失函

xuechanba的博客 1万+

nginx配置视频流加密防盗链(一)安装nginx插件

前段时间研究了一下视频流的简单加密防盗链,参考了很多文章,最后总算搞出来了。现在自己总结了一下。

u013294657的博客 1868

SAP MM新手避坑指南:工厂间调拨用301还是303?手把手教你选对移动类型

本文深入解析SAP MM模块中工厂间调拨的301与303移动类型,帮助新手避开常见陷阱。通过对比一步法(301)和两步法(303+305)的核心差异、适用场景及财务影响,提供清晰的决策框架和实战技巧,确保库存调拨的准确性和效率。

weixin_29223603的博客 349

反向传播算法实例

反向传播算法实例Step1 前向传播 算例情景: 假设有一个如下图所示的三层结构的神经网络。其中,第一层是输入层,包含两个神经元 i1,i2i_1, i_2i1​,i2​ 和截距项 b1b_1b1​ ;第二层是隐藏层,包含两个神经元 h1,h2h_1, h_2h1​,h2​ 和截距项 b2b_2b2​ ;第三层是输出层,包含两个输出项 o1,o2o_1, o_2o1​,o2​。每条线上标的wiw...

Yale-曼陀罗 6163

基于 Python Flask 的智能个人财务系统

4.财务分析与报告:自动生成财务分析报告,提供图表展示(如饼图、柱状图)帮助用户了解收支状况和财务趋势。9.管理员管理功能:提供管理员模块,允许管理员查看用户财务数据、生成统计报告,并进行用户管理与权限控制。5.资产管理:用户可以记录并追踪个人资产(如房产、车辆、投资等),系统提供资产价值增减情况和趋势分析。3.预算制定与管理:用户根据收入设定每月预算,系统自动对比实际支出与预算差异,实时提醒预算完成情况。6.信用卡管理:提供信用卡账单记录与管理功能,提醒用户信用卡还款日期,避免逾期,帮助管理信用卡消费。

weixin_68689665的博客 424

卷积层的反向传播

本文翻译于这篇文章,如果想看原文可以直接点击这篇文章。我是一篇好文章 ----- 前言 卷积的过程其实是一个线性变化的过程:其实就y=wx+b的过程 文中提到了w的大小和x大小的关系,一般来说都是w比x小,卷积核一般都是3*3之类的。文中也提到了了解卷积的反向传播的过程要先链接基本的反向传播和链式法则。损失函数对卷积核参数的影响,是通过链式法则,不断的梯度相互乘积的结果,其中包括输入部分和梯度部分...

weixin_37721058的博客 5952

Anaconda启动失败,一直在loading application的问题

实战基础新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本

Tristan的博客 2772

【学习系列】SAP RAP 8:行为定义-Authorization Control

本文介绍了SAP RAP中的授权控制实现方法,主要分为读取操作和修改操作两种场景。读取操作通过ABAP CDS的数据控制语言(DCL)实现,使用访问控制对象限制数据可见范围;修改操作则通过行为定义中的权限检查,包括全局授权、实例授权和预检查三种方式。文章详细说明了如何使用DCL创建访问控制规则,并通过实例演示了全局授权和实例授权的代码实现方法,以及预检查功能在数据更新前的权限验证。这些授权控制机制共同确保用户只能访问和操作其权限范围内的数据,有效保障系统安全性。

DeveloperMrMeng的博客 439

反向传播原理的反向传播算法

其中,X是输入数据,W1, W2, W3分别是每一层的权重,b1, b2, b3分别是每一层的偏置,activation表示激活函数,softmax是输出层的激活函数。反向传播算法的核心思想是利用链式法则来计算损失函数对每个参数的梯度,然后沿着梯度的反方向更新参数,以降低损失函数的值。最后是反向传播算法的具体实现,包括前向传播、计算梯度和更新参数。前向传播阶段是通过输入数据和当前参数计算出模型的输出,而反向传播阶段是通过计算损失函数对每个参数的梯度,并利用梯度下降算法来更新参数。1. 反向传播原理解释。

互联网知识分享 2102

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

反向传播算法详解

作者:Great Learning Team deephub.ai 翻译组 神经网络 什么是反向传播? 反向传播是如何工作的? 损失函数 为什么我们需要反向传播? 前馈网络 反向传播的类型 案例研究 在典型的编程中,我们输入数据,执行处理逻辑并接收输出。 如果输出数据可以某种方式影响处理逻辑怎么办? 那就是反向传播算法。 它对以前的模块产生积极影响,以提高准确性和效率。 让我们来深入研究一下...

deephub 4009

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

什么叫误差的反向传播,反向传播误差怎么算的

自从40年代赫布(D.O.Hebb)提出的学习规则以来,人们相继提出了各种各样的学习算法。其中以在1986年Rumelhart等提出的误差反向传播法,即BP(errorBackPropagation)法影响最为广泛。直到今天,BP算法仍然是自动控制上最重要、应用最多的有效算法。是用于多层神经网络训练的著名算法,有理论依据坚实、推导过程严谨、物理概念清楚、通用性强等优点。但是,人们在使用中发现BP算法存在收敛速度缓慢、易陷入局部极小等缺点。

aifamao2的博客 3989

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

06 Pytorch实现反向传播

反向传播   上一篇博客大致介绍了反向传播,但是没有提及到计算图的概念。比如下面我以一个两层的神经网络为例,它的 y_hat 表达式为:      下面我们来构建它的计算图:      这里需要注意的是我们现在的一个两层的神经网络的 y_hat 可以展开为:      然后我们发现不断地进行线性变换,不管你有多少层最后都会统一成 y=W∗x+by = W*x + by=W∗x+b 的形式,也就是如下的计算图:      也就是说层数多和层数少没什么区别。为了解决这个问题,就是要提高模型的复杂度。换句

qq_41033011的博客 4140
上一篇: tensorflow之pb文件保存与载入
下一篇: 二维高斯函数应用于图像处理
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值