前面我们学习过深度学习中用于加速网络训练、提升网络泛化能力的两种策略: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. 如何方便引用自己的python包

    有时候想要把一些功能封装成函数然后包装到模块里面最后形成一个包,然后在notebook里面去引用它去处理自己的数据和分析一些有用的部分,比如自己在 之前用到的一个datascience模板就是这样组织 ...

  2. [JAVASCRIPT][EXTJS]直接用JSON创建树形控件(Ext.tree.TreePanel )(转)

    直接用JSON创建树形控件(Ext.tree.TreePanel ) 1.创建多个根节点的树形 2.直接使用JsonList创建树形 <!DOCTYPE HTML PUBLIC "-/ ...

  3. ubuntu-网络配置文件

    vim   /etc/NetworkManager/system-connections/Wired connectione 1 

  4. Android笔记(五十) Android中的JSON数据

    JSON是什么: JSON是轻量级的文本数据交换格式 JSON独立于语言和平台 JSON具有自我描述性,更容易理解 JSON语法: 数据在名称/值对中 数据由逗号分割 大括号表示对象 中括号表示数组 ...

  5. [daily] ssh通过私钥导出公钥

    在使用key方式登录ssh服务的时候,我们知道ssh key是使用公钥ssh-keygen工具生成的. 有时候,我们只保存了私钥,但是并没有保存公钥.这个时候,可以使用如下方法,   从私钥中将公钥导 ...

  6. 安装k8s,单master脚本

    这个以一个普通xxx帐户运行即可. 因为上面root帐号作了sudoer的操作的. 还有,最好将xxx帐号加入docker组,这样xxx也可以执行docker命令了. 可以看到,这个脚本还需要其它目录 ...

  7. 《你说对就队》第八次团队作业:Alpha冲刺

    <你说对就队>第八次团队作业:Alpha冲刺 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 <你说对就队> 作业学习 ...

  8. vue项目中要实现展示markdown文件[转载]

    转载 版权声明:本文为CSDN博主「齐天二圣」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/nihaoa5 ...

  9. Appium环境搭建(Mac)

    为什么选择Mac做自动化测试? 既可以做iOS端的测试也可以进行Android端测试 Mac运行效率相对于Win要高很多,可以真正发挥appium的功能 环境依赖 Node.js Appium App ...

  10. kafka的HA机制

    1.kafka的HA机制:副本机制+消息同步+leader选举. 每个topic有多个partition,每个partition又有多个副本,这些副本当中也存在不同的角色,leader.followe ...