谷歌力作:神經網路訓練中的Batch依賴性很煩?那就消了它!
點選上方↑↑↑“視學演算法”關注我
來源:公眾號 量子位 授權轉
再見了,批量依賴性(Batch Dependence)。
優化神經網路方法千千萬,批量歸一化(Batch Normalization,BN)就是其中之一。
這種方法可以說是非常成功,減輕了如何合理初始化神經網路這個棘手問題。可以成倍加快大型卷積神經網路訓練速度,也能大幅提升收斂後的分類準確率。
但樣本間的依賴性卻是個問題:
若是小批量(mini-batch)太小,或者樣本間存在相關性,就會對訓練產生影響。
雖然也有人提出了諸如批量再歸一化(Batch Renormalization)和群組歸一化(Group Normalization,GN)等方法,但要麼與大批量BN效能不匹配,要麼在小批量的BN仍表現出效能下降。
怎麼破?
那就直接消除批量依賴性。
這是來自Google Research團隊的一篇力作,提出了濾波器響應歸一化(Filter Response Normalization,FRN)層,有效改善了上述問題。
這項研究的主要貢獻是如下三點:
1、FRN是一種歸一化方法,可以讓每個通道(channel)歸一化訓練的模型達到高精度。
2、閾值線性單元(Thresholded Linear Unit,TLU),是一個和FRN一起使用的啟用函式,即使在沒有任何批量依賴關係的大批量情況下,也比BN的效果要好。研究人員把這種組合稱作FRN層。
3、在真實場景中,比較了各種歸一化方法在大型影像分類和物件檢測任務中的表現。
麥迪遜大學統計學助理教授、《Python機器學習》作者Sebastian Raschka也分享了這項研究,得到了網友較高的關注。
這條訊息釋出沒多久,便已經有了100多的分享和接近400的點贊。
接下來,就來看一下FRN層的廬山真面吧。
效果如何?
來看一下FRN層的效果。
實驗任務主要是影像分類和目標檢測,分別在ImageNet和COCO資料集上進行。
首先是影像分類的實驗結果。
△表1 對於ResnetV2-50和InceptionV3,在ImageNet分類任務中,FRN層在批量大小方面優於BN和其他歸一化方法。
ImageNet分類資料集包含1000個類,研究人員對1.28M大小的影像進行了訓練,並對50K驗證影像進行結果報告。影像的大小為299X299。
與FRN層做比較的是一些常規的歸一化方法,包括批量歸一化(Batchnorm)、批量再歸一化(BatchRenorm)、群組歸一化(Groupnorm)、層歸一化(Layernorm)和例項歸一化(Instancenorm)。
從實驗結果可以看到,即使是在大批量規模的情況下,FRN的方法都優於其它主流的歸一化方法。
並且在ResnetV2-50和Incepetion V3上,都表現出了良好的效能優勢。這表明批量依賴性訓練對於高效能來說是不必要的。
下圖展示了使用Resnet V2-50結構的各種歸一化方法的訓練和驗證曲線。
△使用ResnetV2-50模型進行Imagenet分類的各種歸一化方法的訓練曲線和驗證曲線的比較。
不難看出,FRN層實現了更高的訓練和驗證精度,這表明去除隨機批量依賴性可以做到更簡、更優,從而使模型得到更好的訓練。
接下來是在COCO資料集上的目標檢測任務。
△表2 在COCO資料集上的目標檢測任務結果。
研究人員使用80個物件類在COCO資料集上執行實驗。
從實驗結果中,不難看出,FRN層在所有批量大小上都優於其它方法。
值得注意的是,當BN在小批處理中表現出顯著的效能下降時,FRN表現出相對較小的效能下降,並且始終優於GN。
FRN層長什麼樣?
之前已經提到,FRN層是FRN和TLU的結合。所以,該方法的結構如下圖所示:
△研究人員所提出的FRN層示意圖。
研究人員假設要處理的是前饋神經網路,在形狀為 B,W,H,C 的卷積運算區域4D張量X之後產生的濾波器響應。
其中,B是小批量的大小,W、H是map的空間範圍,C是卷積中使用的濾波器數。C也指輸出通道。
對於上述提出的歸一化方案,研究人員指出了幾點值得注意的地方:
1、與其他歸一化方案類似,濾波器響應歸一化消除了濾波器權重和預啟用的尺度效應(scaling effect)。
2、所提出方法的主要區別之一是,沒有在歸一化之前移除平均值。
3、這個歸一化方法是在每個通道的基礎上進行的。
4、雖然乍一看,FRN和之前有人提出的區域性響應歸一化(LRN)非常相似,但是LRN在相同的空間位置上對相鄰通道進行歸一化,而FRN則是對空間範圍進行全域性歸一化。
方法雖好,並不通用
雖然FRN層在實驗上取得了較大的進步,但網友也對此提出質疑。
作者僅報告了不超過32的批量處理大小。不知道它是否可與大型(常用)批量處理大小(64,128,256,512等)相提並論。
此方法不適用於非卷積運算,並且該運算的方差對輸出通道大小敏感。
資料集中的實驗非常有限。
當然,研究人員在論文中也提到,FRN層這個方法並不是通用的,例如,層歸一化(LN)在NLP任務中就非常好用。
其它領域中FRN層的表現,也是這項工作未來所要探索的內容。
那麼,谷歌這次提出的新方法,對你的研究有幫助嗎?
傳送門
論文:
https://arxiv.org/abs/1911.09737
Twitter:
https://twitter.com/rasbt/status/1200808727613452291
Reddit:
https://www.reddit.com/r/MachineLearning/comments/e4g50h/r_filter_response_normalization_layer_eliminating/
- END -
如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。掃描下方二維碼或者微信搜尋「perfect_iscas」,新增好友後即可獲得10套程式設計師全棧課程+1000套PPT和簡歷模板,向我私聊「進群」二字即可進入高質量交流群。
↓掃描二維碼進群↓
喜歡文章,點個在看
相關文章
- Batch Normalization: 如何更快地訓練深度神經網路BATORM神經網路
- 訓練神經網路時如何確定batch size?神經網路BAT
- 神經網路訓練的三個基本概念Epoch, Batch, Iteration神經網路BAT
- 3.3 神經網路的訓練神經網路
- 訓練自己的Android TensorFlow神經網路Android神經網路
- 用神經網路測量訓練集的半衰期神經網路
- 如何應對訓練的神經網路不工作?神經網路
- 使用tf.estimator.Estimator訓練神經網路神經網路
- 谷歌開源Neural Tangents:簡單快速訓練無限寬度神經網路谷歌神經網路
- umich cv-5-1 神經網路訓練1神經網路
- umich cv-5-2 神經網路訓練2神經網路
- 從零開始:教你如何訓練神經網路神經網路
- 機器學習之訓練神經網路:最佳做法機器學習神經網路
- 【python實現卷積神經網路】開始訓練Python卷積神經網路
- 想免費用谷歌資源訓練神經網路?Colab 詳細使用教程 —— Jinkey 原創谷歌神經網路
- 神經網路常見引數解釋:epoch、batch、batch size、step、iteration神經網路BAT
- 如何入門Pytorch之四:搭建神經網路訓練MNISTPyTorch神經網路
- 面向統一的AI神經網路架構和預訓練方法AI神經網路架構
- 你也可以訓練超大神經網路!谷歌開源GPipe庫神經網路谷歌
- 依賴反向傳播改進神經網路資料處理的精確度反向傳播神經網路
- 深度學習與CV教程(6) | 神經網路訓練技巧 (上)深度學習神經網路
- 迴圈神經網路之embedding,padding,模型構建與訓練神經網路padding模型
- 神經網路之反向傳播訓練(8行程式碼)神經網路反向傳播行程
- 別再煉丹了!谷歌大腦提出“權重無關”神經網路,無需調參訓練谷歌神經網路
- 關於訓練神經網路的諸多技巧Tricks(完全總結版)神經網路
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 使用人工神經網路訓練手寫數字識別模型神經網路模型
- 在Python中使用OpenCV訓練神經網路來檢測手勢!PythonOpenCV神經網路
- composer:2-4倍加速神經網路訓練的演算法庫神經網路演算法
- 深度神經網路的分散式訓練概述:常用方法和技巧全面總結神經網路分散式
- 【譯】為什麼命名“它”為依賴屬性(DependencyProperty)
- 送你9個快速使用Pytorch訓練解決神經網路的技巧(附程式碼)PyTorch神經網路
- ICLR 2024 Oral|用巧妙的「傳送」技巧,讓神經網路的訓練更加高效ICLR神經網路
- torch神經網路--線性迴歸神經網路
- 迴圈神經網路設計同樣可以使用預訓練詞“嵌入”神經網路
- 哋它亢:最近很火的網路詞
- 谷歌大腦提出概念啟用向量,助力神經網路可解釋性研究谷歌神經網路
- (四)卷積神經網路 -- 8 網路中的網路(NiN)卷積神經網路