基礎(chǔ)入門:“煉丹師”——深度學(xué)習(xí)訓(xùn)練技巧
點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號(hào)
重磅干貨,第一時(shí)間送達(dá)
深度學(xué)習(xí)已經(jīng)成為解決許多具有挑戰(zhàn)性的現(xiàn)實(shí)世界問題的方法。對(duì)目標(biāo)檢測(cè),語音識(shí)別和語言翻譯來說,這是迄今為止表現(xiàn)最好的方法。許多人將深度神經(jīng)網(wǎng)絡(luò)(DNNs)視為神奇的黑盒子,我們放進(jìn)去一堆數(shù)據(jù),出來的就是我們的解決方案!事實(shí)上,事情沒那么簡(jiǎn)單。
在設(shè)計(jì)和應(yīng)用DNN到一個(gè)特定的問題上可能會(huì)遇到很多挑戰(zhàn)。為了達(dá)到現(xiàn)實(shí)世界應(yīng)用所需的性能標(biāo)準(zhǔn),對(duì)數(shù)據(jù)準(zhǔn)備,網(wǎng)絡(luò)設(shè)計(jì),訓(xùn)練和推斷等各個(gè)階段的正確設(shè)計(jì)和執(zhí)行至關(guān)重要。
今天給大家講講DNN(深度神經(jīng)網(wǎng)絡(luò))在訓(xùn)練過程中遇到的一些問題,然后我們應(yīng)該怎么去注意它,并學(xué)會(huì)怎么去訓(xùn)練它。
補(bǔ)充:
1、選擇優(yōu)化算法
傳統(tǒng)的隨機(jī)梯度下降算法雖然適用很廣,但并不高效,最近出現(xiàn)很多更靈活的優(yōu)化算法,例如Adagrad、RMSProp等,可在迭代優(yōu)化的過程中自適應(yīng)的調(diào)節(jié)學(xué)習(xí)速率等超參數(shù),效果更佳;
2、參數(shù)設(shè)置技巧
無論是多核CPU還是GPU加速,內(nèi)存管理仍然以字節(jié)為基本單元做硬件優(yōu)化,因此將參數(shù)設(shè)定為2的指數(shù)倍,如64,128,512,1024等,將有效提高矩陣分片、張量計(jì)算等操作的硬件處理效率;
3、正則優(yōu)化
除了在神經(jīng)網(wǎng)絡(luò)單元上添加傳統(tǒng)的L1/L2正則項(xiàng)外,Dropout更經(jīng)常在深度神經(jīng)網(wǎng)絡(luò)應(yīng)用來避免模型的過擬合。初始默認(rèn)的0.5的丟棄率是保守的選擇,如果模型不是很復(fù)雜,設(shè)置為0.2就可以;
4、其他方法
除了上述訓(xùn)練調(diào)優(yōu)的方法外,還有其他一些常用方法,包括:使用mini-batch learning方法、遷移訓(xùn)練學(xué)習(xí)、打亂訓(xùn)練集順序、對(duì)比訓(xùn)練誤差和測(cè)試誤差調(diào)節(jié)迭代次數(shù)、日志可視化觀察等等。
本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。
