P8第一讲(选修):反向传播Backpropagation

news2024/11/8 19:59:07

8. 第 1 讲(选修):反向传播_哔哩哔哩_bilibili

Gradient Descent

neual work基本架构已经学过了

 backpropagation(反向传播)可以帮助我们有效的进行渐变迭代计算(帮助计算梯度)。

假设网络有一大堆参数:

首先选一个初始的参数\theta ^{^{0}}

 然后计算\theta ^{^{0}}对 Loss function的gradient

 也就是计算每一个loss function中的参数,如下:

 计算出这个vector之后更新参数:

 如何有效的计算出\Delta L(\theta ) vector,就是用backpropagation。

唯一有效的是backparopagation,它其中比较高深的就是数学Chain Rule。

Chain Rule

case1   假设有2个function,y=g(x),z=h(y), x会影响y,y会影响z

 case2  如图三个函数,其中s的变化影响x和y,x和y的变化影响z。

第一种情况下,一元复合函数求导,内部求导与外部求导的乘积。

第二种情况下,多元复合函数求导,划分求导路径,不同路径求导后加和就行了。

回到neual work training

 

 定义一个loss,看图中的Loss Function,是求和所有trainning data的某一个loss值c,

j将x^{n}带到 neual network中得到一个y^{^{n}}, neual network的希望得到值y\widehat{}^{^{n}}就是最正确的,

定义y^{^{n}}y\widehat{}^{^{n}}之间的距离就是C^{^{n}},然后L对w偏微分

 

 如何计算\frac{\partial L}{\partial w}=\sum_{n=1}^{N}\frac{\partial C^{n}(\theta )}{\partial w},先求每一个c对w偏微分,再求和。

先考虑某一个neual,

 

在计算损失函数函数的时候,总的损失函数可以写成每一个训练样本所构成的损失函数之和。而每一个样本所构成的损失函数为这个样本经模型输出后,模型的预测值与样本实际值之间的差距。不管是交叉熵还是均方误差都是在衡量这个差距。

那么为了分析总的损失函数,对总的损失函数求导,我们可以对每个样本的损失函数进行求导进行分析,之后进行求和分析就行了。先对上图中红色三角形的一个小的逻辑回归进行分析。
 

第一个layer的neual

 

拿w作为例子计算:计算\frac{\partial C}{\partial w},就是转化为求\frac{\partial z}{\partial w}\frac{\partial C}{\partial z}.

Forward pass :计算\frac{\partial z}{\partial w}

对一个逻辑回归进行分析,每个逻辑回归先进行一个线性的运算过程,在进行一个sigmoid函数处理过程,当然激活函数也是可以选择其他激活函数的。

那么对损失函数求导就可以拆成两项分布求导的积,如图,一项是损失函数对z求导(z为逻辑回归中的线性方程),一项是z对我们需要梯度下降的参数w的求导。

z对w求导称为前向传播,损失函数对z求导称为反向传播。
 

Backpropagation-Forward pass

 先看如何计算\frac{\partial z}{\partial w^{_{1}}},

 

规律是看w前面接的是什么,w1再上图中接的是x1,w2接的是x2;也就是看它的input,input是什么偏微分就是什么。

 

 最后得到的是:

那么我们就能够很容易理解前向传播了,对于前向传播中的偏微分,这个值应该是上一级的输出值,这也代表了前向传播中某一个参数的权重。 

 Backpropagation-Backward pass

\frac{\partial C}{\partial z},

 

接下来对反向传播进行求解分析,如上图。从这一节神经元向之后的神经元看过去,对z需要进行一个激活函数的运算(这个例子假设是sigmoid函数),后作为下一级的输入。那我们的反向传播的偏微分就可以写成图中的相乘的形式,由损失函数对激活函数偏导乘激活函数对z偏导。 

 

 

那么另一部分怎么求解呢?假设我们这个模型是下一级只连接了两个神经元(更多神经元如果理解这个后也就明白了),那么我们的输出结果就会对之后的两个神经元产生影响,那么我们可以用求导的链式法则去表示出上一步我们需要求解的部分,如上图。我们发现图中的两个部分还是没有求解出来。
 

另外一个neural,

 

换一种思路去更好的理解反向传播,如上图。可以看成是一个新的网络,这个网络是和我们刚才的网络输入输出是相反的。这个网络输入了下图中的偏导数,经过上文中介绍的处理方式,得到了之前一级的偏导数,这就是一种反向传播。

而对于σ(z)函数的偏导,z在输入的时候就已经确定了具体的大小,所以σ(z)函数的偏导也就是确定的常数了
 

最终计算下图中的红方块值

 

如上图,当下一层为输出层的时候,由于我们在输入样本时是可以计算出输出值y1y2,所以这部分的偏导数也是可以很容易做出来的。

 

 

 

这种情况下,我们很容易想到,如果知道下一层的微分值,那么不是可以很容易求解出这一层的微分值嘛?

这时大家肯定想到了递归的思想,不断的递归就可以推到输出层从而计算出我们想要的结果。

一直推到outputlayer。

从后往前比从前往后更加有效率

建立一个新的反向的neual work运算

 

最后在这个部分总结下bp,bp是为了简化对神经网络做梯度下降时带来的运算量巨大的问题。bp主要分为反向传播和前向传播。

前向传播很容易,主要传播的就是神经网络的输入。这个每一级的输入都会作为我们的偏导数来供我们去做梯度下降。

反向传播传播的是损失函数对z的偏导(z是每一级线性方程的输出),这个偏导数可以通过,从输出层到输入层的反向求解,使得运算达到进一步的简化。
 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零基础多图详解图神经网络(GNN/GCN)【论文精读】

原文链接: A Gentle Introduction to Graph Neural Networks (distill.pub) 我们不仅仅关系整个图的架构,其实我们更关心的是每个顶点每条边和整个图所表示的信息。 我们如何把我们想要的信息表示成以上这些向量,以及这些向量是否能够通过数据…

uni-app打开第三方地图软件进行导航

最近在开发字节小程序的过程中遇到地图导航的需求,相信大家也会遇到所以我为大家整理了一篇干货内容。 下面是我整理的代码案例---------记得喝水(太“干”了,复制就能用)。 效果图如下: 1.点击图标弹出弹框进行选择…

数据结构与算法基础——算法分析(1)

算法的定义 算法:对特定问题的求解方法和步骤的描述,在计算机中,他是指令的有限集合。 举例:求解一元二次方程的根 描述算法的基本方式: (1)自然语言 (2)流程图 &…

CSS3 弹性盒子(flex、flex-direction属性、flex-wrap属性、align-items属性、align-content属性)详解

文章目录flexflex-direction 属性flex-wrap 属性align-items 属性align-content 属性的使用flex 在 CSS3 中给 display 属性增加了新的属性值 flex,如果一个元素被设置 display:flex,说明该元素为弹性布局,也就是个弹性盒子。 flex 主要由两…

Linux traceroute 原理及使用

Linux traceroute 原理及使用 序 在某次接入数据的场景中,需要到对方 SFTP 服务器上,获取数据,但是在配置时发现在配置正确的情况下, 连接总是超时,最终排查后发现网络不通,打通网络后才正确连接&#xf…

【C++】函数重载

函数重载1.函数重载的背景2.函数重载的概念2.1参数类型不同的重载2.2参数个数不同的重载2.3参数类型顺序不同的重载2.4注意事项:仅仅是返回值不同无法构成函数重载3.C函数重载的原理---函数名字修饰4.函数重载总结1.函数重载的背景 在C语言中,我们写一个…

通信原理 | 基本概念

1 通信及通信系统 通信(Communication)是实现信息和消息传输的过程 通信系统(Communication System)的组成: 实现通信的所有硬件和软件设备、传输媒介以及各种通信协议等 消息(Message)、信息(Information)、信号(Signal)的区别: 消息通常指人的感官能够感受到的…

无刷电机高压与低压的选择与未来发展前景

近几年来,伴随无刷马达被戴森吸尘器全力以赴运用在家用电器上,颠覆了传统家电的3个产品运用场景,吹风筒就是这样的一个例子。 迅速风筒由于其加工工艺的创新能力,给大家增添了不一般的产品体验度。新型的迅速风筒,搭配…

2023我的前端面试小结

对事件委托的理解 (1)事件委托的概念 事件委托本质上是利用了浏览器事件冒泡的机制。因为事件在冒泡过程中会上传到父节点,父节点可以通过事件对象获取到目标节点,因此可以把子节点的监听函数定义在父节点上,由父节点…

Elasticsearch:利用搜索提高医疗保健公平 - 用多语言 NLP 模型和分析来改善最终用户体验

随着更高生产力和更健康的人群寿命更长,医疗保健将成为社会最重要的方面之一。 COVID-19 大流行加速了现代技术的采用,并凸显了患者体验的重要性。 随着越来越多的消费者开始控制他们的数据,医疗保健系统变得捉襟见肘。 根据德勤和斯科茨代尔…

【High 翻天】Higer-order Networks with Battiston Federico (5)

目录扩散高阶扩散题外话高阶随机游走扩散 在给出建模之后,接下来讨论如何将传统意义下的扩散拓展到高阶系统。扩散是一个线性过程,但在许多不同的情况下都有强相关性。扩散这个词实际可指代两个不同的过程: 标准的扩散过程,或者…

课题-基于安卓androidstudio的校园外卖app

一、课题介绍 客户端: 1:登录注册:用户可以通过自己的信息进行账号的注册 2:商家搜索:可以对商家的信息进行模糊搜索 3:查看菜单:点击商家可以查看具体的菜单信息 4:添加购物车&…

SAP FICO 财务月结--自动清账

一、基本概念 清账是会计科目的借贷挂账后的核销,其中包括客户、供应商以及实行未清账管理的总账科目等。 客户和供应商的清账通常会在收款或者付款的时候同时完成,也就是边收边清或者边付边清,也可以后续手工清账(客户F-32&…

人脸清晰化神器codeFormer图形界面包GUI

1. codeFormer介绍 在NeurIPS 2022上,南洋理工大学-商汤科技联合研究中心S-Lab提出了一种基于VQGANTransformer的人脸复原模型CodeFormer,效果是真的强大,先展示下效果,用的官方案例效果图。 官方给出的代码见这里 传送门 2. 图…

Python数组存储方式与向量化、按行按列展平/展开

文章目录1 逻辑存储与内存存储1.1 高维张量1.2 按行展开和按列展开2 矩阵向量化、按行按列展开2.1 numpy中:numpy.ravel()ndarray.flatten()2.2 Pytorch中:3 pytoch中的view,reshape,permute对比3.1 view3.2 reshape3.3 permute链…

Redis缓存雪崩缓存击穿缓存穿透

Redis缓存雪崩&缓存击穿&缓存穿透一 缓存更新策略二 缓存雪崩三 缓存击穿四 缓存穿透一 缓存更新策略 目前redis缓存更新存在3种主流策略,分别是:内存淘汰、超时剔除、主动更新。 1、内存淘汰 LRU/LFU/FIFO算法剔除:例如maxmemory-…

【云原生进阶之容器】第二章Controller Manager原理2.4节--Informer机制剖析

1 Informer机制剖析 如上图所示,client-go 包中一个非常核心的工具就是 informer,informer 可以让与 kube-apiserver 的交互更加优雅。 Informer的主要作用包括如下两个方面: 同步数据到本地缓存。Informer 会不断读取 Delta FIFO 队列中的 Object,在触发事件回调之…

MySQL8.0锁情况排查

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者: 杨延昭文章来源:GreatSQL社区投稿 在数据库中,除传统的计算资源(CPU、RAM、IO)的争用…

【C语言】-关于指针的知识你真的都知道了??快进来看看这里面的指针会让你眼前一亮

🎇作者:小树苗渴望变成参天大树 🎊作者宣言:认真写好每一篇博客 🎉 作者gitee:link 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 指针进阶💦前言💖一、…

MYSQL 数据行列交换(交换数据) 存储过程实现

行列转换的存储过程 初始图: 效果图: 实现过程: 1:建表、建数据 CREATE TABLE changeprice ( id bigint(20) NOT NULL auto_increment, sid bigint(20) NOT NULL, datecreated timestamp NOT NULL defaultCURRENT_TIMESTAMP…