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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

dropout,batch norm 区别 顺序

發(fā)布時間:2023/11/28 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dropout,batch norm 区别 顺序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

20210614

https://www.cnblogs.com/hutao722/p/9946047.html
深度學習基礎系列(九)| Dropout VS Batch Normalization? 是時候放棄Dropout了
BN 有余dropout,dropout 可以不用了

https://blog.csdn.net/hexuanji/article/details/103635335
為什么要除以 1-p
Batch Normalization和Dropout如何搭配使用?

NEP=N(1-P)*E1
推出 E1=PE/1-P
N為元素個數(shù) P 是dropout 概率,E是dropout 之前的期望,E1是dropout 之后的期望

batch norm和dropout都可以起到正則化的作用,防止過擬合。

dropout:
dropout通俗理解就是,在神經網絡訓練的時候,有時因為神經元過多,模型參數(shù)過多等原因而導致過擬合,dropout以概率p讓一部分神經元失活,從而達到降低過擬合的效果。如下圖所示,使用dropout后,一部分神經元不參與訓練。


在前向傳播時,假設有這一層n個神經元,則我們可以假設每個神經元的概率都是0~1(可以通過python得到隨機的值),然后小于p的就失活,即不參與訓練。
在反向傳播時,也只對參與訓練的神經元進行參數(shù)更新。
每次訓練的時候,又是n個神經元,重新進行dropout
dropout可以緩解過擬合的原因:
1.類似bagging,采用dropout,使得每次訓練的時候一部分神經元失活,從而導致dropout后的模型都是不一樣的,因為失活的神經元不一樣。這就相當于有多個網絡進行訓練得到最終結果,有點ensemble的感覺。

2.因為dropout程序導致兩個神經元不一定每次都在一個dropout網絡中出現(xiàn)。這樣權值的更新不再依賴于有固定關系的隱含節(jié)點的共同作用,阻止了某些特征僅僅在其它特定特征下才有效果的情況 。迫使網絡去學習更加魯棒的特征 ,這些特征在其它的神經元的隨機子集中也存在。換句話說假如我們的神經網絡是在做出某種預測,它不應該對一些特定的線索片段太過敏感,即使丟失特定的線索,它也應該可以從眾多其它線索中學習一些共同的特征。從這個角度看dropout就有點像L1,L2正則,減少權重使得網絡對丟失特定神經元連接的魯棒性提高。

BN的知識后續(xù)補充
BN和Dropout訓練和測試時的差異

對于BN,在訓練時,是對每一批的訓練數(shù)據(jù)進行歸一化,也即用每一批數(shù)據(jù)的均值和方差。

而在測試時,比如進行一個樣本的預測,就并沒有batch的概念,因此,這個時候用的均值和方差是全量訓練數(shù)據(jù)的均值和方差,這個可以通過移動平均法求得。

對于BN,當一個模型訓練完成之后,它的所有參數(shù)都確定了,包括均值和方差,gamma和bata。

BN訓練時為什么不用全量訓練集的均值和方差呢?

因為用全量訓練集的均值和方差容易過擬合,對于BN,其實就是對每一批數(shù)據(jù)進行歸一化到一個相同的分布,而每一批數(shù)據(jù)的均值和方差會有一定的差別,而不是用固定的值,這個差別實際上能夠增加模型的魯棒性,也會在一定程度上減少過擬合。

也正是因此,BN一般要求將訓練集完全打亂,并用一個較大的batch值,否則,一個batch的數(shù)據(jù)無法較好得代表訓練集的分布,會影響模型訓練的效果。

Dropout 是在訓練過程中以一定的概率的使神經元失活,即輸出為0,以提高模型的泛化能力,減少過擬合。

Dropout 在訓練時采用,是為了減少神經元對部分上層神經元的依賴,類似將多個不同網絡結構的模型集成起來,減少過擬合的風險。

而在測試時,應該用整個訓練好的模型,因此不需要dropout。

Dropout 如何平衡訓練和測試時的差異呢?

Dropout ,在訓練時以一定的概率使神經元失活,實際上就是讓對應神經元的輸出為0

假設失活概率為 p ,就是這一層中的每個神經元都有p的概率失活,如下圖的三層網絡結構中,如果失活概率為0.5,則平均每一次訓練有3個神經元失活,所以輸出層每個神經元只有3個輸入,而實際測試時是不會有dropout的,輸出層每個神經元都有6個輸入,這樣在訓練和測試時,輸出層每個神經元的輸入和的期望會有量級上的差異。

因此在訓練時還要對第二層的輸出數(shù)據(jù)除以(1-p)之后再傳給輸出層神經元,作為神經元失活的補償,以使得在訓練時和測試時每一層輸入有大致相同的期望。

不同層的順序關系:
conv+pooling+bn+relu,可以使relu保留較好的非線性性

linear+dropout

參考:

dropout相關

在神經網絡中,先進行BatchNorm還是先運行激活函數(shù)?

BN和Dropout在訓練和測試時的差別

總結

以上是生活随笔為你收集整理的dropout,batch norm 区别 顺序的全部內容,希望文章能夠幫你解決所遇到的問題。

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