前面我们学习过深度学习中用于加速网络训练、提升网络泛化能力的两种策略:Batch Normalization(Batch Normalization)和Layer Normalization(LN)。今天讨论另一种与它们类似的策略:Weight Normalization(Weight Normalization)。Weight Normalization是Batch Normalization的一种变体,与Batch Normalization最大不同点:对神经网络的权值向量W进行参数重写Reparameterization。

Reparameterization:机器学习/深度学习中常用的一种优化策略,Kingma在提出变分自动编码器(Variational Auto-Encoding,VAE)时,用于神经网络中采样的node进行梯度反向传播的一种方法。简单一句话概括一下Reparameterization:用一个简单的参数为Theta分布来逼近一个稍复杂的分布,通过重写目标函数Objective的期望,使目标函数变得更加容易计算的一种方法,下一期将深入介绍。

1、Weight Normalization与Batch Normalization对比

Weight Normalization和Batch Normalization都属于参数重写(Reparameterization)的方法,只是采用的方式不同,Weight Normalization是对网络权值W进行normalization,因此也称为Weight Normalization;Batch Normalization是对网络某一层输入数据进行normalization。。Weight Normalization相比Batch Normalization有以下三点优势:

1、Weight Normalization通过重写深度学习网络的权重W的方式来加速深度学习网络参数收敛,没有引入minbatch的依赖,适用于RNN(LSTM)网络(Batch Normalization不能直接用于RNN,进行normalization操作,原因在于:1、RNN处理的Sequence是变长的;2、RNN是基于time step计算,如果直接使用Batch Normalization处理,需要保存每个time step下,mini btach的均值和方差,效率低且占内存)。

2、Batch Normalization基于一个mini batch的数据计算均值和方差,而不是基于整个Training set来做,相当于进行梯度计算式引入噪声。因此,Batch Normalization不适用于对噪声敏感的强化学习、生成模型(Generative model:GAN,VAE)使用。相反,Weight Normalization对通过标量g和向量v对权重W进行重写,重写向量v是固定的,因此,基于Weight Normalization的Normalization可以看做比Batch Normalization引入更少的噪声。

3、不需要额外的存储空间来保存mini batch的均值和方差,同时实现Weight Normalization时,对深度学习网络进行正向信号传播和反向梯度计算带来的额外计算开销也很小。因此,要比采用Batch Normalization进行normalization操作时,速度快。

但是, Weight Normalization不具备Batch Normalization把网络每一层的输出Y固定在一个变化范围的作用。因此,采用Weight Normalization进行Normalization时需要特别注意参数初始值的选择。

2、Weight Normalization怎么实现的

对深度学习网络权值W进行normalization的操作公式如下:

 
 

方法很简单,通过一个标量g和一个向量V对权重向量W进行尺度变换。标量g的值一般为||W||,即权重W的大小。

此时的深度学习网络权值的梯度计算公式为:

 
 

梯度计算公式可以用另外一种方式来表示:

 
 

可见,可以通过向量V的大小||V||的变化对权重W进行norm约束,使得网络参数训练相对Learning rate更加鲁棒,即可以选择一个更大的学习速率来加速网络训练。

3、Weight Normalization和Batch Normalization关系

可以把Batch Normalization表示成如下公式形式:

 
 

其中,u(t)和v(t)分别是t的均值和方差,t = v / ||v|| * x。可见,当网络只有一层且每一层的输入x服从0均值且方差为1的标准正太分布时,u(t)= 0,v(t)= 1,此时,使用Weight Normalization和Batch Normalization进行Normalization起到的是一样的效果。

4、参考论文

[1] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

[2] Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks

[3] Layer Normalization

更多深度学习在NLP方面应用的经典论文、实践经验和最新消息,欢迎关注微信公众号“深度学习与NLP”或“DeepLearning_NLP”或扫描二维码添加关注。

作者:lqfarmer
链接:https://www.jianshu.com/p/260f39a071fe
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

<深度学习优化策略-3> 深度学习网络加速器Weight Normalization_WN的更多相关文章

  1. ng-深度学习-课程笔记-12: 深度卷积网络的实例探究(Week2)

    1 实例探究( Cast Study ) 这一周,ng对几个关于计算机视觉的经典网络进行实例分析,LeNet-5,AlexNet,VGG,ResNet,Inception. 2 经典网络( Class ...

  2. 从 SGD 到 Adam —— 深度学习优化算法概览(一) 重点

    https://zhuanlan.zhihu.com/p/32626442 骆梁宸 paper插画师:poster设计师:oral slides制作人 445 人赞同了该文章 楔子 前些日在写计算数学 ...

  3. 深度学习(二)--深度信念网络(DBN)

    深度学习(二)--深度信念网络(Deep Belief Network,DBN) 一.受限玻尔兹曼机(Restricted Boltzmann Machine,RBM) 在介绍深度信念网络之前需要先了 ...

  4. 深度学习---1cycle策略:实践中的学习率设定应该是先增再降

    深度学习---1cycle策略:实践中的学习率设定应该是先增再降 本文转载自机器之心Pro,以作为该段时间的学习记录 深度模型中的学习率及其相关参数是最重要也是最难控制的超参数,本文将介绍 Lesli ...

  5. [源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & Driver

    [源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & Driver 目录 [源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & ...

  6. 百度APP移动端网络深度优化实践分享(二):网络连接优化篇

    本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<二>连接优化>,感谢原作者的无私分享. 一.前言 在<百度APP移动端网 ...

  7. SIGAI深度学习第四集 深度学习简介

    讲授机器学习面临的挑战.人工特征的局限性.为什么选择神经网络.深度学习的诞生和发展.典型的网络结构.深度学习在机器视觉.语音识别.自然语言处理.推荐系统中的应用 大纲: 机器学习面临的挑战 特征工程的 ...

  8. zz“深度高斯模型”可能为深度学习的可解释性提供概率形式的理论指导

    [NIPS2017]“深度高斯模型”可能为深度学习的可解释性提供概率形式的理论指导?亚马逊机器学习专家最新报告 专知 [导读]在NIPS 2017上,亚马逊机器学习专家Neil Lawrence在12 ...

  9. 【神经网络与深度学习】学习笔记:AlexNet&Imagenet学习笔记

    学习笔记:AlexNet&Imagenet学习笔记 ImageNet(http://www.image-net.org)是李菲菲组的图像库,和WordNet 可以结合使用 (毕业于Caltec ...

随机推荐

  1. Redis 学习-持久化与主从复制

    一.持久化 1. RDB rdb 是 redis 内存到硬盘的快照,用于持久化 ①. 通过执行命令,主动保存快照 save # 执行保存快照,执行时 redis 会处理阻塞状态直至执行完成. bgsa ...

  2. Redis 学习-Redis 的其他功能

    一.慢查询 找到 系统中瓶颈的命令 1. 客户端请求的生命周期: ①. 慢查询通常发生在第三阶段. ②. 客户端超时不一定是慢查询,但慢查询是客户端超时的一个可能因素. 2. 相关配置 慢查询命令会存 ...

  3. hash文件-对文件进行数字签名

    (一)windows自带hash命令: certutil -hashfile D:\1.exe MD5              #  md5的hash值为32位certutil -hashfile ...

  4. 用PL/SQL工具连接Oracle数据库的时报错:ORA-12638: 身份证明检索失败的解决方法

    本地客户端用PLSQL Developer连接远程数据库时提示: ORA-12638: 身份证明检索失败!!! 解决方法一: 此目录下F:\myorcl\product\11.2.0\client_1 ...

  5. 【转】Anaconda安装与使用

    PS:这还是17年一次数据挖掘训练营使用的软件 [转至]https://blog.csdn.net/m0_37605642/article/details/98726766 安装和配置 1.在官网或清 ...

  6. spring事务什么时候会自动回滚

    在java中异常的基类为Throwable,他有两个子类xception与Errors.同时RuntimeException就是Exception的子类,只有RuntimeException才会进行回 ...

  7. django框架介绍安装-自写框架

    原文链接:https://www.cnblogs.com/maple-shaw/p/8862330.html Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户 ...

  8. 数据库系统load飙高问题解决思路

    工作过程中有时候会接收到数据库服务器器load 飙高的报警,比如:  load1 15.25 base: 8.52,collect time:2014-08-30 如何处理load 异常飙高的报警呢? ...

  9. 关于ServletContext的私有方法全局获取返回null问题getServletContext().setAttribute("count", 1)

    1.在Servlet重写了init方法中获取getServletContext()报错提示为空指针 重写了init(ServletConfig)方法,但是重写的init方法内部没有调用super.in ...

  10. LG4723 【模板】常系数线性递推

    P4723 [模板]常系数齐次线性递推 题目描述 求一个满足$k$阶齐次线性递推数列${a_i}$的第$n$项. 即:$a_n=\sum\limits_{i=1}^{k}f_i \times a_{n ...