中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

深度學(xué)習(xí)模型的簡單優(yōu)化技巧

2018-06-13    來源:

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用
本文介紹了幾個(gè)深度學(xué)習(xí)模型的簡單優(yōu)化技巧,包括遷移學(xué)習(xí)、dropout、學(xué)習(xí)率調(diào)整等,并展示了如何用 Keras 實(shí)現(xiàn)。

以下是我與同事和學(xué)生就如何優(yōu)化深度模型進(jìn)行的對話、消息和辯論的摘要。如果你發(fā)現(xiàn)了有影響力的技巧,請分享。

首先,為什么要改進(jìn)模型?

像卷積神經(jīng)網(wǎng)絡(luò)(CNN)這樣的深度學(xué)習(xí)模型具有大量的參數(shù);實(shí)際上,我們可以調(diào)用這些超參數(shù),因?yàn)樗鼈冊驹谀P椭胁]有被優(yōu)化。你可以網(wǎng)格搜索這些超參數(shù)的最優(yōu)值,但需要大量硬件計(jì)算和時(shí)間。那么,一個(gè)真正的數(shù)據(jù)科學(xué)家能滿足于猜測這些基本參數(shù)嗎?

改進(jìn)模型的最佳方法之一是基于在你的領(lǐng)域進(jìn)行過深入研究的專家的設(shè)計(jì)和體系結(jié)構(gòu),他們通常擁有強(qiáng)大的硬件可供使用。而且,他們經(jīng)常慷慨地開源建模架構(gòu)和原理。

深度學(xué)習(xí)技術(shù)

以下是一些通過預(yù)訓(xùn)練模型來改善擬合時(shí)間和準(zhǔn)確性的方法:

研究理想的預(yù)訓(xùn)練體系架構(gòu):了解遷移學(xué)習(xí)的好處,或了解一些功能強(qiáng)大的 CNN 體系架構(gòu)?紤]那些看起來不太適合但具有潛在共享特性的領(lǐng)域。

使用較小的學(xué)習(xí)率:由于預(yù)訓(xùn)練的權(quán)重通常優(yōu)于隨機(jī)初始化的權(quán)重,因此修改要更為精細(xì)!你在此處的選擇取決于學(xué)習(xí)環(huán)境和預(yù)訓(xùn)練的表現(xiàn),但請檢查各個(gè)時(shí)期的誤差,以了解距離收斂還要多久。

使用 dropout:與回歸模型的 Ridge 和 LASSO 正則化一樣,沒有適用于所有模型的優(yōu)化 alpha 或 dropout。這是一個(gè)超參數(shù),取決于具體問題,必須進(jìn)行測試。從更大的變化開始——用更大的網(wǎng)格搜索跨越幾個(gè)數(shù)量級,如 np.logspace() 所能提供的那樣——然后像上面的學(xué)習(xí)率一樣下降。

限制權(quán)重大。嚎梢韵拗颇承⿲拥臋(quán)重的最大范數(shù)(絕對值),以泛化我們的模型。

不要?jiǎng)忧皫讓樱荷窠?jīng)網(wǎng)絡(luò)的前幾個(gè)隱藏層通常用于捕獲通用和可解釋的特征,如形狀、曲線或跨域的相互作用。我們應(yīng)該經(jīng)常把這些放在一邊,把重點(diǎn)放在進(jìn)一步優(yōu)化元潛在級別的特征上。這可能意味著添加隱藏層,這樣我們就不需要匆忙處理了!

修改輸出層:使用適合你的領(lǐng)域的新激活函數(shù)和輸出大小替換模型默認(rèn)值。不過,不要把自己局限于最明顯的解決方案。盡管 MNIST 看起來似乎需要 10 個(gè)輸出類,但有些數(shù)字有共同的變量,允許 12-16 個(gè)類可能會更好地解決這些變量,并提高模型性能!與上面提到的提示一樣,深度學(xué)習(xí)模型應(yīng)該隨著我們接近輸出而不斷修改和定制。

Keras 中的技術(shù)

在 Keras 中修改 MNIST 的 dropout 和限制權(quán)重大小的方法如下:

 

 

dropout 最佳實(shí)踐

使用 20-50 % 的 dropout,建議輸入 20%。太低,影響可以忽略;太高,可能欠擬合。

在輸入層和隱藏層上使用 dropout。這已被證明可以提高深度學(xué)習(xí)的性能。

使用伴有衰減的較大的學(xué)習(xí)速率,以及較大的動(dòng)量。

限制權(quán)重!較大的學(xué)習(xí)速率會導(dǎo)致梯度爆炸。通過對網(wǎng)絡(luò)權(quán)值施加約束(如大小為 5 的最大范數(shù)正則化)可以改善結(jié)果。

使用更大的網(wǎng)絡(luò)。在較大的網(wǎng)絡(luò)上使用 dropout 可能會獲得更好的性能,從而使模型有更多的機(jī)會學(xué)習(xí)獨(dú)立的表征。

下面是 Keras 中的最終層修改示例,其中包含 14 個(gè) MNIST 類:

 

 

以及如何凍結(jié)前五層權(quán)重的示例:

 

 

或者,我們可以將該層的學(xué)習(xí)速率設(shè)為零,或者使用每個(gè)參數(shù)的自適應(yīng)學(xué)習(xí)算法,如 Adadelta 或 Adam。這有點(diǎn)復(fù)雜,在其他平臺(如 Caffe)中實(shí)現(xiàn)得更好。

預(yù)訓(xùn)練網(wǎng)絡(luò)庫

Keras

Kaggle 列表:https://www.kaggle.com/gaborfodor/keras-pretrained-models

Keras 應(yīng)用:https://keras.io/applications/

OpenCV 示例:https://www.learnopencv.com/keras-tutorial-fine-tuning-using-pre-trained-models/

TensorFlow

VGG16:https://www.learnopencv.com/keras-tutorial-fine-tuning-using-pre-trained-models/

Inceptiom V3:https://github.com/tensorflow/models/blob/master/inception/README.md#how-to-fine-tune-a-pre-trained-model-on-a-new-task

ResNet:https://github.com/tensorflow/models/blob/master/inception/README.md#how-to-fine-tune-a-pre-trained-model-on-a-new-task

Torch

LoadCaffe:https://github.com/szagoruyko/loadcaffe

Caffe

Model Zoo:https://github.com/BVLC/caffe/wiki/Model-Zoo

在 Jupyter 中查看你的 TensorBoard 圖

模型的可視化通常很重要。如果你用 Keras 編寫模型,它的抽象很好,但不允許你深入到模型的各個(gè)部分進(jìn)行更細(xì)致的分析。幸運(yùn)的是,下面的代碼可以讓我們直接使用 Python 可視化模型

 

 

 

 

使用 Keras 可視化你的模型

這一步將繪制模型的圖并將其保存為 png 文件:

 

 

plot 采用兩個(gè)可選參數(shù):

show_shapes(默認(rèn)為 False)控制輸出形狀是否顯示在圖中。

show_layer_names(默認(rèn)為 True)控制層命名是否顯示在圖中。

也可以直接獲得 pydot.Graph 對象并自己對其進(jìn)行渲染,如在 iPython notebook 中顯示它:

 

 

原文鏈接:https://towardsdatascience.com/deep-learning-tips-and-tricks-1ef708ec5f53

標(biāo)簽: https 代碼 搜索 網(wǎng)絡(luò) 選擇

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:教機(jī)器遺忘或許比學(xué)習(xí)更重要:讓AI健忘的三種方式

下一篇:人工智能技術(shù)在電商搜索的落地應(yīng)用