我是否必须在每个 BatchNorm 层之后使用一个 Scale-Layer?
Do I have to use a Scale-Layer after every BatchNorm Layer?
我正在使用 caffe,详细地说是 pycaffe,来创建我的神经元网络。我注意到我必须使用 BatchNormLayer 才能获得肯定的结果。我使用 Kappa-Score 作为结果矩阵。
我现在已经在我的网络中看到 BatchNorm-Layers 的几个不同位置。但我也遇到了 ScaleLayer,它不在层目录中,但经常与 BatchNorm 层一起提到
你总是需要在 BatchNorm - Layer 之后放置一个 ScaleLayer 吗?它有什么作用?
一般来说,与批量归一化并列的缩放层不会给您带来任何好处。每个都是线性变换。 BatchNorm 转换为新分布的均值为 0 和方差为 1,Scale 将整个范围压缩到指定区间,通常为 [0,1]。由于它们都是线性变换,如果您按顺序执行它们,则第二个将完全撤消第一个的工作。
他们对异常值的处理也有些不同。考虑一组数据:十个值,-1 和 +1 各五个。 BatchNorm 根本不会改变这一点:它已经有均值 0 和方差 1。为了保持一致性,让我们为 Scale 指定相同的区间,[-1, 1],这也是一个流行的选择。
现在,添加一个离群值,比如 99。 Scale 会将集合转换为 [-1, 1] 范围,因此现在有五个 -1.00 值、一个 +1.00 值(以前的 99)和五个 -0.96 值(以前的 +1)。
BatchNorm 关心的是平均标准偏差,而不是最大值和最小值。新的平均值是+9; S.D。是 28.48(四舍五入到小数点后两位)。这些数字将被缩放为 -.35 和 -.28 中的大约五个值,以及 3.16
中的一个值
一种缩放比例是否比另一种缩放效果更好在很大程度上取决于分布的偏斜和分散。我更喜欢 BatchNorm,因为它倾向于在分布的密集区域更好地区分。
来自 Ioffe & Szegedy 的原文batch normalization paper:"we make sure that the transformation inserted in the network can represent the identity transform."如果 BatchNorm 层之后没有 Scale 层,情况就不会是这样,因为 Caffe BatchNorm 层没有可学习的参数。
我是从 Deep Residual Networks git repo 那里学到的;请参阅此处的免责声明和已知问题下的第 6 项。
我正在使用 caffe,详细地说是 pycaffe,来创建我的神经元网络。我注意到我必须使用 BatchNormLayer 才能获得肯定的结果。我使用 Kappa-Score 作为结果矩阵。 我现在已经在我的网络中看到 BatchNorm-Layers 的几个不同位置。但我也遇到了 ScaleLayer,它不在层目录中,但经常与 BatchNorm 层一起提到
你总是需要在 BatchNorm - Layer 之后放置一个 ScaleLayer 吗?它有什么作用?
一般来说,与批量归一化并列的缩放层不会给您带来任何好处。每个都是线性变换。 BatchNorm 转换为新分布的均值为 0 和方差为 1,Scale 将整个范围压缩到指定区间,通常为 [0,1]。由于它们都是线性变换,如果您按顺序执行它们,则第二个将完全撤消第一个的工作。
他们对异常值的处理也有些不同。考虑一组数据:十个值,-1 和 +1 各五个。 BatchNorm 根本不会改变这一点:它已经有均值 0 和方差 1。为了保持一致性,让我们为 Scale 指定相同的区间,[-1, 1],这也是一个流行的选择。
现在,添加一个离群值,比如 99。 Scale 会将集合转换为 [-1, 1] 范围,因此现在有五个 -1.00 值、一个 +1.00 值(以前的 99)和五个 -0.96 值(以前的 +1)。
BatchNorm 关心的是平均标准偏差,而不是最大值和最小值。新的平均值是+9; S.D。是 28.48(四舍五入到小数点后两位)。这些数字将被缩放为 -.35 和 -.28 中的大约五个值,以及 3.16
中的一个值一种缩放比例是否比另一种缩放效果更好在很大程度上取决于分布的偏斜和分散。我更喜欢 BatchNorm,因为它倾向于在分布的密集区域更好地区分。
来自 Ioffe & Szegedy 的原文batch normalization paper:"we make sure that the transformation inserted in the network can represent the identity transform."如果 BatchNorm 层之后没有 Scale 层,情况就不会是这样,因为 Caffe BatchNorm 层没有可学习的参数。
我是从 Deep Residual Networks git repo 那里学到的;请参阅此处的免责声明和已知问题下的第 6 项。