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. 利用hibernateTemplate进行最简单的分页

    安全的方法例如以下.别用Session s=getSession()........ /**  * 使用hql 语句进行操作  * @param hql HSQL 查询语句  * @param off ...

  2. 简单的横向ListView实现(version 3.0)

    版本号2仅仅是简单的实现了当手指按下的时候listView的Item向左移动一定的距离,并没有随着手指的左右移动而左右滚动.在这个版本号3.0中将会实现随着手指的移动而滚动的目标:当手指向左移动的时候 ...

  3. js40---享元模式

    /** * 享元模式是一个为了提高性能(空间复杂度)的设计模式 * 他使用与程序会生产大量的相类似的对象是耗用大量的内存的问题 */ (function(){ /** * 制造商 * 型号 * 拥有者 ...

  4. mahout的特性(三)

    mahout的特性 虽然在开源领域中相对较为年轻,但 Mahout 已经提供了大量功能,特别是在集群和CF 方面. Mahout 的主要特性包括: Taste CF.Taste 是 Sean Owen ...

  5. jodd-cache集锦

    Jodd cache提供了一组cache的实现,其层次如下: 其中, AbstractCacheMap是一个具有计时和大小的缓存map的默认实现,它的实现类必须: 创建一个新的缓存map. 实现自己的 ...

  6. jQuery自定义插件规范

    <ul class="list"> <li>导航列表 <ul class="nav"> <li>导航列表1< ...

  7. Fedora 10下应用网络模拟器NS心得

    650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...

  8. BZOJ2565: 最长双回文串(Manacher)

    Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同).输入长度为n的串S,求S的最长双回文子串T, ...

  9. 洛谷 P2562 [AHOI2002]Kitty猫基因编码

    P2562 [AHOI2002]Kitty猫基因编码 题目描述 小可可选修了基础生物基因学.教授告诉大家 Super Samuel 星球上 Kitty猫的基因的长度都是 2 的正整数次幂 ), 全是由 ...

  10. windows下使用cpanm进行模块安装

    windows下使用cpanm进行模块安装 要放假了,突然想整理一下手头上的软件,突然发现perl的安装模块这个功能不能用. 弄了一下,使得windows 下 perl 的 cpanm能用,避免成天为 ...