吳恩達深度學習筆記(26)-神經網絡中的參數和超參數

參數VS超參數(Parameters vs Hyperparameters)

想要你的深度神經網絡起很好的效果,你還需要規劃好你的

參數以及超參數

什麼是超參數?

比如算法中的learning rate a(學習率)、iterations(梯度下降法循環的數量)、L(隱藏層數目)、n^([l])(隱藏層單元數目)、choice of activation function(激活函數的選擇)都需要你來設置,這些數字實際上控制了最後的參數W和b的值,所以它們被稱作超參數。

實際上深度學習有很多不同的超參數,之後我們也會介紹一些其他的超參數,如momentum、mini batch size、regularization parameters等等。

吳恩達深度學習筆記(26)-神經網絡中的參數和超參數

如何尋找超參數的最優值?

吳恩達深度學習筆記(26)-神經網絡中的參數和超參數

走Idea—Code—Experiment—Idea這個循環,嘗試各種不同的參數,實現模型並觀察是否成功,然後再迭代。

今天的深度學習應用領域,還是很經驗性的過程,通常你有個想法,比如你可能大致知道一個最好的學習率值,可能說a=0.01最好,我會想先試試看,然後你可以實際試一下,訓練一下看看效果如何。然後基於嘗試的結果你會發現,你覺得學習率設定再提高到0.05會比較好。如果你不確定什麼值是最好的,你大可以先試試一個學習率a,再看看損失函數J的值有沒有下降。

然後你可以試一試大一些的值,然後發現損失函數的值增加併發散了。然後可能試試其他數,看結果是否下降的很快或者收斂到在更高的位置。你可能嘗試不同的a並觀察損失函數J這麼變了,試試一組值,然後可能損失函數變成這樣,這個a值會加快學習過程,並且收斂在更低的損失函數值上(箭頭標識),我就用這個a值了。

在前面,還有很多不同的超參數。然而,當你開始開發新應用時,預先很難確切知道,究竟超參數的最優值應該是什麼。所以通常,你必須嘗試很多不同的值,並走這個循環,試試各種參數。試試看5個隱藏層,這個數目的隱藏單元,實現模型並觀察是否成功,然後再迭代。

另一個近來深度學習的影響是它用於解決很多問題,從計算機視覺到語音識別,到自然語言處理,到很多結構化的數據應用,比如網絡廣告或是網頁搜索或產品推薦等等。

我所看到過的就有很多其中一個領域的研究員,這些領域中的一個,嘗試了不同的設置,有時候這種設置超參數的直覺可以推廣,但有時又不會。所以我經常建議人們,特別是剛開始應用於新問題的人們,去試一定範圍的值看看結果如何。

然後在後面的筆記中,我們會用更系統的方法,用系統性的嘗試各種超參數取值。

然後其次,甚至是你已經用了很久的模型,可能你在做網絡廣告應用,在你開發途中,很有可能學習率的最優數值或是其他超參數的最優值是會變的,所以即使你每天都在用當前最優的參數調試你的系統,你還是會發現,最優值過一年就會變化,因為電腦的基礎設施,CPU或是GPU可能會變化很大。

所以有一條經驗規律可能每幾個月就會變。如果你所解決的問題需要很多年時間,只要經常試試不同的超參數,勤於檢驗結果,看看有沒有更好的超參數數值,相信你慢慢會得到設定超參數的直覺,知道你的問題最好用什麼數值。

這可能的確是深度學習比較讓人不滿的一部分,也就是你必須嘗試很多次不同可能性。

但參數設定這個領域,深度學習研究還在進步中,所以可能過段時間就會有更好的方法決定超參數的值,也很有可能由於CPU、GPU、網絡和數據都在變化,這樣的指南可能只會在一段時間內起作用,只要你不斷嘗試,並且嘗試保留交叉檢驗或類似的檢驗方法,然後挑一個對你的問題效果比較好的數值。

近來受深度學習影響,很多領域發生了變化,從計算機視覺到語音識別到自然語言處理到很多結構化的數據應用,比如網絡廣告、網頁搜索、產品推薦等等;

有些同一領域設置超參數的直覺可以推廣,但有時又不可以,特別是那些剛開始研究新問題的人們應該去嘗試一定範圍內的結果如何,甚至那些用了很久的模型得學習率或是其他超參數的最優值也有可能會改變。

有一條經驗規律:經常試試不同的超參數,勤於檢查結果,看看有沒有更好的超參數取值,你將會得到設定超參數的直覺。


分享到:


相關文章: