從各處竄來的系統(tǒng)性的調(diào)參方式和papers,為了做記錄和總結(jié)耿焊,非原創(chuàng)揪惦。
一、參數(shù)角度
1.學(xué)習(xí)率
? ? ?learning ratio從0.01到10的-6或-7就可以了
? ??Contouring learning rate to optimize neural nets
? ? large batch size與learning rate的關(guān)系罗侯?
? ? 理解深度學(xué)習(xí)中的學(xué)習(xí)率及多種選擇策略
2.梯度
梯度裁剪:限制最大梯度 或者設(shè)置閥值器腋,讓梯度強(qiáng)制等于10,20等
梯度更新的步長:很重要,一般0.1是個(gè)萬能數(shù)值。調(diào)參可改進(jìn)結(jié)果钩杰,具體做法是人肉監(jiān)督:用另外的驗(yàn)證集觀察測試錯(cuò)誤率纫塌,一旦不降了,步長減半甚至更多讲弄。
梯度歸一化:除以minibatch size 措左,這樣就不顯式依賴minibatch size
限制權(quán)重參數(shù)最大值:防止跑飛,一般最大行范數(shù)不超過2或者4,否則同比收縮到這個(gè)值避除。梯度大致應(yīng)該總是只改變參數(shù)的千分之一怎披,偏離這個(gè)數(shù)字太遠(yuǎn)的,調(diào)之瓶摆。
3.參數(shù)初始化
高斯,若某兩層的梯度計(jì)算相差太大凉逛,就要調(diào)整小的那層的std了。
? ? -可以先用隨機(jī)初始化的方式訓(xùn)練一個(gè)簡單的網(wǎng)絡(luò)模型群井,再將訓(xùn)練好的權(quán)值初始化給復(fù)雜的網(wǎng)絡(luò)模型状飞,復(fù)雜的網(wǎng)絡(luò)模型采用高斯初始化可能會(huì)更好(VGG)
? ? -太小了,參數(shù)根本走不動(dòng)书斜。一般權(quán)重參數(shù)0.01均方差诬辈,0均值的高斯分布是萬能的,不行就試更大的荐吉。偏差參數(shù)全0即可焙糟。
4.激活函數(shù)
-relu+bn
-relu一定要用
5.優(yōu)化方法
SGD:[paper]When Does Stochastic Gradient Algorithm Work Well?
SGD+Momentum 效果往往可以勝過adam等,雖然adam收斂更快样屠,據(jù)說初始幾輪momentum設(shè)置的小一點(diǎn)會(huì)更好酬荞,這點(diǎn)待驗(yàn)證搓劫。用SGD ,minibatch size 128混巧∏瓜颍或者更小size ,但那樣吞吐量變小咧党,計(jì)算效率變低秘蛔。
用帶momentum的SGD
帶動(dòng)量的隨機(jī)梯度下降法
?Adam法
RMSprop法
Adadelta法
其中,RMSprop傍衡,Adadelta和Adam法都是一種自適應(yīng)優(yōu)化算法深员,因?yàn)樗鼈儠?huì)自動(dòng)更新學(xué)習(xí)速率。如果使用普通的隨機(jī)梯度下降法蛙埂,你需要手動(dòng)地選擇學(xué)習(xí)率和動(dòng)量參數(shù)倦畅,設(shè)置動(dòng)量參數(shù)是為了隨著時(shí)間的推移來不斷地降低學(xué)習(xí)率。
在實(shí)踐中绣的,自適應(yīng)優(yōu)化器往往比普通的梯度下降法更快地讓模型達(dá)到收斂狀態(tài)叠赐。然而,選擇這些優(yōu)化器的模型最終性能通常都不太好屡江,而普通的梯度下降法通常能夠達(dá)到更好的收斂最小值芭概,從而獲得更好的模型性能,但這可能比某些優(yōu)化程序需要更多的收斂時(shí)間惩嘉。此外罢洲,隨機(jī)梯度下降法也更依賴于有效的初始化方法和學(xué)習(xí)速率衰減指數(shù)的設(shè)置,這在實(shí)踐中是很難確定的文黎。
因此惹苗,如果你只是想快速地獲得一些結(jié)果,或者只是想測試一個(gè)新的技術(shù)耸峭,自適應(yīng)優(yōu)化器將會(huì)是不錯(cuò)的選擇桩蓉。Adam是個(gè)容易上手的自適應(yīng)優(yōu)化器,因?yàn)樗鼘?duì)初始學(xué)習(xí)率的設(shè)置沒有很嚴(yán)格的要求抓艳,對(duì)于學(xué)習(xí)率的變化過程也并不是很敏感触机,因此非常利于深度學(xué)習(xí)模型的部署帚戳。如果你想獲得模型的最優(yōu)性能玷或,可以嘗試選擇帶動(dòng)量的隨機(jī)梯度下降法,并通過設(shè)置學(xué)習(xí)率片任,衰減率和動(dòng)量參數(shù)來最大化模型的性能偏友。
最近的研究表明,你可以混合地使用兩類優(yōu)化器:由Adam優(yōu)化器過渡到隨機(jī)梯度下降法來優(yōu)化模型对供,能夠獲得最頂尖的訓(xùn)練模型位他!具體的做法是氛濒,在訓(xùn)練的早期階段,往往是模型參數(shù)的初始化和調(diào)整非常敏感的時(shí)候鹅髓。因此舞竿,我們可以使用Adam優(yōu)化器來啟動(dòng)模型的訓(xùn)練,這將為模型的訓(xùn)練節(jié)省很多參數(shù)初始化和微調(diào)的時(shí)間窿冯。一旦模型的性能有所起伏骗奖,我們就可以切換到帶動(dòng)量的隨機(jī)梯度下降法來進(jìn)一步優(yōu)化我們的模型,以達(dá)到最佳的性能醒串!
6.數(shù)據(jù)預(yù)處理方式
白化
zero-center
輸入輸出數(shù)據(jù)做好歸一化执桌,以防出現(xiàn)數(shù)值問題。方法就是主成分分析啥的芜赌。
7.normal & batch
Weight Normalization 相比batch Normalization 優(yōu)點(diǎn)
Batch normalization和Instance normalization
https://www.bilibili.com/video/av9770302/index_18.html#page=18
NTIRE2017奪冠的EDSR去掉了Batch Normalization層就獲得了
YJango的Batch Normalization--介紹
深度學(xué)習(xí)中 Batch Normalization為什么效果好
Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift:發(fā)現(xiàn)理解 Dropout 與 BN 之間沖突的關(guān)鍵是網(wǎng)絡(luò)狀態(tài)切換過程中存在神經(jīng)方差的(neural variance)不一致行為
Layer Normalization:
rnn trick batch size=1效果會(huì)更好(待驗(yàn)證)real?
8.Dropout
? ?Analysis of Dropout in Online Learning:https://arxiv.org/abs/1711.03343
二仰挣、模型表現(xiàn)角度
????參數(shù)有一些是現(xiàn)在大家默認(rèn)選擇的,比如激活函數(shù)我們現(xiàn)在基本上都是采用Relu缠沈,而momentum一般我們會(huì)選擇0.9-0.95之間膘壶,weight decay我們一般會(huì)選擇0.005, filter的個(gè)數(shù)為奇數(shù),而dropout現(xiàn)在也是標(biāo)配的存在博烂。這些都是近年來論文中通用的數(shù)值香椎,也是公認(rèn)出好結(jié)果的搭配。所以這些參數(shù)我們就沒有必要太多的調(diào)整禽篱。下面是我們需要注意和調(diào)整的參數(shù)畜伐。
1. 完全不收斂
請(qǐng)檢測自己的數(shù)據(jù)是否存在可以學(xué)習(xí)的信息,這個(gè)數(shù)據(jù)集中的數(shù)值是否泛化(防止過大或過小的數(shù)值破壞學(xué)習(xí))躺率。如果是錯(cuò)誤的數(shù)據(jù)則你需要去再次獲得正確的數(shù)據(jù)玛界,如果是數(shù)據(jù)的數(shù)值異常我們可以使用zscore函數(shù)來解決這個(gè)問題(博客:http://blog.csdn.net/qq_20259459/article/details/59515182)。如果是網(wǎng)絡(luò)的錯(cuò)誤悼吱,則希望調(diào)整網(wǎng)絡(luò)慎框,包括:網(wǎng)絡(luò)深度,非線性程度后添,分類器的種類等等笨枯。
2. 部分收斂
underfitting:
增加網(wǎng)絡(luò)的復(fù)雜度(深度),降低learning rate遇西,優(yōu)化數(shù)據(jù)集馅精,增加網(wǎng)絡(luò)的非線性度(ReLu),采用batch normalization粱檀,
overfitting:
豐富數(shù)據(jù)洲敢,增加網(wǎng)絡(luò)的稀疏度,降低網(wǎng)絡(luò)的復(fù)雜度(深度)茄蚯,L1 /L2 regulariztion, 添加Dropout压彭,Early stopping, 適當(dāng)降低Learning rate睦优,適當(dāng)減少epoch的次數(shù),
3. 全部收斂
調(diào)整方法就是保持其他參數(shù)不變壮不,只調(diào)整一個(gè)參數(shù)汗盘。這里需要調(diào)整的參數(shù)會(huì)有:
learning rate, minibatch size,epoch询一,filter size, number of filter,(這里參見我前面兩篇博客的相關(guān)filter的說明)
copy 自?http://blog.csdn.net/qq_20259459/article/details/70316511
三衡未、learning to learning
1. 自動(dòng)選模型+調(diào)參:谷歌AutoML背后的技術(shù)解析
ref:
1.訓(xùn)練的神經(jīng)網(wǎng)絡(luò)不工作?一文帶你跨過這37個(gè)坑
?主要是講如何查問題的家凯。
3.深度學(xué)習(xí)中訓(xùn)練參數(shù)的調(diào)節(jié)技巧