DeepNetwork中一般Dropout原理
Dropout現(xiàn)在這個(gè)操作在目前這個(gè)深度學(xué)習(xí)時(shí)代中是非常常見的一個(gè)操作。對于Dropout的好處我們也聽過很多,降低過擬合,提高模型的魯棒性,控制模型復(fù)雜度等blabla。。
但我比較好奇的是,Dropout是怎么實(shí)現(xiàn)以上好處,經(jīng)過一番了解,簡單描述下。
Dropout實(shí)際上我們可以先理解成給予Network結(jié)構(gòu)中的一種噪音,但是我們這個(gè)噪音不是隨便給,是有一定數(shù)學(xué)理論支撐,我們是選擇無偏差地往網(wǎng)絡(luò)結(jié)構(gòu)中加入噪音。
通常來說,訓(xùn)練的時(shí)候才需要用到dropout,推理的時(shí)候不需要。理由也很簡單,一個(gè)保證推理的時(shí)候有確定性輸出,另一個(gè)是dropout的好處并沒有在推理時(shí)體現(xiàn),無需徒增計(jì)算。
這是李沐在《動(dòng)手學(xué)深度學(xué)習(xí)》里面實(shí)現(xiàn)的代碼,不得不說真的簡單易懂。
當(dāng)dropout等于1的時(shí)候,要返回跟上一層輸出shape一致的全零矩陣。當(dāng)dropout=0時(shí),說明無需丟棄,則返回原值。
當(dāng)在0<dropout<1之間,(torch.randn(X.shape) > dropout).float()生成一個(gè)跟X的shape一致的零一矩陣表示不同 輸出與否,然后這個(gè)mask*X就是實(shí)際輸出的X結(jié)果,再除以之前期望公式所需要的(1-dropout),得到最終結(jié)果。
論文出處:https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf
本文轉(zhuǎn)載自 ??沐白AI筆記??,作者: 沐白
