Pet*_*eng 12 machine-learning deep-learning
我是深度学习的初学者。我知道在常规神经网络中,人们在激活之前会使用批处理规范,这将减少对良好的权重初始化的依赖。我想知道当我使用它时是否会对RNN / lstm RNN起到同样的作用。有人有经验吗?谢谢。
不可以,您不能在循环神经网络上使用“批次归一化”,因为统计数据是按批次进行计算的,因此不考虑网络的循环部分。权重在RNN中共享,并且每个“循环”的激活响应可能具有完全不同的统计属性。
考虑到这些限制的类似于批归一化的其他技术已经开发出来,例如层归一化。LSTM层也有重新参数化,可以使用批处理规范化,例如,Coijmaans等人在“ 循环批处理规范化”中所述。2016年。
在任何非循环网络(无论是否为 convnet)中,当你做 BN 时,每一层都可以调整传入的规模和均值,因此每层的传入分布不会不断变化(这就是 BN 论文的作者声称的BN的优势)。
对 RNN 的循环输出执行此操作的问题在于,传入分布的参数现在在所有时间步长(它们实际上是反向传播时间或 BPTT 中的层)之间共享。所以分布最终在 BPTT 的时间层上是固定的。这可能没有意义,因为数据中可能存在跨时间序列变化(以非随机方式)的结构。例如,如果时间序列是一个句子,某些词更有可能出现在开头或结尾。因此,固定分布可能会降低 BN 的有效性。
应用于RNN的批处理归一化与应用于CNN的批处理归一化:您可以通过以下方式计算统计信息:在应用BN之后,图层的循环/卷积属性仍然保持不变。
对于CNN,这意味着不仅要在小型批次上,而且还要在两个空间维度上计算相关统计信息;换句话说,将归一化应用于通道维。
对于RNN,这意味着在小批量和时间/步长维度上计算相关统计信息,因此仅对向量深度应用归一化。这也意味着您只能对转换后的输入进行批量归一化(例如,在垂直方向上BN(W_x * x)
),因为水平(跨时间)连接是时间相关的,不应仅仅进行平均。
归档时间: |
|
查看次数: |
13188 次 |
最近记录: |