2020-5-18 吳恩達-改善深層NN-w1 深度學習的實用層面(1.3 機器學習基礎-診斷/解決偏差(大網絡)和方差(大數據)問題)

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的早期階段,我們沒有太多工具可以做到只減少偏差或方差卻不影響到另一方。

但在當前的深度學習和大數據時代,只要持續訓練一個更大的網絡(解決偏差),只要準備了更多數據(解決方差),那麼也並非只有這兩種情況。只要正則適度,通常構建一個更大的網絡便可以,在不影響方差的同時減少偏差,而採用更多數據通常可以在不過多影響偏差的同時減少方差。

這兩步實際要做的工作是:訓練網絡,選擇網絡或者準備更多數據,現在我們有工具可以做到在減少偏差或方差的同時,不對另一方產生過多不良影響。

我覺得這就是深度學習對監督式學習大有裨益的一個重要原因,也是我們不用太過關注如何平衡偏差和方差的一個重要原因。

但有時我們有很多選擇,減少偏差或方差而不增加另一方。最終,我們會得到一個非常規範化的網絡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章