我可以将层归一化与 CNN 一起使用吗?
Posted
技术标签:
【中文标题】我可以将层归一化与 CNN 一起使用吗?【英文标题】:Can I use Layer Normalization with CNN? 【发布时间】:2017-12-10 00:11:26 【问题描述】:我看到 Layer Normalization 是比 Batch Normalization 更现代的规范化方法,在 Tensorflow 中编码非常简单。 但我认为层归一化是为 RNN 设计的,批量归一化是为 CNN 设计的。 我可以使用处理图像分类任务的 CNN 层归一化吗? 选择batch normalization或layer的标准是什么?
【问题讨论】:
【参考方案1】:您可以在 CNN 中使用 Layer normalisation
,但我认为它并不比 Batch Norm
更“现代”。他们都以不同的方式正常化。 Layer norm
通过收集层内每个单元的统计信息来规范化批次中单个层的所有激活,而 batch norm
对每个激活的整个批次进行规范化,其中为批次中的每个单元收集统计信息。
Batch norm
通常比layer norm
更受欢迎,因为它试图将每个激活归一化为单位高斯分布,而layer norm
试图将所有激活的“平均”归一化为单位高斯分布。但如果批量太小而无法收集到合理的统计信息,则首选layer norm
。
【讨论】:
感谢您的回复。如果训练样本与测试样本有偏移(例如亮度或旋转),则首选层范数,可以吗? 是的,为了处理图像输入,您需要使测试和训练数据标准化。但是batch norm
和layer norm
用于需要标准化的网络之间的层。【参考方案2】:
我还想补充一点,正如 original paper for Layer Norm, page 10 section 6.7 中提到的,不建议使用 Layer Norm,作者告诉“必须对 CNN 进行更多研究”
另外,提醒一下 - 对于 RNN,Layer norm 似乎比 Batch Norm 更好,因为在同一个 minibatch 中训练用例的长度可以不同
【讨论】:
这篇论文现在已经很老了。是否对此进行了进一步调查?以上是关于我可以将层归一化与 CNN 一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章