今天我們要快速的看一下機器學習中,會遇到甚麼問題,那麼我們先從有提過的開始吧!
梯度消失會出現在以梯度下降法和反向傳播訓練人工神經網絡的時候。
如其名,當發生時梯度會越來越小,直到梯度完全的消失,這樣會導致我們無法訓練模型。
梯度消失的另一面就是梯度爆炸,梯度會隨著更新越來越大,直到變成無限大。
使用Batch Normalization來解決。
詳細介紹可以參考這篇什麼是批標準化(Batch Normalization)
大致是透過標準化的過程,來防止輸出太大或太小。
除了梯度消失以外,當深度過深時會發生退化問題,照理來說越深層的網路感覺表現會比較好,但實際上不一定,原因就是因為退化問題。
可以使用ResNet來解決。
Overfitting是指過於緊密或精確地匹配特定資料集,以致於無法良好地調適其他資料或預測未來的觀察結果的現象。
假設我們的模型發生Overfitting,那麼有可能它只認得哈士奇是狗,但模型卻不知道黃金獵犬也是狗,因為它只認定黑白相間的哈士奇是狗,而黃色的黃金獵犬它就不認得了。
使用Dropout來解決。
簡單來說就是透過丟棄一些神經元,讓彼此之間關聯沒有這麼大,來避免Overfitting。
假設我們的輸入只能是1~10之間,當輸入為二維時,那麼可能的結果為10 * 10=100,當輸入為三維時,可能的結果為10 * 10 * 10=1000...以此類推,隨著輸入的維度上升,input space的大小也隨之指數成長,那麼我們的訓練資料集佔整個數據空間的比例就會變得很小,那麼會使模型的泛化變得很困難。
透過降低維度來解決。
如feature selection和PCA等。
今天介紹了一些在機器學習中可能會遇到的問題與解法。