在先前的影片中,在先前的影片中, 您看到訓練誤差及開發誤差如何幫助您 診斷是否您的演算法有偏差或是變異 或是兩者皆有的問題 實際上這些資訊讓您比較 有系統化的使用他們稱之為基本 機器學習的良方,讓你更系統化 去提高你的演算法的性能。我們來看看 當訓練神經網路時 這是我會使用的基本配方 經過訓練完一個初期的模型後 我首先會問 您的演算法有高的偏差嗎? 試著評估是否有高的偏差 您真的應該看看 在訓練集或者說訓練資料的表現 如果它真的有高的偏差 甚至不是那麼配適訓練集 您可以試著選一個網路 加上更多的隱藏層或者隱藏單元 或者訓練長一點的時間 也許梯度下降跑長一點 或者更進階的最佳化演算法 我們將在這堂課的後面談到 或者您也可以試 這是一種, 也許可行, 以許不可行的方法 但我們將來會看到很多 不同的神經網路架構 也許您可以找到一種神經網路架構 適合這個問題 將這個放上括號, 因為一件事 您就是要去試 也許您可以找到, 也許找不到 但是用大一點的網路 幾乎都會有幫助 訓練長一點的時間 並不一定有幫助 但也不會造成傷害 所以當訓練一個學習演算法時 我會試這些事情 直到至少去掉偏差問題 回頭試試這些東西 直到我可以配適 至少很配適訓練集 通常如果您有足夠大的網路 您應該可以能夠很配適這些訓練資料 只要這個問題可解的話, 對吧? 如果影像很模糊 也許沒辦法來配適它 但如果人類可以做得到 如果您覺得基本誤差不大 那用足夠大的網路訓練的話 您應該可以做到 希望至少在訓練集可以做得很好 至少配適或者過適訓練集 一旦您減低偏差到可以接受的數字後 就要問您有變異的問題嗎? 要做評估的話, 我會看開發集的表現 您可以從很棒的訓練集表現推廣 到很棒的開發集表現嗎? 如果您有很高的變異 最佳解決變異問題的方法是 獲得更多資料 如果您可以得到的話 就會有幫助 但有時候您無法獲得更多資料 或者您可以試試正規化 我們在下一段影片會談到 試著去除過適問題 然後再說一次 有時候您只能試試 但如果您可以找到更合適的 神經網路架構 有時候您可以減少您的變異問題 就像減低偏差問題一樣 但如何做? 要完全系統化做這個很難 但當我試這些時 我會一直回頭 直到希望找到可以 同時低偏差跟低變異 那您就做到了 要注意幾個點 首先, 根據是否您有高偏差或者高變異 您可以試的東西 可能非常不同 我通常會用訓練開發集試著 診斷是否您有偏差或者變異問題 然後選擇適當的子集來試 舉個例子, 如果您有高偏差問題 獲取更多的資料其實並沒有幫助 或者說並不是最有效的方法 所以確認是偏差問題 或者是變異問題 或者兩者皆是 可以幫助您專注於最有用的事情來試 第二, 在早期機器學習時代 曾經有很多的討論 有關於稱為偏差變異權衡 而原因是 對很多事情你可以試試 您可以增加偏差跟減低變異 或者減低偏差增加變異 但回到深度學習前時代 我們沒有很多工具 我們並沒有很多工具來 只是減低 偏差或者只是減低變異 而不影響另一個 但在現代深度學習, 大數據時代 只要您可以一直訓練大一點的網路 只要您可以獲得更多資料 並不總是可以辦到 但如果可以做到 那用大ㄧ點的網路幾乎總是可以 只減低您的偏差 並不一定傷害您的變異 只要您適當的正規化 而獲得更多的資料通常總是 減低您的變異 而不會傷害您的偏差 真正發生的是 使用這兩個步驟 能夠去訓練, 選擇一個網路 或者獲取更多資料 我們現在有工具來減低偏差 且只減低偏差 或者減低變異且只減低變異 而不會傷害其他的東西 我想這是一個很大的原因 深度學習對於監督式學習如此有用 當然或多或少這種權衡 您 必須仔細去平衡偏差跟變異 但有時候您就是有比較多的選項 來減低偏差 或者減低變異 而不一定增加另外一項 實際上只要您有好的正規化網路 我們會在下一段影片談到正規化 訓練大一點的網路 幾乎永遠不會有壞事 而主要的成本來訓練太大的神經網路 只是運算時間 只要您做了正規化 我希望這給您一點基本架構的感覺 如何 組織您的機器學習問題 去診斷偏差及變異 然後試著選擇正確的動作 來讓您的問題有所進展 我在這段影片一直提到正規化這件事 是非常有用的技巧來減低變異 這裡有一點點偏差變異權衡 當您使用正規化 它也許會增加一點點偏差 雖然通常不會太大 如果您有足夠大的網路 但讓我們在下一段影片深入探討這些細節 所以您可以 比較了解如何應用正規化到您的神經網路