1.視頻網站:mooc慕課https://mooc.study.163.com/university/deeplearning_ai#/c
2.詳細筆記網站(中文):http://www.ai-start.com/dl2017/
3.github課件+作業+答案:https://github.com/stormstone/deeplearning.ai
1.3 機器學習基礎 Basic “recipe” for machine learning
本節主要介紹如何通過組織機器學習來診斷偏差和方差的基本方法,然後選擇解決問題的正確操作。
觀察下圖。訓練NN時用到的基本方法。
初始模型訓練完成後,我首先要知道算法的偏差高不高(High bias?),如果偏差較高,試着評估訓練集或訓練數據的性能。
如果偏差高(Y),甚至無法擬合訓練集,那麼你要做的就是選擇一個新的網絡,比如
- 含有更多隱藏層或者隱藏單元的網絡
- 或者花費更多時間來訓練網絡
- 或者嘗試更先進的優化算法
採用規模更大的網絡通常都會有所幫助,延長訓練時間不一定有用,但也沒什麼壞處。
訓練學習算法時,我會不斷嘗試這些方法,直到解決掉偏差問題,這是最低標準,反覆嘗試,直到可以擬合數據爲止,至少能夠擬合訓練集。
如果網絡足夠大,通常可以很好的擬合訓練集。一旦偏差降低到可以接受的數值,檢查一下方差有沒有問題(High variance?)。
爲了評估方差,我們要查看驗證集性能。我們能從一個性能理想的訓練集推斷出驗證集的性能是否也理想。
如果方差高(Y)
- 最好的解決辦法就是採用更多數據。
- 如果無法獲得更多數據,我們也可以嘗試通過正則化來減少過擬合。
有時候我們不得不反覆嘗試。如果能找到更合適的NN框架,它可能會一箭雙鵰,同時減少方差和偏差。
總之就是不斷重複嘗試,直到找到一個低偏差,低方差的框架,這時你就成功了。
有兩點需要大家注意
1,高偏差和高方差是兩種不同的情況,我們後續要嘗試的方法也可能完全不同.
我通常會用訓練驗證集來診斷算法是否存在偏差或方差問題,然後根據結果選擇嘗試部分方法。
舉個例子,如果算法存在高偏差問題,準備更多訓練數據其實也沒什麼用處,至少這不是更有效的方法,所以大家要清楚存在的問題是偏差還是方差,還是兩者都有問題,明確這一點有助於我們選擇出最有效的方法。
2,在ML的初期階段,關於所謂的偏差方差權衡的討論屢見不鮮,原因是我們能嘗試的方法有很多。可以增加偏差,減少方差,也可以減少偏差,增加方差。但是在ML的早期階段,我們沒有太多工具可以做到只減少偏差或方差卻不影響到另一方。
但在當前的深度學習和大數據時代,只要持續訓練一個更大的網絡(解決偏差),只要準備了更多數據(解決方差),那麼也並非只有這兩種情況。只要正則適度,通常構建一個更大的網絡便可以,在不影響方差的同時減少偏差,而採用更多數據通常可以在不過多影響偏差的同時減少方差。
這兩步實際要做的工作是:訓練網絡,選擇網絡或者準備更多數據,現在我們有工具可以做到在減少偏差或方差的同時,不對另一方產生過多不良影響。
我覺得這就是深度學習對監督式學習大有裨益的一個重要原因,也是我們不用太過關注如何平衡偏差和方差的一個重要原因。
但有時我們有很多選擇,減少偏差或方差而不增加另一方。最終,我們會得到一個非常規範化的網絡。