算法面试BatchNormalization批标准化(1) 深度学习必考

面试字节跳动时,由于自己做的课题是基于LSTM的时序模型,那自然引申出了什么RNN,GRU啦,梯度消失/爆炸啦,过拟合/欠拟合啦。。。但是这些都属于深度学习的范畴,而深度学习里BN也是非常重要的环节,还有mini batch啥的,(但由于我的课题中没有用到,我自己也有点想不通为啥我的LSTM模型没用,我是直接用MinMaxScaler这种提前对数据归一化了,,,所以被问到批标准化总是有点答不上来,两次!!可见其重要性,痛定思痛,专门写一篇BN来恶补一下。)

看了一圈回来终于悟出了我什么专攻时间序列的我不了解BN了,查了半天发现是因为咋时序真的不咋用,都是数据预处理时全局归一/标准化一下就扔LSTM模型了。 BN最多的应用场景是深度学习的CV方向的卷积CNN,就好比时序不怎么用Embedding一样。。但咱也不敢奢求面试官理解我们没涉及这些,这些仍是机器学习和深度学习相当重要的知识点,所以务必额外花点功夫了解一下其原理、机制、作用与实现。

什么是Batch Normalization(BN,批标准化)?

简单来说,BN是使得DNN(Deep Neural Network深度神经网络)更加快速和稳定一个方法。方法是:对层的输入重新居中和重新缩放进行归一化。归一化步骤在非线性函数之前(或之后)应用。

前文算法面试RNN、LSTM、GRU一文必备提到过,BN是解决梯度消失/爆炸的一种手段,那具体是怎么实现的呢?
在这里插入图片描述
⬆️没有BN的多层感知机MLP ,存在分布之间的高度相关性。⬆️深度神经网络之所以如此难训练,其中一个重要原因就是网络中层与层之间存在高度的关联性与耦合性。

网络中层与层之间的关联性会导致如下的状况:随着训练的进行,网络中的参数也随着梯度下降在不停更新。一方面,当底层网络中参数发生微弱变化时,由于每一层中的线性变换与非线性激活映射,这些微弱变化随着网络层数的加深而被放大(类似蝴蝶效应);另一方面,参数的变化导致每一层的输入分布会发生改变,进而上层的网络需要不停地去适应这些分布变化,使得我们的模型训练变得困难。上述这一现象叫做Internal Covariate Shift
在这里插入图片描述

Batch Normalization的原论文作者给了Internal Covariate Shift一个较规范的定义:在深层网络训练的过程中,由于网络中参数变化而引起内部结点数据分布发生变化的这一过程被称作Internal Covariate Shift。

  1. Internal Covariate Shift引发的问题:
    (1)上层网络需要不停调整来适应输入数据分布的变化,导致网络学习速度的降低
    (2)网络的训练过程容易陷入梯度饱和区(梯度消失/梯度爆炸),减缓网络收敛速度(解决思路一:使用非饱和性激活函数,例如线性整流函数ReLU;二:让激活函数的输入分布保持在一个稳定状态来尽可能避免它们陷入梯度饱和区,即BN

2.Internal Covariate Shift解决方案:
(1)白化(Whitening)。白化(Whitening)是机器学习里面常用的一种规范化数据分布的方法,主要是PCA白化与ZCA白化。从而使得使得输入特征分布具有相同的均值与方差去除特征之间的相关性。
(2)然而白化过程计算成本太高,并且在每一轮训练中的每一层我们都需要做如此高成本计算的白化操作;白化过程由于改变了网络每一层的分布,因而改变了网络层中本身数据的表达能力。底层网络学习到的参数信息会被白化操作丢失掉。由此,Batch Normalization被提出来了,就是简化+改进版的白化。

有了以上的基础,我们终于可以解答提出的问题,BN到底是如何实现缓解梯度消失/爆炸的呢?其实上文已经提到了:通过normalize操作让激活函数的输入分布保持在一个稳定状态,让激活函数的输入数据落在梯度非饱和区,来尽可能避免它们陷入梯度饱和区,即BN

在这里插入图片描述
有BN的多层感知机MLP , 减轻分布之间的分布。⬆️

Reference

https://zhuanlan.zhihu.com/p/34879333
https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值