參數(shù)VS超參數(shù)(Parameters vs Hyperparameters)
想要你的深度神經(jīng)網(wǎng)絡(luò)起很好的效果,你還需要規(guī)劃好你的參數(shù)以及超參數(shù)。
什么是超參數(shù)?
比如算法中的learning rate a(學(xué)習(xí)率)、iterations(梯度下降法循環(huán)的數(shù)量)、L(隱藏層數(shù)目)、n^([l])(隱藏層單元數(shù)目)、choice of activation function(激活函數(shù)的選擇)都需要你來設(shè)置,這些數(shù)字實際上控制了最后的參數(shù)W和b的值,所以它們被稱作超參數(shù)。
實際上深度學(xué)習(xí)有很多不同的超參數(shù),之后我們也會介紹一些其他的超參數(shù),如momentum、mini batch size、regularization parameters等等。
如何尋找超參數(shù)的最優(yōu)值?
走Idea—Code—Experiment—Idea這個循環(huán),嘗試各種不同的參數(shù),實現(xiàn)模型并觀察是否成功,然后再迭代。
今天的深度學(xué)習(xí)應(yīng)用領(lǐng)域,還是很經(jīng)驗性的過程,通常你有個想法,比如你可能大致知道一個最好的學(xué)習(xí)率值,可能說a=0.01最好,我會想先試試看,然后你可以實際試一下,訓(xùn)練一下看看效果如何。然后基于嘗試的結(jié)果你會發(fā)現(xiàn),你覺得學(xué)習(xí)率設(shè)定再提高到0.05會比較好。如果你不確定什么值是最好的,你大可以先試試一個學(xué)習(xí)率a,再看看損失函數(shù)J的值有沒有下降。
然后你可以試一試大一些的值,然后發(fā)現(xiàn)損失函數(shù)的值增加并發(fā)散了。然后可能試試其他數(shù),看結(jié)果是否下降的很快或者收斂到在更高的位置。你可能嘗試不同的a并觀察損失函數(shù)J這么變了,試試一組值,然后可能損失函數(shù)變成這樣,這個a值會加快學(xué)習(xí)過程,并且收斂在更低的損失函數(shù)值上(箭頭標(biāo)識),我就用這個a值了。
在前面,還有很多不同的超參數(shù)。然而,當(dāng)你開始開發(fā)新應(yīng)用時,預(yù)先很難確切知道,究竟超參數(shù)的最優(yōu)值應(yīng)該是什么。所以通常,你必須嘗試很多不同的值,并走這個循環(huán),試試各種參數(shù)。試試看5個隱藏層,這個數(shù)目的隱藏單元,實現(xiàn)模型并觀察是否成功,然后再迭代。
另一個近來深度學(xué)習(xí)的影響是它用于解決很多問題,從計算機視覺到語音識別,到自然語言處理,到很多結(jié)構(gòu)化的數(shù)據(jù)應(yīng)用,比如網(wǎng)絡(luò)廣告或是網(wǎng)頁搜索或產(chǎn)品推薦等等。
我所看到過的就有很多其中一個領(lǐng)域的研究員,這些領(lǐng)域中的一個,嘗試了不同的設(shè)置,有時候這種設(shè)置超參數(shù)的直覺可以推廣,但有時又不會。所以我經(jīng)常建議人們,特別是剛開始應(yīng)用于新問題的人們,去試一定范圍的值看看結(jié)果如何。
然后在后面的筆記中,我們會用更系統(tǒng)的方法,用系統(tǒng)性的嘗試各種超參數(shù)取值。
然后其次,甚至是你已經(jīng)用了很久的模型,可能你在做網(wǎng)絡(luò)廣告應(yīng)用,在你開發(fā)途中,很有可能學(xué)習(xí)率的最優(yōu)數(shù)值或是其他超參數(shù)的最優(yōu)值是會變的,所以即使你每天都在用當(dāng)前最優(yōu)的參數(shù)調(diào)試你的系統(tǒng),你還是會發(fā)現(xiàn),最優(yōu)值過一年就會變化,因為電腦的基礎(chǔ)設(shè)施,CPU或是GPU可能會變化很大。
所以有一條經(jīng)驗規(guī)律可能每幾個月就會變。如果你所解決的問題需要很多年時間,只要經(jīng)常試試不同的超參數(shù),勤于檢驗結(jié)果,看看有沒有更好的超參數(shù)數(shù)值,相信你慢慢會得到設(shè)定超參數(shù)的直覺,知道你的問題最好用什么數(shù)值。
這可能的確是深度學(xué)習(xí)比較讓人不滿的一部分,也就是你必須嘗試很多次不同可能性。
但參數(shù)設(shè)定這個領(lǐng)域,深度學(xué)習(xí)研究還在進步中,所以可能過段時間就會有更好的方法決定超參數(shù)的值,也很有可能由于CPU、GPU、網(wǎng)絡(luò)和數(shù)據(jù)都在變化,這樣的指南可能只會在一段時間內(nèi)起作用,只要你不斷嘗試,并且嘗試保留交叉檢驗或類似的檢驗方法,然后挑一個對你的問題效果比較好的數(shù)值。
近來受深度學(xué)習(xí)影響,很多領(lǐng)域發(fā)生了變化,從計算機視覺到語音識別到自然語言處理到很多結(jié)構(gòu)化的數(shù)據(jù)應(yīng)用,比如網(wǎng)絡(luò)廣告、網(wǎng)頁搜索、產(chǎn)品推薦等等;
有些同一領(lǐng)域設(shè)置超參數(shù)的直覺可以推廣,但有時又不可以,特別是那些剛開始研究新問題的人們應(yīng)該去嘗試一定范圍內(nèi)的結(jié)果如何,甚至那些用了很久的模型得學(xué)習(xí)率或是其他超參數(shù)的最優(yōu)值也有可能會改變。
有一條經(jīng)驗規(guī)律:經(jīng)常試試不同的超參數(shù),勤于檢查結(jié)果,看看有沒有更好的超參數(shù)取值,你將會得到設(shè)定超參數(shù)的直覺。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4774瀏覽量
100893 -
語音識別
+關(guān)注
關(guān)注
38文章
1742瀏覽量
112717 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5507瀏覽量
121273
發(fā)布評論請先 登錄
相關(guān)推薦
評論