@佳雨 所说:选择什么样的归一化方式,取决于你关注数据的哪部分信息。如果某个维度信息的差异性很重要,需要被拟合,那就别在那个维度进行归一化。
我来提供一个直观的角度假设有两个样本,分别是
样本index | x1 | x2 | 标签 |
---|---|---|---|
1 | 0 | 10 | True |
2 | 2 | 0 | False |
这两个样本是由一个模型生成的,譬如模型A
,譬如
又譬如模型B
,譬如
第一、如果做了batchnorm(只mean归一化),那么样本值分别为
样本index | x1 | x2 | 标签 |
---|---|---|---|
1 | -1 | 5 | True |
2 | 1 | -5 | False |
这时你发现模型A你是拟合不出来的,模型B还可以拟合(譬如 )。这是为什么呢?因为batchnorm抹去了x1和x2间原有的大小关系,所以导致利用特征维度间关系的模型失效了;batchnorm保留了不同样本间的大小关系,所以利用样本间不同的值的模型还能有效。
第二、如果做了layernorm(只mean归一化),那么样本值分别为
样本index | x1 | x2 | 标签 |
---|---|---|---|
1 | -5 | 5 | True |
2 | 1 | -1 | False |
这时你发现模型A可以拟合(譬如),模型B却拟合不了了。这是为什么呢?因为layernorm保留了x1和x2间原有的大小关系,所以导致利用特征维度间关系的模型可以拟合;layernorm抹去了样本间的大小关系,所以利用样本间不同的值的模型无效了;
所以其实可以看到如果你的特征依赖于不同样本间的统计大小进行比较,那么batchnorm是有效的(譬如CV任务);如果你的特征依赖于样本内部不同特征维度的比较,那么layernorm更有效(譬如NLP,不同batch样本的信息关联性不大)
====================题外话====================
至于要是batchnorm和layernorm串行做,那就会出现两个模型都无法拟合的情况
码字不易,欢迎探讨点赞
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有