<深度学习优化策略-3> 深度学习网络加速器Weight Normalization_WN
来源:互联网 发布:跳跃网络账号注册 编辑:程序博客网 时间:2024/05/17 05:58
前面我们学习过深度学习中用于加速网络训练、提升网络泛化能力的两种策略: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”或扫描二维码添加关注。
- <深度学习优化策略-3> 深度学习网络加速器Weight Normalization_WN
- <优化策略-2>深度学习加速器Layer Normalization-LN
- 深度学习—策略网络
- 深度国际网络加速器
- 深度 | TensorFlow:最棒的深度学习加速器
- 聊一聊深度学习的weight initialization
- DeepLearning-聊一聊深度学习的weight initialization
- 深度网络与深度学习
- 深度学习优化方法
- 深度学习优化问题
- 深度学习 优化算法
- 【深度学习】优化方法
- 深度学习:优化加速
- 深度学习优化方法
- 深度学习优化
- <深度学习优化策略-1>Batch Normalization(BN)
- 深度学习网络结构
- 深度学习-递归网络
- Android Studio出现Failed to open zip file问题的解决方法
- 暖心VR系统上线,VirtuCare让痴呆老人重温旧梦
- Android--Matrix图片变换处理
- 面试例题-3 编辑距离
- POJ 1000 A+B Problem 题解
- <深度学习优化策略-3> 深度学习网络加速器Weight Normalization_WN
- 移动端三列九宫格布局
- [BZOJ]1010 玩具装箱toy 斜率优化
- 微信公众号第三方开发之七提交全网发布【个人收藏】
- hadoop下hbase搭建参考
- HTML基础标签的作用
- 【OpenCV3】透视变换——cv::getPerspectiveTransform()与cv::warpPerspective()详解
- 网络通信
- EF Mapping2 Entity Framework Fluent API