內容皆為個人對於論文中的理解
如有理解錯誤歡迎一起討論,互相學習
--
Dropout是目前深度學習中最廣為使用的一種技巧
原始論文:
Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: A simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research, 15(1), 1929-1958.
PDF連結
其目的為防止network的overfitting
其原理為透過丟棄network中的某些neuron來防止feature之間的合作(co-adaption)
當某些feature被丟棄後,network必須學會利用剩下的feature進行分類
由於每次都是隨機的丟棄,network必須學會利用剩餘的feature本身來進行分類
而非透過某幾個feature所形成特定行為來進行分類
---
會成功的原因是透過丟棄network中的某些neuron
每個mini-batch進入學習並且進行dropout後,都是在train原本network的某種sub-network
原本network就變成是這些sub-network的集合體(ensemble)
而test時不使用dropout,其結果是為這些sub-network之期望值,故network表現會變好
不使用dropout的話,可視為只訓練出一個network來進行classification
使用dropout的話,可視為訓練出很多個的sub-network來進行classification
其圖示概念如下圖 (手繪)
---
dropout目前被視為一種強而有力來降低overfitting的方法
幾乎被用於目前可見的任何的深度學習模型
也implement於目前所有的deep learning toolbox裡
其實現非常的簡單
依據dropout rate建立一個mask
使用這個mask遮蓋forwarding data
backward時也同樣遮蓋gradients使其不被update