Weight Normalization 相比batch Normalization 有什麼優點呢?
Weight normalization: A simple reparameterization to accelerate training of deep neural network
碰巧之前在Valse的公眾號上看過關於這篇的介紹,簡單回顧了一下。
首先,BN有一個根本缺陷,那就是在訓練過程中需要對每個mini batch統計得到normalization中使用的均值和方差,這會導致兩個問題,一個是在某些batch size很小(甚至為1)的情況下BN無法起作用,另一個就是文章中提及的在每次迭代中引進了隨機性,使梯度增加了noise,這一點使得BN對於generative model(例如lstm網路)或者reinforcement learning(例如DQN)都是不適用的。
而weight normalization的思路是對每個neuron的weight vector進行權重g與方向v的分解,在BP過程中分別對g與v進行更新從而加速了收斂的速度。由於這個操作是定義在neuron層面,所以WN相對於BN也具有更大的適用範圍。
以上です。
順帶安利一下valse的論壇,定期有文章選介也可以瞄一下(VALSE - 視覺與學習青年學者研討會最近剛好在整理這方面資料,我嘗試來回答一下吧。
Weight Normalization和Batch Normalization都屬於參數重寫(Reparameterization)的方法,只是採用的方式不同,Weight Normalization是對網路權值W進行normalization,因此也稱為Weight Normalization;Batch Normalization是對網路某一層輸入數據進行normalization。。Weight Normalization相比Batch Normalization有以下三點優勢:
1、Weight Normalization通過重寫深度學習網路的權重W的方式來加速深度學習網路參數收斂,沒有引入minbatch的依賴,適用於RNN(LSTM)網路(Batch Normalization不能直接用於RNN,進行normalization操作,原因在於:1、RNN處理的Sequence是變長的;2、RNN是基於time step計算,如果直接使用Batch Normalization處理,需要保存每個time step下,mini btach的均值和方差,效率低且占內存)。
2、Batch Normalization基於一個mini batch的數據計算均值和方差,而不是基於整個Training set來做,相當於進行梯度計算式引入雜訊。因此,Batch Normalization不適用於對雜訊敏感的強化學習、生成模型(Generative model:GAN,VAE)使用。相反,Weight Normalization對通過標量g和向量v對權重W進行重寫,重寫向量v是固定的,因此,基於Weight Normalization的Normalization可以看做比Batch Normalization引入更少的雜訊。
3、不需要額外的存儲空間來保存mini batch的均值和方差,同時實現Weight Normalization時,對深度學習網路進行正向信號傳播和反向梯度計算帶來的額外計算開銷也很小。因此,要比採用Batch Normalization進行normalization操作時,速度快。
但是, Weight Normalization不具備Batch Normalization把網路每一層的輸出Y固定在一個變化範圍的作用。因此,採用Weight Normalization進行Normalization時需要特別注意參數初始值的選擇。
深度學習網路進行Normalization的方法還有一種,叫Layer Normalization。與WN和BN不同,LN是一種非Reparameterization。
獲得更多LN、BN和WN的細節的介紹,歡迎掃描頭像二維碼 或微信搜索公眾號「深度學習與NLP」 ,關注微信公眾號,回復往期內容查看。同時,還可獲得深度學習基礎到進階,GAN和強化學習視頻教程。希望對你有用。
直接貼論文了。。。
推薦閱讀:
※有沒有好理解的關於神經網路的書推薦?
※機器學習怎麼系統的入門?
※為何總感覺人工智慧和神經科學(神經網路)被綁在一起?
※深度學習(如100層)為什麼不過擬合?
※如何評價 MIT Deep Learning 這本書?
TAG:機器學習 | 自然語言處理 | 計算機視覺 | 神經網路 | 深度學習DeepLearning |