1. 一句话介绍一下BN
BN是神经网络为了防止梯度消失或梯度爆炸采取的一种策略,可以加快模型收敛,一般放在**项前。
2. BN的过程可以描述一下吗
输入一个数据集合B,对该数据集合B求其均值和方差,然后对B进行归一化操作,同时BN还有两个可学习的参数r和β,通过这两个参数对归一化后的结果进行一定程度的还原。
公式如下:
3. (BN中)归一化的目的是什么
将数据统一到一个区间内,减少数据的发散,从而加速模型的收敛。
提高训练稳定性。
4. 归一化有哪几种
常见的有两种,一种是线性函数归一化,另一种则是BN中的Z-score归一化。
线性函数归一化公式为:
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偏置参数,也是学习得到的,用来增强模型表达能力。
公式如下:
8. Transformer中为什么要舍弃 BN 改用 LN 呢
原始BN是为CNN而设计的,对整个batchsize范围内的数据进行考虑,而对于RNN以及transformer等等处理文本序列信息的模型来说,BN会变得非常复杂,而LN是对单个样本就可以进行处理,更加方便简单,自然选择用LN了。
9. BN和LN的区别
BN是对batchsize范围内数据进行处理
LN是对单个样本数据进行处理。