42、经典面试题:训练和推理中的BN有什么不一样

参加过深度学习面试的同学,大部分可能都会刷过一些面试经验贴,其中也会有不少关于 BN 的面试贴。

对于这个算法,一个经典的问法并不是让你手写算法,而是会问你在训练过程中和推理过程中,批归一化算法相同吗?如果你回答相同,那基本就没戏了。

既然这么问,那肯定就是不同的,具体怎么个不同法呢?

均值和方差的处理不一样

一个完整的训练过程是需要经过很多轮次的迭代。对于 BN 算法,在训练过程大概是要经过以下这么几步的:

  1. 对每一样本计算均值和方差

  2. 使用计算的均值和方差对输入数据进行标准化

  3. 对标准化后的数据进行缩放和平移,通过可学习的参数进行调整

  4. 在下一轮反向传播中计算梯度并再一次更新参数

其他的我们暂时先不管,先看第 1 条和第 2 条。

每个小批次都会计算一次均值和方差,也就是说如果我分了 10 个批次来训练模型,那岂不是要计算出 10 批均值和方差吗?计算出来的这 10 个均值和方差都是局部均值和局部方差。

而在推理过程,我们需要的是所有训练数据训练出来的一个全局均值和全局方差,那怎么办呢?

这就需要对训练的局部均值和方差做一个处理,下面看一些在推理过程中 BN 要经过哪些过程。

针对 BN 算法,在推理过程大概要经过以下几步:

  1. 使用训练过程中累积的均值和标准差对输入数据进行标准化。

  2. 对标准化后的数据进行缩放和平移,使用训练过程中学到的参数。

  3. 不再更新参数,因为推理阶段不进行反向传播。

  4. <

你可能感兴趣的:(CV视觉算法入门与调优,机器学习,算法,人工智能)