首页 / 💻 技术交流 / 深度学习中的 Batch Normali
💻 技术交流 🧧 红包帖 📊 投票帖

深度学习中的 Batch Normalization 层

🧧
楼主发了一个积分红包
总金额 10 积分 / 1 个
剩余 0 个 · 0 积分 · 过期:19天前
dYz00 10
📊 参与投票(共 2 票)
BN 层需要足够大的 batch size 来让均值和方差估计更精准 2 票 · 100%
BN 层需要足够小的 batch size 来让海森矩阵储存和求逆的成本更小 0 票 · 0%

批归一化(Batch Normalization)

训练时每层参数不断变化,会导致一些层的输入数据分布不断变化(内部协变量偏移问题)。而这又会导致收敛速度慢和 S 型激活函数容易饱和的问题。

BN 是一个层,一般在激活函数之前。

批归一化在训练时将每个 batch 的特征向量(输入向量)平移缩放,使得均值为 0,方差为 1(显然这样需要 batch size 足够大否则不够准确)。具体来说,给出 batch size(记为 m)列的特征矩阵 H,每行是前一层的输入,标准化:

μ=1mi=1mHi,:

σ=δ+1mi=1m(Hi,:μ)2

H=Hμσ

根号内的 δ 防止到零点附近梯度未定义。

如果只这样做然后输出 H,会影响层的学习能力,比如 logistic sigmoid 激活函数,归一化后输入在函数的零点附近,这部分是近似线性的。

BN 方法给出两个可学习的参数:γ 对应缩放,β 对应平移,BN 层的输出为 γH+β

我们先归一化均值和方差,再学习这两个参数,看似多此一举,但之前 H 的均值取决于前面层的复杂关联,BN 可以平滑这种波动,同时不缩小能表示的函数族。

加上 BN 层后,其实全连接层 XW+b 的偏置项可以去掉,因为参数 β 和 b 作用完全相同。

BN 层的优点还有:

  • 减少对部分正则化方法的依赖,比如可以去掉 Dropout,减小 L2 正则化系数。
  • 由于稳定了模型的分布,后面的层不需要频繁适应前面层的变化,所以可以选择更大的学习率。

💬 全部评论 0

共 0 条 · 按楼层排序
登录 注册 后即可发表评论
💬
还没有评论,快来抢沙发吧