What does the gradient flowing through batch normalization looks like ?

反向传播梯度下降权值参数更新公式的推导全依赖于复合函数求梯度时的链式法则

1. Batch Normalization

给定输入样本 x∈RN×D,经过一个神经元个数为 H 的隐层,负责连接输入层和隐层的权值矩阵 w∈RD×H,以及偏置向量 b∈RH。

Batch Normalization 的过程如下:

  • 仿射变换(affine transformation)

    h=XW+b

    显然 h∈RN×H

  • batch normalization 变换:

    y=γh^+β

    其中 γ,β 是待学习的参数,h^ 是 h 去均值和方差归一化的形式:

    h^=(h−μ)(σ2+ϵ)−1/2

    进一步其标量形式如下:

    hˆkl=(hkl−μl)(σ2l+ϵ)−1/2

    l={1,…,H},μ 和 σ 分别是对矩阵 h∈RN×H 的各个属性列,求均值和方差,最终构成的均值向量和方差向量。

    μl=1N∑phpl,σ2l=1N∑p(hpl−μl)2

2. ∂L∂h,∂L∂γ,∂L∂β 的计算

首先我们来看损失函数 L 关于隐层输入偏导的计算:

dLdh=⎛⎝⎜⎜⎜⎜⎜⎜⎜dLdh11..dLdhN1..dLdhkl...dLdh1H..dLdhNH⎞⎠⎟⎟⎟⎟⎟⎟⎟.

又由于:

h=XW+b,h⇒h^,h^⇒y

由链式法则可知:

∂L∂hij=∑k,l∂L∂ykl∂ykl∂h^kl∂h^kl∂hij

显然其中 ∂ykl∂h^kl=γl,

又由于:

hˆkl=(hkl−μl)(σ2l+ϵ)−1/2,μl=1N∑phpl,σ2l=1N∑p(hpl−μl)2

所以:

dh^kldhij=(δikδjl−1Nδjl)(σ2l+ϵ)−1/2−12(hkl−μl)dσ2ldhij(σ2l+ϵ)−3/2

根据 σ2l 与 hij 的计算公式可知:

dσ2ldhij====2N∑p(hpl−μl)(δipδjl−1Nδjl)(只有在p=1时)2N(hil−μl)δjl−2Nδjl⎛⎝1N∑p(hpl−μl)⎞⎠2N(hil−μl)δjl−2Nδjl⎛⎝1N∑phpl−μl⎞⎠(显然右侧为0)2N(hil−μl)δjl

Batch Normalization 反向传播(backpropagation )公式的推导的更多相关文章

  1. 反向传播BackPropagation

    http://www.cnblogs.com/charlotte77/p/5629865.html http://www.cnblogs.com/daniel-D/archive/2013/06/03 ...

  2. 反向传播 Backpropagation

    前向计算:没啥好说的,一层一层套着算就完事了 y = f( ... f( Wlayer2T f( Wlayer1Tx ) ) ) 反向求导:链式法则 单独看一个神经元的计算,z (就是logit)对 ...

  3. 如何理解反向传播 Backpropagation 梯度下降算法要点

    http://colah.github.io/posts/2015-08-Backprop/ http://www.zhihu.com/question/27239198 待翻译 http://blo ...

  4. 一个batch的数据如何做反向传播

    一个batch的数据如何做反向传播 对于一个batch内部的数据,更新权重我们是这样做的: 假如我们有三个数据,第一个数据我们更新一次参数,不过这个更新只是在我们脑子里,实际的参数没有变化,然后使用原 ...

  5. [DeeplearningAI笔记]序列模型1.3-1.4循环神经网络原理与反向传播公式

    5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.3循环神经网络模型 为什么不使用标准的神经网络 假如将九个单词组成的序列作为输入,通过普通的神经网网络输出输出序列, 在 ...

  6. 循环神经网络(RNN)模型与前向反向传播算法

    在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Rec ...

  7. 前向传播算法(Forward propagation)与反向传播算法(Back propagation)

    虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解.因此特意先对深度学习中的相关基础概念做一下总结.先看看前向传播算法(Forward propagation)与 ...

  8. 【原】Coursera—Andrew Ng机器学习—编程作业 Programming Exercise 4—反向传播神经网络

    课程笔记 Coursera—Andrew Ng机器学习—课程笔记 Lecture 9_Neural Networks learning 作业说明 Exercise 4,Week 5,实现反向传播 ba ...

  9. CNN反向传播更新权值

    背景 反向传播(Backpropagation)是训练神经网络最通用的方法之一,网上有许多文章尝试解释反向传播是如何工作的,但是很少有包括真实数字的例子,这篇博文尝试通过离散的数据解释它是怎样工作的. ...

随机推荐

  1. 将已有的Eclipse项目转化为Maven项目

    将已有的Eclipse项目转化为Maven项目 我们之前在Eclipse IDE完成的Java命令行项目.Java Web项目也使用了构建工具--Ant,它帮助我们编译.运行Java源代码(无需我们自 ...

  2. 牛客网剑指offer刷题总结

    二维数组中的查找: 题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 两 ...

  3. mac自己定义tree命令

    编辑文件: vim ~/.bash_profile 在文件末尾追加: alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____| ...

  4. hive学习笔记-高级查询

    聚合函数 count计数 count(*):不全都是NULL.就加1:count(1):当仅仅要有一列是NULL就不会加1:count(col):当col列不为空就会加1 sum求和 sum(可转成数 ...

  5. int android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType' on a null.....

    Android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType' on a null..空指针问题,费劲心思才找到报空指针的原因: 代码 ...

  6. spring基础内容

      关注和收藏在这里   深入理解Spring框架的作用 纵览Spring , 读者会发现Spring 可以做非常多的事情. 但归根结底, 支撑Spring的仅仅是少许的基本理念, 所有的理念都可以追 ...

  7. Flask项目之手机端租房网站的实战开发(十四)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...

  8. Appium_python3使用汇总

    1. 对webview页面元素的处理self.driver.switch_to.context("WEBVIEW_com.aaa.bbb")source = self.driver ...

  9. Scala——构造函数

    Scala的构造函数分为主构造函数和辅助构造函数. 辅助构造函数 辅助构造函数比较容易理解,它们同C++和Java的构造函数十分类似,只有两处不同: 1.辅助构造函数的名称为this,这主要是考虑到在 ...

  10. Git安装及密钥的生成并上传本地文件到GitHub上

    之前用的GitHub,不太熟练,一直在上传的过程中遇到了一些问题,看了网上诸多教程,总觉得很乱,特参考一些资料,总结了一篇完整的操作步骤,从下载安装到上传文件,亲测有效 1.下载Git软件:https ...