深度学习基础知识(三)--- Normalization 规范化 操作

本文部分过程和图片来源于以下参考资料

参考资料:

知乎专栏 - 张俊林 - 深度学习中的Normalization模型 - https://zhuanlan.zhihu.com/p/43200897

知乎专栏 - Juliuszh - 详解深度学习中的Normalization,BN/LN/WN - https://zhuanlan.zhihu.com/p/33173246

CSDN 博客 - 夏洛的网 - https://blog.csdn.net/liuxiao214/article/details/81037416

1、引言

Normalization的中文翻译一般叫做“规范化”,是一种对数值的特殊函数变换方法,也就是说假设原始的某个数值是x,套上一个起到规范化作用的函数,对规范化之前的数值x进行转换,形成一个规范化后的数值,即

所谓规范化,是希望转换后的数值 x_bar 满足一定的特性,至于对数值具体如何变换,跟规范化目标有关,

也就是说f()函数的具体形式,不同的规范化目标导致具体方法中函数所采用的形式不同。

总结性描述:

将越来越偏的分布拉回到标准化的分布,使得激活函数的输入值落在激活函数对输入比较敏感的区域,

从而使梯度变大,加快学习收敛速度,避免梯度消失的问题。

 

2、神经元工作原理

下图是神经元工作的示意图:

在介绍深度学习Normalization前,我们先普及下神经元的活动过程。深度学习是由神经网络来体现对输入数据的函数变换的,而神经网络的基础单元就是网络神经元,一个典型的神经元对数据进行处理时包含两个步骤的操作

步骤一:对输入数据进行线性变换,产生净激活值

x是输入,w是权重参数,b是偏置,w和b是需要进过训练学习的网络参数。

步骤二:套上非线性激活函数,神经网络的非线性能力来自于此,

目前深度学习最常用的激活函数是ReLu函数: x' = ReLu(y)

如此一个神经元就完成了对输入数据的非线性函数变换。

这里需要强调下,步骤一的输出一般称为净激活(Net Activation),第二步骤经过激活函数后得到的值为激活值。

3Normalization的分类

至于深度学习中的Normalization,因为神经网络里主要有两类实体:神经元或者连接神经元的

所以按照规范化操作涉及对象的不同可以分为两大类:

① 一类是对第L层每个神经元的 净激活值 进行Normalization操作,

比如BatchNorm/ LayerNorm/ InstanceNorm/ GroupNorm等方法都属于这一类;

② 另外一类是对神经网络中连接相邻隐层神经元之间的边上的权重进行规范化操作,比如Weight Norm就属于这一类。

广义上讲,一般机器学习里看到的损失函数里面加入的对参数的的L1/L2等正则项,本质上也属于这第二类规范化操作

L1正则的规范化目标是造成参数的稀疏化,就是争取达到让大量参数值取得0值的效果

L2正则的规范化目标是有效减小原始参数值的大小

有了这些规范目标,通过具体的规范化手段来改变参数值,以达到避免模型过拟合的目的。

 

4、第一类 Normalization

下面先介绍第一类针对神经元的规范化操作方法,这是目前DNN做Normalization最主流的做法。

绝大多数网络目前都是将norm层放在激活函数之前。后续有研究提出的,放在激活函数之后效果更好,这里还是看最原始的情况。

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值