1. 神經(jīng)網(wǎng)絡(luò)的超參數(shù)分類
神經(jīng)網(wǎng)路中的超參數(shù)主要包括:
學(xué)習(xí)率 η,
正則化參數(shù) λ,
神經(jīng)網(wǎng)絡(luò)的層數(shù) L,
每一個隱層中神經(jīng)元的個數(shù) j ,
學(xué)習(xí)的回合數(shù)Epoch,
小批量數(shù)據(jù) minibatch 的大小,
輸出神經(jīng)元的編碼方式,
代價函數(shù)的選擇,
權(quán)重初始化的方法,
神經(jīng)元激活函數(shù)的種類,
參加訓(xùn)練模型數(shù)據(jù)的規(guī)模
這些都是可以影響神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)速度和最后分類結(jié)果,其中神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)速度主要根據(jù)訓(xùn)練集上代價函數(shù)下降的快慢有關(guān),而最后的分類的結(jié)果主要跟在驗證集上的分類正確率有關(guān)。因此可以根據(jù)該參數(shù)主要影響代價函數(shù)還是影響分類正確率進行分類。
在上圖中可以看到超參數(shù) 2,3,4,7 主要影響的是神經(jīng)網(wǎng)絡(luò)的分類正確率;9主要影響代價函數(shù)曲線下降速度,同時有時也會影響正確率;1,8,10 主要影響學(xué)習(xí)速度,這點主要體現(xiàn)在訓(xùn)練數(shù)據(jù)代價函數(shù)曲線的下降速度上;
5,6,11 主要影響模型分類正確率和訓(xùn)練用總體時間。這上面所提到的是某個超參數(shù)對于神經(jīng)網(wǎng)絡(luò)想到的首要影響,并不代表著該超參數(shù)只影響學(xué)習(xí)速度或者正確率。因為不同的超參數(shù)的類別不同,因此在調(diào)整超參數(shù)的時候也應(yīng)該根據(jù)對應(yīng)超參數(shù)的類別進行調(diào)整。在調(diào)整超參數(shù)的過程中有根據(jù)機理選擇超參數(shù)的方法,有根據(jù)訓(xùn)練集上表現(xiàn)情況選擇超參數(shù)的方法,也有根據(jù)驗證集上訓(xùn)練數(shù)據(jù)選擇超參數(shù)的方法。他們之間的關(guān)系如圖2所示。
超參數(shù) 7,8,9,10 由神經(jīng)網(wǎng)絡(luò)的機理進行選擇。在這四個參數(shù)中,應(yīng)該首先對第10個參數(shù)神經(jīng)元的種類進行選擇,根據(jù)目前的知識,一種較好的選擇方式是對于神經(jīng)網(wǎng)絡(luò)的隱層采用sigmoid神經(jīng)元,而對于輸出層采用softmax的方法;
根據(jù)輸出層采用sotmax的方法,因此第8個代價函數(shù)采用 log-likelihood 函數(shù)(或者輸出層還是正常的sigmoid神經(jīng)元而代價函數(shù)為交叉熵函數(shù)),第9個初始化權(quán)重采用均值為0方差為
的高斯隨機分布初始化權(quán)重;對于輸出層的編碼方式常常采用向量式的編碼方式,基本上不會使用實際的數(shù)值或者二進制的編碼方式。
超參數(shù)1由訓(xùn)練數(shù)據(jù)的代價函數(shù)選擇,在上述這兩部分都確定好之后在根據(jù)檢驗集數(shù)據(jù)確定最后的幾個超參數(shù)。這只是一個大體的思路,具體每一個參數(shù)的確定將在下面具體介紹。
2. 寬泛策略
根據(jù)上面的分析我們已經(jīng)根據(jù)機理將神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元的種類、輸出層的模式(即是否采用softmax)、代價函數(shù)及輸出層的編碼方式進行了設(shè)定。所以在這四個超參數(shù)被確定了之后變需要確定其他的超參數(shù)了。
假設(shè)我們是從頭開始訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)的,我們對于其他參數(shù)的取值本身沒有任何經(jīng)驗,所以不可能一上來就訓(xùn)練一個很復(fù)雜的神經(jīng)網(wǎng)絡(luò),這時就要采用寬泛策略。寬泛策略的核心在于簡化和監(jiān)控。簡化具體體現(xiàn)在,如簡化我們的問題,如將一個10分類問題轉(zhuǎn)變?yōu)橐粋€2分類問題;簡化網(wǎng)絡(luò)的結(jié)構(gòu),如從一個僅包含10個神經(jīng)元的隱層開始訓(xùn)練,逐漸增加網(wǎng)絡(luò)的層數(shù)和神經(jīng)元的個數(shù);
簡化訓(xùn)練用的數(shù)據(jù),在簡化問題中,我們已經(jīng)減少了80%的數(shù)據(jù)量,在這里我們該要精簡檢驗集中數(shù)據(jù)的數(shù)量,因為真正驗證的是網(wǎng)絡(luò)的性能,所以僅用少量的驗證集數(shù)據(jù)也是可以的,如僅采用100個驗證集數(shù)據(jù)。
監(jiān)控具體指的是提高監(jiān)控的頻率,比如說原來是每5000次訓(xùn)練返回一次代價函數(shù)或者分類正確率,現(xiàn)在每1000次訓(xùn)練就返回一次。其實可以將“寬泛策略”當作是一種對于網(wǎng)絡(luò)的簡單初始化和一種監(jiān)控策略,這樣可以更加快速地實驗其他的超參數(shù),或者甚至接近同步地進行不同參數(shù)的組合的評比。
直覺上看,這看起來簡化問題和架構(gòu)僅僅會降低你的效率。實際上,這樣能夠?qū)⑦M度加快,因為你能夠更快地找到傳達出有意義的信號的網(wǎng)絡(luò)。一旦你獲得這些信號,你可以嘗嘗通過微調(diào)超參數(shù)獲得快速的性能提升。
3. 學(xué)習(xí)率的調(diào)整
假設(shè)我們運行了三個不同學(xué)習(xí)速率( η=0.025、η=0.25、η=2.5)的 MNIST 網(wǎng) 絡(luò),其他的超參數(shù)假設(shè)已經(jīng)設(shè)置為進行30回合,minibatch 大小為10,然后 λ=5.0,使用50000幅訓(xùn)練圖像,訓(xùn)練代價的變化情況如圖3
使用 η=0.025 ,代價函數(shù)平滑下降到最后的回合;使用 η=0.25 ,代價剛開始下降,在大約 20 回合后接近飽和狀態(tài),后面就是微小的震蕩和隨機抖動;最終使用 η=2.5 代價從始至終都震蕩得非常明顯。
因此學(xué)習(xí)率的調(diào)整步驟為:首先,我們選擇在訓(xùn)練數(shù)據(jù)上的代價立即開始下降而非震蕩或者增加時的作為 η 閾值的估計,不需要太過精確,確定量級即可。如果代價在訓(xùn)練的前面若干回合開始下降,你就可以逐步增加 η 的量級,直到你找到一個的值使得在開始若干回合代價就開始震蕩或者增加;
相反,如果代價函數(shù)曲線開始震蕩或者增加,那就嘗試減小量級直到你找到代價在開始回合就下降的設(shè)定,取閾值的一半就確定了學(xué)習(xí)速率 。在這里使用訓(xùn)練數(shù)據(jù)的原因是學(xué)習(xí)速率主要的目的是控制梯度下降的步長,監(jiān)控訓(xùn)練代價是最好的檢測步長過大的方法。
4. 迭代次數(shù)
提前停止表示在每個回合的最后,我們都要計算驗證集上的分類準確率,當準確率不再提升,就終止它也就確定了迭代次數(shù)(或者稱回合數(shù))。另外,提前停止也能夠幫助我們避免過度擬合。
我們需要再明確一下什么叫做分類準確率不再提升,這樣方可實現(xiàn)提前停止。正如我們已經(jīng)看到的,分類準確率在整體趨勢下降的時候仍舊會抖動或者震蕩。如果我們在準確度剛開始下降的時候就停止,那么肯定會錯過更好的選擇。
一種不錯的解決方案是如果分類準確率在一段時間內(nèi)不再提升的時候終止。建議在更加深入地理解 網(wǎng)絡(luò)訓(xùn)練的方式時,僅僅在初始階段使用 10 回合不提升規(guī)則,然后逐步地選擇更久的回合,比如 20 回合不提升就終止,30 回合不提升就終止,以此類推。
5. 正則化參數(shù)
我建議,開始時代價函數(shù)不包含正則項,只是先確定 η 的值。使用確定出來的 η ,用驗證數(shù)據(jù)來選擇好的 λ 。嘗試從 λ=1 開始,然后根據(jù)驗證集上的性能按照因子 10 增加或減少其值。一旦我已經(jīng)找到一個好的量級,你可以改進 λ 的值。這里搞定 λ 后,你就可以返回再重新優(yōu)化 η 。
6. 小批量數(shù)據(jù)的大小
選擇最好的小批量數(shù)據(jù)大小也是一種折衷。太小了,你不會用上很好的矩陣庫的快速計算;太大,你是不能夠足夠頻繁地更新權(quán)重的。你所需要的是選擇一個折中的值,可以最大化學(xué)習(xí)的速度。幸運的是,小批量數(shù)據(jù)大小的選擇其實是相對獨立的一個超參數(shù)(網(wǎng)絡(luò)整體架構(gòu)外的參數(shù)),所以你不需要優(yōu)化那些參數(shù)來尋找好的小批量數(shù)據(jù)大小。
因此,可以選擇的方式就是使用某些可以接受的值(不需要是最優(yōu)的)作為其他參數(shù)的選擇,然后進行不同小批量數(shù)據(jù)大小的嘗試,像上面那樣調(diào)整 η 。畫出驗證準確率的值隨時間(非回合)變化的圖,選擇哪個得到最快性能的提升的小批量數(shù)據(jù)大小。得到了小批量數(shù)據(jù)大小,也就可以對其他的超參數(shù)進行優(yōu)化了。
7. 總體的調(diào)參過程
首先應(yīng)該根據(jù)機理確定激活函數(shù)的種類,之后確定代價函數(shù)種類和權(quán)重初始化的方法,以及輸出層的編碼方式;其次根據(jù)“寬泛策略”先大致搭建一個簡單的結(jié)構(gòu),確定神經(jīng)網(wǎng)絡(luò)中隱層的數(shù)目以及每一個隱層中神經(jīng)元的個數(shù);
然后對于剩下的超參數(shù)先隨機給一個可能的值,在代價函數(shù)中先不考慮正則項的存在,調(diào)整學(xué)習(xí)率得到一個較為合適的學(xué)習(xí)率的閾值,取閾值的一半作為調(diào)整學(xué)習(xí)率過程中的初始值 ;
之后通過實驗確定minibatch的大??;之后仔細調(diào)整學(xué)習(xí)率,使用確定出來的 η ,用驗證數(shù)據(jù)來選擇好的 λ ,搞定 λ 后,你就可以返回再重新優(yōu)化 η 。而學(xué)習(xí)回合數(shù)可以通過上述這些實驗進行一個整體的觀察再確定。
版權(quán)聲明:本文為CSDN博主「獨孤呆博」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/dugudaibo/article/details/77366245
編輯:jq
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4838瀏覽量
107790 -
編碼
+關(guān)注
關(guān)注
6文章
1039瀏覽量
56976 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67517 -
MNIST
+關(guān)注
關(guān)注
0文章
10瀏覽量
3718
原文標題:如何選擇神經(jīng)網(wǎng)絡(luò)的超參數(shù)?
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
神經(jīng)網(wǎng)絡(luò)的初步認識
自動駕駛中常提的卷積神經(jīng)網(wǎng)絡(luò)是個啥?
CNN卷積神經(jīng)網(wǎng)絡(luò)設(shè)計原理及在MCU200T上仿真測試
NMSIS神經(jīng)網(wǎng)絡(luò)庫使用介紹
構(gòu)建CNN網(wǎng)絡(luò)模型并優(yōu)化的一般化建議
在Ubuntu20.04系統(tǒng)中訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的一些經(jīng)驗
CICC2033神經(jīng)網(wǎng)絡(luò)部署相關(guān)操作
液態(tài)神經(jīng)網(wǎng)絡(luò)(LNN):時間連續(xù)性與動態(tài)適應(yīng)性的神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)的并行計算與加速技術(shù)
基于神經(jīng)網(wǎng)絡(luò)的數(shù)字預(yù)失真模型解決方案
無刷電機小波神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)子位置檢測方法的研究
神經(jīng)網(wǎng)絡(luò)專家系統(tǒng)在電機故障診斷中的應(yīng)用
神經(jīng)網(wǎng)絡(luò)RAS在異步電機轉(zhuǎn)速估計中的仿真研究
基于FPGA搭建神經(jīng)網(wǎng)絡(luò)的步驟解析
教大家怎么選擇神經(jīng)網(wǎng)絡(luò)的超參數(shù)
評論