面试字节跳动时,由于自己做的课题是基于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是解决梯度消失/爆炸的一种手段,那具体是怎么实现的呢?