算法實現概述:
1、其實Dropout很容易實現,源碼只需要幾句話就可以搞定了,讓某個神經元以概率p,停止工作,其實就是讓它的激活值以概率p變爲0。比如我們某一層網絡神經元的個數爲1000個,其激活值爲x1,x2……x1000,我們dropout比率選擇0.4,那麼這一層神經元經過drop後,x1……x1000神經元其中會有大約400個的值被置爲0。
2、經過上面屏蔽掉某些神經元,使其激活值爲0以後,我們還需要對餘下的非0的向量x1……x1000進行rescale(擴大倍數),也就是乘以1/(p)。如果你在訓練的時候,經過置0後,沒有對x1……x1000進行rescale,那麼你在測試的時候,就需要對權重進行rescale:
在訓練時,每個神經單元都可能以概率 p 去除;
在測試階段,每個神經單元都是存在的,權重參數w要乘以p,成爲:pw。