在RNN / lstm RNN中使用批处理规范化是正常的吗?

Pet*_*eng 12 machine-learning deep-learning

我是深度学习的初学者。我知道在常规神经网络中,人们在激活之前会使用批处理规范,这将减少对良好的权重初始化的依赖。我想知道当我使用它时是否会对RNN / lstm RNN起到同样的作用。有人有经验吗?谢谢。

Mat*_*gro 7

不可以,您不能在循环神经网络上使用“批次归一化”,因为统计数据是按批次进行计算的,因此不考虑网络的循环部分。权重在RNN中共享,并且每个“循环”的激活响应可能具有完全不同的统计属性。

考虑到这些限制的类似于批归一化的其他技术已经开发出来,例如层归一化。LSTM层也有重新参数化,可以使用批处理规范化,例如,Coijmaans等人在“ 循环批处理规范化”中所述。2016年。

  • 这个答案是不正确的。您可以在循环网络中使用批处理规范化:https://arxiv.org/abs/1603.09025实际上,许多DL框架已在相应的类中实现了它。 (10认同)
  • @minerals您所链接的论文从字面上说,您必须重新配置LSTM才能使其能够使用批量标准化,所以我的回答是,您不能将其与原始循环网络一起使用,它们需要进行修改或使用其他形式的BN。我将对此问题添加参考。 (2认同)

Dan*_*Dan 7

在任何非循环网络(无论是否为 convnet)中,当你做 BN 时,每一层都可以调整传入的规模和均值,因此每层的传入分布不会不断变化(这就是 BN 论文的作者声称的BN的优势)。

对 RNN 的循环输出执行此操作的问题在于,传入分布的参数现在在所有时间步长(它们实际上是反向传播时间或 BPTT 中的层)之间共享。所以分布最终在 BPTT 的时间层上是固定的。这可能没有意义,因为数据中可能存在跨时间序列变化(以非随机方式)的结构。例如,如果时间序列是一个句子,某些词更有可能出现在开头或结尾。因此,固定分布可能会降低 BN 的有效性。


vel*_*bit 5

应用于RNN的批处理归一化与应用于CNN的批处理归一化:您可以通过以下方式计算统计信息:在应用BN之后,图层的循环/卷积属性仍然保持不变。

对于CNN,这意味着不仅要在小型批次上,而且还要在两个空间维度上计算相关统计信息;换句话说,将归一化应用于通道维。

对于RNN,这意味着在小批量和时间/步长维度上计算相关统计信息,因此仅对向量深度应用归一化。这也意味着您只能对转换后的输入进行批量归一化(例如,在垂直方向上BN(W_x * x)),因为水平(跨时间)连接是时间相关的,不应仅仅进行平均。

  • 这是很好的解释。但是,如果模型包含超过 1 个 LSTM 层,其中第 i 层的输出成为第 (i+1) 层的输入,那么 LSTM 层之间是否可以应用归一化?在这种情况下,第 i 层的输出将被归一化... (2认同)
  • 提醒所有遇到此评论的人。注意可变长度的序列。如果批处理中有填充,请确保批处理规范中不包含填充。 (2认同)