批量归一化:固定样本还是按维度划分的不同样本?

彼得·金

当我阅读论文“批量标准化:通过减少内部协变量偏移来加速深度网络训练”时,我遇到了一些问题。

在论文中说:

由于来自训练数据的m个示例可以估计所有训练数据的均值和方差,因此我们使用小批量训练批归一化参数。

我的问题是:

他们是在选择m个示例,然后同时拟合批次规范参数,还是为每个输入维选择不同的m个示例集?

例如训练集是由x(i) = (x1,x2,...,xn):n维固定批次M = {x(1),x(2),...,x(N)},执行拟合所有gamma1~gammanbeta1~betan

对于gamma_ibeta_i选择不同批次M_i = {x(1)_i,...,x(m)_i}

格言

我还没有在交叉验证和数据科学上找到这个问题,所以我只能在这里回答。如有必要,随时进行迁移。

使用移动平均值一次计算每个迷你批中所有维度的均值和方差这是TF代码中的样子:

mean, variance = tf.nn.moments(incoming, axis)
update_moving_mean = moving_averages.assign_moving_average(moving_mean, mean, decay)
update_moving_variance = moving_averages.assign_moving_average(moving_variance, variance, decay)
with tf.control_dependencies([update_moving_mean, update_moving_variance]):
  return tf.identity(mean), tf.identity(variance)

您不必担心技术细节,这是正在发生的事情:

  • 首先,沿着批次轴计算整个批次mean它们都是向量(更确切地说是张量)。varianceincoming
  • 然后,当前值moving_meanmoving_variance通过assign_moving_average调用进行更新,该调用基本上是这样计算的:variable * decay + value * (1 - decay)

每次执行batchnorm时,它都会知道一个当前批次和一些先前批次的统计信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章