https://zhuanlan.zhihu.com/p/33173246

阅读笔记

1. normalization

whiting - PCA

2. Internal Covariate Shift,简称 ICS.

“源空间(source domain)和目标空间(target domain)的数据分布(distribution)不一致 “,covariate shift 就是分布不一致假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同。

输入的数据在神经网络的高层变化会非常的剧烈,所以高层就要不断的去调整学习率等参数。ICS会导致:上层不断的适应输入数据分布的变化,导致学习速度下降;下层的数据变化可能趋于变大或变小,导致上层落入饱和区,学习过早停止;每层的更新都会影响到其它层,所以每层的更新都要谨慎。

解决独立同分布的问题,就是进行白化,但是标准的白化太耗费资源,所以采用BN。

3. BN

基本思想是:在将 送给神经元之前,先对其做平移和伸缩变换, 将 的分布规范化成在固定区间范围的标准分布。通用变换框架就如下所示:

(1) 平移参数(shift parameter), 缩放参数(scale parameter)。通过这两个参数进行 shift 和 scale 变换: 得到的数据符合均值为 0、方差为 1 的标准分布。

(2) 再平移参数(re-shift parameter), 再缩放参数(re-scale parameter)。将 上一步得到的 进一步变换为:

最终得到的数据符合均值为 、方差为 的分布。

PS.把数据编导0-1标准分布又变回来的原因:如果只是把底层的数据分布变到0-1标准分布,那么就相当于底层的学习做了无用功,无论他怎么学,最后都只变到一个很小的范围里,看不太出来学习的效果;第二个就是神经元节点的输出要经过sigmoid函数,之所以利用这个函数的原因就是利用它具有饱和区的特性,筛掉一些过大过小的成分,而如果只是0-1标准分布的话,就一直在函数的线性部分,没有办法充分发挥函数的作用。而且变到标准型再变回到正常的分布并不是无用功,新的参数是学习得来的,去除了与下层计算的密切耦合。新参数很容易通过梯度下降来学习,简化了神经网络的训练。

4. 四种方法优缺点

分别竖着处理x,横着处理x,处理g(权重),· 改成余弦相似度

  • batch normalization

    • 分布差距较小的 mini-batch 可以看做是为规范化操作和模型训练引入了噪声,可以增加模型的鲁棒性;但如果每个 mini-batch的原始分布差别很大,那么不同 mini-batch 的数据将会进行不一样的数据变换,这就增加了模型训练的难度。
    • BN 比较适用的场景是:每个 mini-batch 比较大,数据分布比较接近。在进行训练之前,要做好充分的 shuffle. 否则效果会差很多
    • 不适用于 动态的网络结构 和 RNN 网络,因为 BN 需要在运行过程中统计每个 mini-batch 的一阶统计量和二阶统计量
  • layer normalization
    • 针对单个训练样本进行,不依赖于其他数据,因此可以避免 BN 中受 mini-batch 数据分布影响的问题,可以用于 小mini-batch场景、动态网络场景和 RNN,特别是自然语言处理领域。此外,LN 不需要保存 mini-batch 的均值和方差,节省了额外的存储空间
    • BN 的转换是针对单个神经元可训练的——不同神经元的输入经过再平移和再缩放后分布在不同的区间,而 LN 对于一整层的神经元训练得到同一个转换——所有的输入都在同一个区间范围内。如果不同输入特征不属于相似的类别(比如颜色和大小),那么 LN 的处理可能会降低模型的表达能力
  • weight normalization
    • WN 的规范化不直接使用输入数据的统计量,因此避免了 BN 过于依赖 mini-batch 的不足,以及 LN 每层唯一转换器的限制,同时也可以用于动态网络结构。
  • Cosine Normalization
    • CN 通过用余弦计算代替内积计算实现了规范化。原始的内积计算,其几何意义是 输入向量在权重向量上的投影,既包含 二者的夹角信息,也包含 两个向量的scale信息。去掉scale信息,可能导致表达能力的下降.

5. 为什么用?

  • 权重伸缩不变性:1-4

    有效地提高反向传播的效率,避免了反向传播时因为权重过大或过小导致的梯度消失或梯度爆炸问题,从而加速了神经网络的训练;具有参数正则化的效果,可以使用更高的学习率。

  • 数据伸缩不变性:1-3

    有效地减少梯度弥散,简化对学习率的选择

normalization 阅读笔记的更多相关文章

  1. Gated CNN 阅读笔记

    之前看过TCN,稍微了解了一下语言模型,这篇论文也是对语言模型建模,但是由于对语言模型了解不深,一些常用数据处理方法,训练损失的计算包括残差都没有系统的看过,只是参考网上代码对论文做了粗浅的复现.开学 ...

  2. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  3. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  4. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  5. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  6. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  7. Hadoop阅读笔记(七)——代理模式

    关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...

  8. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

  9. Hadoop阅读笔记(五)——重返Hadoop目录结构

    常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...

随机推荐

  1. apiCloud 下拉刷新

    api.setRefreshHeaderInfo({ bgColor: '#fff', textColor: '#4d4d4d', },function(ret, err){ //下拉刷新时,刷新的数 ...

  2. PHP如何定义类及其成员属性与操作

    1.类的定义: 类的关键字定义使用class 1.定义一个空类 Class Person{}; 2.定义一个有成员属性和操作的类 Class Person{ //成员属性 $name     =  ' ...

  3. CentOS7.3环境下源码安装httpd

    CentOS7.3环境下源码安装httpd 本文在CentOS7.3下,源码安装apache服务httpd2.4. 1.下载好源码安装包 [root@localhost ~]#ll total 625 ...

  4. Roman To Integer leetcode java

    问题描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...

  5. 6月5 Smarty自定义函数

    自定义函数:<{方法名称}> 在html页面是可以直接赋值的:(没啥作用只是知道即可) <{$a = "hello"}><div><{$a ...

  6. 关于export和export default的区别

    ES6的模块化中,export与export default都可以用于导出常量.函数.文件.模块等,我们可以通过在其它文件或模块中import(常量.函数.文件.模块)的方式导入,但在一个文件或模块中 ...

  7. python-day73--django-用户验证

    一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1 .authenticate()  ...

  8. 关于final static修饰的常量部署后没有更新的问题

    出现问题的场景是这样的: 项目中有个专门放流程Key值常量的类FlowConstants.java,其中这些常量都用了final static 修饰.某天因为修改了流程,相应的key值也改变了,所以直 ...

  9. hdu1569-方格取数-二分图网络流

    方格取数(2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  10. MySQL主从同步最佳实践

    #!/bin/bash export master_ip=192.168.7.206 export slave_ip=192.168.7.207 export root_passwd=123456   ...