精华内容
下载资源
问答
  • 为什么叫做反向传播

    2019-07-23 10:24:18
    反向传播(Back Propagation) 原:https://www.cnblogs.com/MrPan/p/9502869.html 通常在设计好一个神经网络后,参数的数量可能达到百万级别。而我们利用梯度下降去跟新参数的过程如(1)。但是在计算百万级别...

    反向传播(Back Propagation)

    原:https://www.cnblogs.com/MrPan/p/9502869.html

        通常在设计好一个神经网络后,参数的数量可能会达到百万级别。而我们利用梯度下降去跟新参数的过程如(1)。但是在计算百万级别的参数时,需要一种有效计算梯度的方法,这种方法就是反向传播(简称BP), 因此BP并不是一种新的算法,使用BP就是能够使计算梯度时更加有效率。

                                     

      其中θ为神经网络的参数,为梯度。

    链式法则

       设有两个函数为y=g(x),z=h(y),那么要计算z对x导数,则计算过程如(2)

       

         设有三个函数为x=g(s),y=h(s),z=k(x,y),那么要计算z对x导数,则计算过程如(3)

       

    BP计算过程

        假定我们设计的神经网络结构如图1-1所示,其中yj神经网络为输出值,dh为隐藏层神经元的输出值,xi为输入值,bj、mh分别是隐藏层和输出层神经元的偏置;

    图1-1 神经网络结构

         设神经网络的损失函数为L(θ)(L(θ)具体的结构根据实际情况来确定,θ表示所有参数);wjh的更新形式为

          

       由于wjh是通过影响,继而影响yj,最终影响L(θ)。因此wjh的更新计算可以通过(2)的链式法则进行展开。

          

        其中,需要在确定激活函数和损失函数的具体结果后才就可以进行微分。而则可以在神经网络前向传播的过程中就可以计算,因此这一项的计算是自下向上,因此也称作forward pass

       类比于wjh的更新情况,bj的更新计算为

      再计算vhi的的更新情况,跟wjh的更新情况没有太大差别。vhi通过影响输入,继而影响dh,dh通过影响所有的输出层神经元的输入,继而影响输出值Y={y1,y2,...yl},最终影响L(θ),因此需要运用(3)进行链式法则展开

              

     

     其中(8)中的跟计算的部分项相同。因此,要计算下层参数的微积分,就需要计算上层参数的微积分。整个参数的更新计算自上向下,这个计算过程也称作backward pass

    展开全文
  • 浅谈反向传播算法(backpropagation algorithm)为什么会很快

    在上一个博客神经网络一:介绍,示例,代码 中,介绍了神经网络的基本算法Backpropagation Algorithm,该算法有很多优点,具体的可自行查阅其他资料或博客,本文主要针对Backpropagation Algorithm中运行速度快的特点进行浅谈。

    假设我们有一个固定样本集 \textstyle \{ (x^{(1)}, y^{(1)}), \ldots, (x^{(m)}, y^{(m)}) \},它包含 \textstyle m 个样例。具体来讲,对于单个样例 \textstyle (x,y),其代价函数为:

    \begin{align}J(W,b; x,y) = \frac{1}{2} \left\| h_{W,b}(x) - y \right\|^2.\end{align}我们最后用得到:

    \begin{align}\frac{\partial}{\partial W_{ij}^{(l)}} J(W,b; x, y) &= a^{(l)}_j \delta_i^{(l+1)} \\\frac{\partial}{\partial b_{i}^{(l)}} J(W,b; x, y) &= \delta_i^{(l+1)}.\end{align}

    最后计算出:

    \begin{align}W_{ij}^{(l)} &= W_{ij}^{(l)} - \alpha \frac{\partial}{\partial W_{ij}^{(l)}} J(W,b) \\b_{i}^{(l)} &= b_{i}^{(l)} - \alpha \frac{\partial}{\partial b_{i}^{(l)}} J(W,b)\end{align}

    为什么我们不能直接根据偏导公式

    来直接计算呢?下面进行分析。

    如果用直接计算的话,为了求用微积分的乘法法则:把代价函数J(W,b;x,y)只当做是权重W(或偏向值b)的函数,于是定义:,(ε>0且ε->0)。根据这个公式也能求出权重的偏导,但到具体计算时,假设神经网络有1百万个权重需要更新,则对于每一个权重w,都需要通过遍历一次神经网络模型来更新,1百万个权重的话就要遍历1百万次!而这只是针对一个训练集数据而言,数据更多的话需要花费更多的计算量来更新每一个权重。

    而用Backpropagation Algorithm的优势就在于,只需要一正一反遍历两次就可以把所有的偏导计算出来。相比于直接算偏导,就是2:1000000的计算比例。具体的Backpropagation Algorithm可参见上一个博客。




    展开全文
  • 所见过的文章里写得最清晰明了的,关键时刻还得靠大佬 Why LSTMs Stop Your Gradients From Vanishing: A View from the Backwards Passhttps://weberna.github.io/blog/2017/11/15/LSTM-Vanishing-Gradients....

    所见过的文章里写得最清晰明了的,关键时刻还得靠大佬

    Why LSTMs Stop Your Gradients From Vanishing: A View from the Backwards Pass
    https://weberna.github.io/blog/2017/11/15/LSTM-Vanishing-Gradients.html#fn:3

     

    展开全文
  • 对于torch中训练时,反向传播前将梯度手动清零的理解 简单的理由是因为PyTorch默认对梯度进行累加。至于为什么PyTorch有这样的特点,在网上找到的解释是说由于PyTorch的动态图和autograd机制使得其非常灵活,这...

    对于torch中训练时,反向传播前将梯度手动清零的理解

     

    简单的理由是因为PyTorch默认会对梯度进行累加。至于为什么PyTorch有这样的特点,在网上找到的解释是说由于PyTorch的动态图和autograd机制使得其非常灵活,这也意味着你可以得到对一个张量的梯度,然后再次用该梯度进行计算,然后又可重新计算对新操作的梯度,对于何时停止前向操作并没有一个确定的点。所以自动设置梯度为0比较棘手,因为你不知道什么时候一个计算会结束以及什么时候又会有一个新的开始。默认累加的好处是当在多任务中对前面共享部分的tensor进行了多次计算操作后,调用不同任务loss的backward,那些tensor的梯度会自动累加,缺点是当你不想先前的梯度影响到当前梯度的计算时需要手动清零。

    转载于:https://www.cnblogs.com/LiuXinyu12378/p/11416172.html

    展开全文
  • 点击上方“MLNLP”,选择“星标”公众号重磅干货,第一时间送达编辑:忆臻https://www.zhihu.com/question/303070254本文仅作为学术分享,如果侵权,删文处理PyTorch中在反向传播为什么要手动将梯度清零?...
  • 因为grad在反向传播的过程中是累加的,也就是说上一次反向传播的结果对下一次的反向传播的结果造成影响,则意味着每一次运行反向传播,梯度都会累加之前的梯度,所以一般在反向传播之前需要把梯度清零。...
  • 反向传播算法

    2019-04-16 12:07:00
    反向传播算法实质就是链式求导法则的应用,那为什么反向传播算法。 前提我们已经熟悉如何求偏导。有下面式子 第二个就是链式求导法则,\(\Delta s\)分别影响\(\Delta x\)与\(\Delta y\)。\(\Delta x\)跟\(\...
  • ResNet反向传播公式推导

    千次阅读 2018-08-16 15:46:53
    ResNet残差网络结构在深层网络中训练效率提高,为什么呢,我们下面用公式解释一下。我们先回顾全连接网络和卷积网络反向传播的过程,细节推导见我的博客 一、DNN结构反向传播 1、l层全连接层的反向传播的W的梯度...
  • 一、前言这是一场以误差(Error)为主导的反向传播(Back Propagation)运动,旨在得到最优的全局参数矩阵,进而将多层神经网络应用到分类或者回归任务中去。前向传递输入信号直至输出产生误差,...至于为什么会提...
  • 一、前言 这是一场以误差(Error)为主导的反向传播(Back Propagation)运动,旨在得到最优的全局参数矩阵...至于为什么会提出反向传播算法,我直接应用梯度下降(Gradient Descent)不行吗?想必大家肯定有过这样的
  • BP-网络可谓是机器学习领域的劝退哥,让人觉得难以亲近,其实理解之后...为什么要进行反向传播? 3)应从最简单的神经网络开始,参数少,好记,不会眼花缭乱 4)公式、参数的表示和含义都要清楚,尤其是上标、下标...
  • 为什么要batch normalization? 前向传播 反向传播 1.batch normalization的原理  在反向传播的过程中,是一个w不断叠乘的结果,因为在传播过程中w时一个不确定范围的数值。在反向传播的过程中,如果w多数大于1,...
  • BP反向传播矩阵推导图示详解

    千次阅读 2021-03-06 20:42:22
    BP(反向传播)是有Geffrey Hinton在1988年发表的论文《Learning representations by back-propagating errors》中首次被提出来。该论文从题目到内容到参考文献一共2页半,Hitton也借此工作荣获2018年的图领奖。在...
  • 反向传播算法 BackPropagation ,简称BP算法。常用于训练多层神经网络,那么它到底传播了个啥?又是怎么传播的呢? 我们知道,对于一个机器学习算法,其最终预测出的值与实际值一般存在差异,那么我们定义这个差异...
  • 反向传播的意义 在深度网络中,包含的参数了过大(百万级),如果对这些参数强行...所以算的时候要算最后面一层,也就是为什么反向传播。 反向体现 Forward Pass & Backward Pass 结合起来,梯度就有了。 ...
  • 这是典型的三层神经网络的基本构成,Layer L1是输入层,Layer L2是隐含层,Layer L3...可能有人问,为什么要输入输出都一样呢?有什么用啊?其实应用挺广的,在图像识别,文本分类等等都会用到,包括一些变种之类的..
  • 尽管单层感知器在网络结构上极其简单,但它所包含的组成部分却是后续各种复杂神经网络模型中都包含的基础组件。比如激活函数、权重、偏置值、输入输出、损失函数、优化器等等。其实当我们把一...
  • 你真的理解反向传播 BP 算法吗?Chat 简介:我们经常会听到深度网络会出现梯度消失或者梯度爆炸问题,但是使用某些策略又可以缓解这个问题,那么你知道为什么会出现这些问题...
  • 我们需要使用反向传播算法完成神经网络的训练任务,反向传播算法是不能出现错误的,一旦出现错误那么神经网络的训练就出现意想不到的问题。我们一般不能根据反向传播算法的运行结果判断反向传播算法是否执行正确,...
  • 神经网络初探:反向传播算法链式法则求导的不足​ 上回说到用梯度下降法优化神经网络参数,使得代价函数最小,这里面的核心问题在于求解偏导。也许很多人说求解偏微分很困难吗?用链式法则就是喽。接下来举个例子...
  • 针对最基本的全连接+激活函数这类型的网络结构中每一个节点处反向传播时梯度的计算以及权重增量,从而能够直观理解sigmoid当激活函数时为什么会发生梯度消失的状况; 增加对卷积层和池化层中权重节点的梯度计算及...
  • 1多层感知器概述前面一节我们感受了什么叫单层感知器。所谓的单层感知器实际上就是一个输入层,一个输出层,中间再无其他元素“干扰”。所以单层感知器才显得如此简单,如此易懂,也就如此的有局限。于是,历史上...
  • 首先,为什么要用神经网络,神经网络可以用来干嘛,它可以用于解决线性不可分或者多分类问题,即非线性分类问题,图中的线性可分和线性不可分都是二分类问题,还有多分类问题,多分类问题即大于2个输出。 解决非...
  • 为什么要用这个函数作为逻辑损失函数?当我们使用平方误差作为损失函数的时候,你 想要让这个误差尽可能地小,对于这个逻辑回归损失函数,我们也想让它尽可能地小,为 了更好地理解这个损失函数怎么起作用,举两...
  • 一、什么反向传播反向传播(英语:Backpropagation,缩写BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法计算对网络中所有权重计算...
  • 学习深度学习,深层神经网络是一个绕不过的话题,包括其前...1.为什么使用深层神经网络 2.深层神经网络的 前向 & 反向 计算过程详解 1.为什么使用深层神经网络 1.1 神经网络 神经网络,顾名思义就是模拟大脑皮层,从...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 324
精华内容 129
关键字:

反向传播为什么会