最近看到一篇文章非常有意思的文章, 是关于正则化的探讨, 作者发现在不同阶段对数据进行不同的正则化操作会有非常大的影响,在正确的位置进行正确的正则化操作可以为模型带来巨大的提升
本文一共两块内容,
第一块介绍LayerNorm以及BatchNorm的联系&区别;
第二块则专注于介绍论文的内容,该篇论文是基于实践经验的,
个人觉得非常值得一试。
- LayerNorm 和 BatchNorm的介绍;
- 论文的解读
关于LayerNorm & BatchNorm
BatchNorm
BatchNorm是对一批样本进行处理, 对一批样本的每个特征分别进行归一化,举个简单的例子,加入我有一批样本, 每个样本有三个特征,,分别是身高,体重,年龄,那么我做归一化的时候,就是对体重做归一化,对身高做归一化,对年龄做归一化,三者之间不会有交叉影响。
这个看起来很符合直观的感觉,可以看做是降低每个特征量纲的影响,我们也经常会在CTR等深度模型的MLP部分见到BatchNorm操作。
也正因为如此,
所以BatchNorm会受到Batch size的影响;
当Batchsize小的时候效果往往不是非常稳定.
LayerNorm
LayerNorm是对一个样本进行处理, 对一个样本的所有特征进行归一化,乍一看很没有道理,因为如果对身高体重和年龄一起求一个均值方差,都不知道这些值有什么含义,但存在一些场景却非常有效果--NLP领域。
在NLP中,N个特征都可能表示不同的词,这个时候我们仍然采用B