dropout 詳解
Dropout出現的原因
具有大量參數的深度神經(jīng)網(wǎng)絡(luò )是非常強大的機器學(xué)習算法。但是,過(guò)度擬合是這種網(wǎng)絡(luò )中的嚴重問(wèn)題。大型網(wǎng)絡(luò )也是使用緩慢,通過(guò)結合許多預測很難處理過(guò)度擬合測試時(shí)不同的大型神經(jīng)網(wǎng)絡(luò )。當訓練數據比較少的時(shí)候,可能是數據采樣噪聲的原因導致在訓練集上表現比較好,但是在測試集上表現不好,造成過(guò)擬合的現象.
基于上述問(wèn)題,Dropout是用于防止過(guò)擬合和提供一種有效近似聯(lián)結指數級不同神經(jīng)網(wǎng)絡(luò )結構的方法。如下圖所示,dropout中的drop指隨機“丟棄”網(wǎng)絡(luò )層中的某些節點(diǎn),一種簡(jiǎn)單的實(shí)現方式是每一個(gè)節點(diǎn)都有 p 概率被保留。對一個(gè)網(wǎng)絡(luò )使用dropout相當于從網(wǎng)絡(luò )中采樣一個(gè)“變薄”的網(wǎng)絡(luò ),這個(gè)變薄的網(wǎng)絡(luò )包含所有節點(diǎn)(不管是存活還是被丟棄)。因此,一個(gè)有n個(gè)節點(diǎn)的網(wǎng)絡(luò )可以看作擁有$2^n個(gè)“變薄”的網(wǎng)絡(luò )的集合,這些網(wǎng)絡(luò )共享權值,因此總的參數量還是O(n^2)或者更少。對于每一個(gè)訓練樣本,都有一個(gè)“薄網(wǎng)絡(luò )”被采樣訓練,因此訓練一個(gè)使用dropout的網(wǎng)絡(luò )可以看成是在訓練權值共享的$2^n個(gè)“薄網(wǎng)絡(luò )”的集合。
左邊是正常神經(jīng)網(wǎng)絡(luò )隱藏層的神經(jīng)元,右圖是使用了Dropout的隱藏層神經(jīng)元,虛線(xiàn)部分是隨機隱藏了的神經(jīng)元.
DropOut 工作流程
訓練階段
對于如下網(wǎng)絡(luò )的訓練流程一般是:把輸入x通過(guò)網(wǎng)絡(luò )前向傳播然后把誤差反向傳播,網(wǎng)絡(luò )進(jìn)行學(xué)習后輸出y。
對于使用了dropout的網(wǎng)絡(luò )如下:
- 以 1?p 的概率臨時(shí)“丟棄”(p的概率保留)網(wǎng)絡(luò )中的隱層神經(jīng)單元.
- 把輸入x通過(guò)修改后的網(wǎng)絡(luò )前向傳播,然后把得到的損失結果通過(guò)修改的網(wǎng)絡(luò )反向傳播。一小批訓練樣本執行完這個(gè)過(guò)程后,在沒(méi)有被刪除的神經(jīng)元上按照隨機梯度下降法更新對應的參數(w,b)。
- 恢復被刪掉的神經(jīng)元(此時(shí)被刪除的神經(jīng)元保持原樣,而沒(méi)有被刪除的神經(jīng)元已經(jīng)有所更新)
- 重復上述步驟1-3,知道網(wǎng)絡(luò )結束.
測試階段
顯式地將訓練中指數級的“薄網(wǎng)絡(luò )”中求平均是不現實(shí)的。實(shí)踐中的思路是這樣:在測試時(shí)使用一個(gè)不使用dropout的網(wǎng)絡(luò ),該網(wǎng)絡(luò )的權值是訓練時(shí)的網(wǎng)絡(luò )權值的縮小版,即,如果一個(gè)隱層單元在訓練過(guò)程中以概率p被保留,那么該單元的輸出權重在測試時(shí)乘以p(如下圖所示)。這樣共享權值的$2^n$個(gè)訓練網(wǎng)絡(luò )就可以在測試時(shí)近似聯(lián)結成一個(gè)網(wǎng)絡(luò ),因此能有效降低泛化誤差。
數學(xué)公式表示
考慮一個(gè)擁有L層隱層的神經(jīng)網(wǎng)絡(luò ),l∈{1,…,L}為隱層的索引,z(l) 表示l層 的輸入向量,y(l) 表示 l 層的輸出(y(0)=x 為輸入),W(l),b(l) 分別為 l 層的權值和偏置。標準的神經(jīng)網(wǎng)絡(luò )的前向傳播可以描述為如下(對于l∈0,…,L?1 和任意隱層單元i):
