1. 一句话介绍一下BN

BN是神经网络为了防止梯度消失或梯度爆炸采取的一种策略,可以加快模型收敛,一般放在**项前。

2. BN的过程可以描述一下吗

输入一个数据集合B,对该数据集合B求其均值和方差,然后对B进行归一化操作,同时BN还有两个可学习的参数r和β,通过这两个参数对归一化后的结果进行一定程度的还原。

公式如下:
2. BN和LN相关面试题

3. (BN中)归一化的目的是什么

将数据统一到一个区间内,减少数据的发散,从而加速模型的收敛。
提高训练稳定性。

4. 归一化有哪几种

常见的有两种,一种是线性函数归一化,另一种则是BN中的Z-score归一化。
线性函数归一化公式为:Xnorm=XXmin/XmaxXminX_{norm} = X-X_{min} / X_{max}-X_{min}
Z-score归一化公式如问题2所示。

5. BN中均值、方差通过哪些维度计算得到

均值与方差的计算类似,这里以均值计算为例:
假设输入数据的维度是[batchsize channel w h]
那么这里就要考虑channel的数量,假设channel有3个,分别为1、2、3标号;batchsize为10。
那么channel 1中的10个数据全部相加然后除以batchsizewh
channel 2中的10个数据全部相加然后除以batchsizewh
channel 3中的10个数据全部相加然后除以batchsizewh。
所以r和β参数的维度其实和channel是一样的,此时为3。

6. 训练与推理时BN中的均值、方差分别是什么

训练时是该batchsize求得的,
推理时是全部批次求得的。


7. Transformer中的LN是什么样子的

首先也是在**项前进行,先求出一个样本的均值和方差,然后执行归一化操作,但这里存在一个gain参数和bias偏置参数,也是学习得到的,用来增强模型表达能力。

公式如下:
2. BN和LN相关面试题

8. Transformer中为什么要舍弃 BN 改用 LN 呢

原始BN是为CNN而设计的,对整个batchsize范围内的数据进行考虑,而对于RNN以及transformer等等处理文本序列信息的模型来说,BN会变得非常复杂,而LN是对单个样本就可以进行处理,更加方便简单,自然选择用LN了。

9. BN和LN的区别

BN是对batchsize范围内数据进行处理
LN是对单个样本数据进行处理。

相关文章: