日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

dropout层_深度学习两大基础Tricks:Dropout和BN详解

發布時間:2025/4/5 pytorch 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dropout层_深度学习两大基础Tricks:Dropout和BN详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深度學習

Author:louwill

Machine Learning Lab

Dropout

???? dropout作為目前神經網絡訓練的一項必備技術,自從被Hinton提出以來,幾乎是進行深度學習訓練時的標配。就像做菜時必須加料酒一樣,無論何時,大家在使用全連接層的時候都會習慣性的在后面加上一個dropout層。通常情況下,dropout被作為一種防止神經網絡過擬合的正則化方法,對神經網絡的泛化性能有很大的幫助。每個人都會用dropout,但你真的理解它嗎?本節我們就來看看dropout里的一些關鍵細節問題。

???? dropout的概念相信大家都已熟稔在心了,是指在神經網絡訓練中,以一定的概率隨機地丟棄一部分神經元來簡化網絡的一項操作。本質上來說,dropout就是在正常的神經網絡基礎上給每一層的每一個神經元加了一道概率流程來隨機丟棄某些神經元以達到防止過擬合的目的。

???? 在keras中,dropout的實現只需要一行代碼:

from keras.layers import Dropoutx = Dropout(0.5)(x)

???? 但作為深度學習從業人員的你,在使用keras敲下這樣一行代碼時,你需要心里對其實現細節無比清晰才對。我們先來看一下包含dropout的神經網絡訓練過程,主要是前向傳播和反向傳播。先來看包含dropout的前向傳播過程。假設標準神經網絡前向傳播過程的數學描述為:

???? 使用一個參數為p的服從Bernoulli二項分布的隨機變量r,將這個隨機變量加入到標準神經網絡輸入中,那么帶有dropout的神經網絡可以描述為:

???? 這樣的數學描述簡潔明了,好像也沒什么特別注意的細節。我們以一層全連接網絡為例來看dropout的具體實現過程。

D1 = np.random.rand(A1.shape[0], A1.shape[1]) D1 = D1 < prob A1 = np.multiply(D1, A1) A1?=?A1?/?prob????????????????????????????

???? 其中A1為上一層的輸出,D1為用隨機數生成的一組dropout向量,然后將其與保留概率prob做比較得到一個布爾向量,再將其與A1做乘積即可得到失活后的A1,按理說dropout到這里應該也就完成了,但最后還有一個將A1除以保留概率的操作。所以這里有個疑問,為什么在dropout之后還要做個rescale的除法?

???? 其實,這種實現dropout的方法也叫Inverted Dropout,是一種經典的dropout實現方法。先不說Inverted Dropout,我們來看正常dropout應該是怎樣的:當我們使用了dropout后,在模型訓練階段只有占比為p部分的神經元參與了訓練,那么在預測階段得到的結果會比實際平均要大1/p,所以在測試階段我們需要將輸出結果乘以p來保持輸出規模不變。這種原始的dropout實現方式也叫Vanilla Dropout。Vanilla操作有一個重大缺陷,那就是預測過程需要根據訓練階段所使用的dropout策略做調整,比較麻煩,所以一般情況下都不會使用這種方法。

???? 既如此,相必大家也知道了,我們目前用的都是Inverted Dropout方法,為了能夠在神經網絡訓練完成后安安心心的做預測,我們可以把全部心思都放在訓練階段,所有的設置都在訓練階段完成。所以為了保證神經網絡在丟棄掉一些神經元之后總體信號強度不變和預測結果穩定,也有一種說法叫保證Bernoulli二項分布的數學期望不變,我們在Inverted Dropout方法中對dropout之后的做了除以p的rescale操作。

???? 反向傳播時同理,梯度計算時需要除以保留概率:

dA1 = np.multiply(dA1, D1) dA1 = dA1 / prob

???? 這就是dropout最關鍵的一個細節問題,一般在深度學習崗位面試時面試官喜歡追著問其中的細節。值得注意一下。

???? 另一個細節問題在于dropout有一種類似集成學習的boosting思想在里面。神經網絡以1-p的概率丟棄某些神經元,當進行多次訓練時,因為隨機性每次訓練的都是不同的網絡,dropout使得神經網絡不依賴于某些獨立的特征,最后的結果也就是幾次訓練之后的平均結果,這些都使得神經網絡具備更好的泛化性能,也正是dropout能夠防止過擬合的主要原因。

???? dropout作為一項主流的神經網絡訓練trick,大家在使用時要知其然,更要知其所以然。

BatchNormalization

? ? ?深度神經網絡一直以來就有一個特點:隨著網絡加深,模型會越來越難以訓練。所以深度學習有一個非常本質性的問題:為什么隨著網絡加深,訓練會越來越困難?為了解決這個問題,學界業界也一直在嘗試各種方法。

???? sigmoid作為激活函數一個最大的問題會引起梯度消失現象,這使得神經網絡難以更新權重。使用ReLu激活函數可以有效的緩解這一問題。

???? 對神經網絡使用正則化方法也能對這個問題有所幫助,使用dropout來對神經網絡進行簡化,可以有效緩解神經網絡的過擬合問題,對于深度網絡的訓練也有一定的幫助。ResNet使用殘差塊和skip connection來解決這個問題,使得深度加深時網絡仍有較好的表現力。

? ? ? BN本質上也是一種解決深度神經網絡難以訓練問題的方法。

???? 機器學習的一個重要假設就是IID(Independent Identically Distributed)假設,即獨立同分布假設。所謂獨立同分布,就是指訓練數據和測試數據是近似于同分布的,如若不然,機器學習模型就會很難有較好的泛化性能。

???? 一個重要的觀點就是深度神經網絡在訓練過程中每一層的輸入并不滿足獨立同分布假設,當疊加的網絡層每一層的輸入分布都發生變化時,這使得神經網絡訓練難以收斂。這種神經網絡隱藏層輸入分布的不斷變化的現象就叫Internal Covariate Shift(ICS)。ICS問題正是導致深度神經網絡難以訓練的重要原因之一。

???? 一直在做鋪墊,還沒說到底什么是BN。Batch Normalization,簡稱BN,翻譯過來就是批標準化,因為這個Normalization是建立在Mini-Batch SGD的基礎之上的。BN是針對ICS問題而提出的一種解決方案。一句話來說,BN就是使得深度神經網絡訓練過程中每一層網絡輸入都保持相同分布。

???? 既然ICS問題表明神經網絡隱藏層輸入分布老是不斷變化,我們能否讓每個隱藏層輸入分布穩定下來?通常來說,數據標準化是將數據喂給機器學習模型之前一項重要的數據預處理技術,數據標準化也即將數據分布變換成均值為0,方差為1的標準正態分布,所以也叫0-1標準化。圖像處理領域的數據標準化也叫白化(whiten),當然,白化方法除了0-1標準化之外,還包括極大極小標準化方法。

???? 所以一個很關鍵的聯想就是能否將這種白化操作推廣到神經網絡的每一個隱藏層?答案當然是可以的。

???? ICS問題導致深度神經網絡訓練難以收斂,隱藏層輸入分布逐漸向非線性激活函數取值區間的兩端靠近,比如說sigmoid函數的兩端就是最大正值或者最小負值。這里說一下梯度飽和和梯度敏感的概念。當取值位于sigmoid函數的兩端時,即sigmoid取值接近0或1時,梯度接近于0,這時候就位于梯度飽和區,也就是容易產生梯度消失的區域,相應的梯度敏感就是梯度計算遠大于0,神經網絡反向傳播時每次都能使權重得到很好的更新。

???? 當梯度逐漸向這兩個區域靠近時,就會產生梯度爆炸或者梯度消失問題,這也是深度神經網絡難以訓練的根本原因。BN將白化操作應用到每一個隱藏層,對每個隱藏層輸入分布進行標準化變換,把每層的輸入分布都強行拉回到均值為0方差為1的標準正態分布。這樣一來,上一層的激活輸出值(即當前層的激活輸入值)就會落在非線性函數對輸入的梯度敏感區,遠離了原先的梯度飽和區,神經網絡權重易于更新,訓練速度相應加快。

???? 那么具體到實際應用時,BN操作應該放在哪里?以一個全連接網絡為例:

???? 可以看到,BN操作是對每一個隱藏層的激活輸出做標準化,即BN層位于隱藏層之后。對于Mini-Batch SGD來說,一次訓練包含了m個樣本,具體的BN變換就是執行以下公式的過程:

???? 這里有個問題,就是在標準化之后為什么又做了個scale and shift的變換。從作者在論文中的表述看,認為每一層都做BN之后可能會導致網絡的表征能力下降,所以這里增加兩個調節參數(scale和shift),對變換之后的結果進行反變換,彌補網絡的表征能力。

???? BN不僅原理上說的通,但關鍵還是效果好。BN大大緩解了梯度消失問題,提升了訓練速度,模型準確率也得到提升,另外BN還有輕微的正則化效果。

參考資料:

Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, Ruslan Salakhutdinov; 15(Jun):1929?1958, 2014.Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift[J]. arXiv preprint arXiv:1502.03167, 2015.https://www.cnblogs.com/guoyaohua/p/8724433.html

往期精彩:

【原創首發】機器學習公式推導與代碼實現30講.pdf

【原創首發】深度學習語義分割理論與實戰指南.pdf

?2020,從TF Boy 變成 Torch User

喜歡您就點個在看!

總結

以上是生活随笔為你收集整理的dropout层_深度学习两大基础Tricks:Dropout和BN详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧洲成人在线 | 91搞| 日韩一区二区视频在线 | 色老头一区二区三区 | 熟女高潮一区二区三区视频 | 久久久久久婷婷 | 久操av| 国产精品嫩草久久久久 | 欧美国产激情 | 国产成人99 | 日韩成人中文字幕 | 一区二区高潮 | 狼人久久 | 色一情一乱一伦 | 免费无码肉片在线观看 | 四虎永久在线精品免费网址 | 久久神马 | 在线不卡国产 | 97精品人妻麻豆一区二区 | 啪啪av导航| 国产做受高潮动漫 | 国产极品美女高潮无套嗷嗷叫酒店 | 91精品视频免费在线观看 | 久久成人一区二区 | 亚洲第一av网站 | 中文在线观看av | 91污片 | 免费看黄色a级片 | 国产成人精品一区 | 成人av男人的天堂 | 国产精品色综合 | 成人一区二 | 五月婷网 | av成人资源 | 久久国产柳州莫菁门 | 精品黑人 | 夜夜久久 | 亚洲精品国产精品乱码在线观看 | 日韩av高清在线观看 | 国产精品黄色大片 | 狠狠五月婷婷 | 一区二区在线影院 | 特种兵之深入敌后高清全集免费观看 | 黄色99视频 | 成人免费看片入口 | 久久亚洲日本 | a国产在线| 97狠狠操 | 午夜视频在线免费 | 国产伦精品一区三区精东 | 丰满多毛的大隂户视频 | 91av国产精品 | 亚洲免费国产 | 超碰97在线免费观看 | 国产波霸爆乳一区二区 | 久久精品4| 久草视频在| 我要看免费毛片 | 97综合| 欧美日韩一区免费 | 狠狠网站| 三上悠亚在线观看一区二区 | av在线播放国产 | 中国极品少妇xxxx做受 | 中文幕无线码中文字蜜桃 | 亚洲网站在线看 | 可以免费看毛片的网站 | 嫩草影院黄| 深夜天堂 | 人人干狠狠干 | 午夜视频在线观看一区 | 成人1区 | 亚洲国产免费看 | 久久久久亚洲av无码网站 | 欧美激情一区二区在线 | 色爱av| 一级特黄妇女高潮2 | 六月综合网 | 国产免费黄色 | www.jizzjizz| 亚洲久久天堂 | 日日碰狠狠添天天爽 | 色噜噜狠狠一区二区三区牛牛影视 | 免费国产a级片 | 国产精品久久久久久一区二区三区 | 操欧美老逼 | 黑人玩弄人妻一区二区三区免费看 | 久久这里只有精品首页 | 日韩成人免费在线观看 | 男女日批网站 | 中文字幕乱码人妻无码久久 | 91免费视频播放 | 黑丝少妇喷水 | 99久久综合国产精品二区 | 国产乱码一区二区 | 欧美日韩黑人 | 国产情侣一区二区三区 | 国产欧美精品久久久 | 亚洲欧美黄 |