日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【模型训练】如何选择最适合你的学习率变更策略

發布時間:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【模型训练】如何选择最适合你的学习率变更策略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章首發于微信公眾號《有三AI》

【模型訓練】如何選擇最適合你的學習率變更策略

如果讓我投票給深度學習中,最不想調試,但又必須要小心調試的參數,毫無疑問會投給學習率,今天就來說說這個。

?

01?項目背景

我們選擇了GHIM-10k數據集,這是一個圖像檢索數據集,包含20個類別,分別是日落,船舶,花卉,建筑物,汽車,山脈,昆蟲等自然圖像,各個類別擁有較好的多樣性,而類別之間也有比較好的區分度。數據集共10000張圖像,每個類別包含500張JPEG格式的大小為400×300或300×400的圖像。

如下圖就是其中的煙花類別。

定義了一個6層的卷積神經網絡,網絡結構如下:

細節咱就不多說,如果你想復現本文結果,可以發送關鍵詞“有三AI訓練營12-16”到后臺獲取網絡配置等文件。

?

02?學習率變更策略

學習率是一個非常重要的參數,可以直接影響模型的收斂與否。不同的學習率變更策略也會影響最終的迭代結果。

下面以sgd優化方法,來介紹各種策略。caffe框架中的策略包括fixed,step,exp,inv,multistep,poly,sigmoid。

2.1 fixed

fixed,即固定學習率,這是最簡單的一種配置,只需要一個參數。

lr_policy: "fixed"

base_lr: 0.01

如上圖,在整個的優化過程中學習率不變,這是非常少使用的策略,因為隨著向全局最優點逼近,學習率應該越來越小才能避免跳過最優點。

2.2 step

采用均勻降低的方式,比如每次降低為原來的0.1倍

lr_policy: "step"

base_lr: 0.01

stepsize: 10000

gamma:0.1

這是非常常用的一個學習率迭代策略,每次將學習率降低為原來的一定倍數,屬于非連續型的變換,使用簡單,而且效果通常較好。

不過從上圖也可以看出,其實學習率的變化一點都不平滑。

2.3??multistep

采用非均勻降低策略,指定降低的step間隔,每次降低為原來的一定倍數。

lr_policy: "multistep"

gamma: 0.5

stepvalue: 10000

stepvalue: 30000

stepvalue: 60000

這是比step更加復雜的策略,也是采用非連續型的變換,但是變換的迭代次數不均勻,也是非常常用的策略,需要經驗。

2.4 exp

這是一種指數變化,new_lr = base_lr * (gamma^iter),可知這是連續變化,學習率的衰減非常的快,gamma越大則衰減越慢,但是因為caffe中的實現使用了iter作為指數,而iter通常都是非常大的值,所以學習率衰減仍然非常快。

2.5 inv

new_lr = base_lr * (1 + gamma * iter) ^ (- power),可以看出,也是一種指數變換,參數gamma控制曲線下降的速率,而參數power控制曲線在飽和狀態下學習率達到的最低值。

2.6 poly

new_lr = base_lr * (1 – iter/maxiter) ^ (power),可以看出,學習率曲線的形狀主要由參數power的值來控制。當power = 1的時候,學習率曲線為一條直線。當power < 1的時候,學習率曲線是凸的,且下降速率由慢到快。當power > 1的時候,學習率曲線是凹的,且下降速率由快到慢。

2.7 sigmoid

new_lr = base_lr *( 1/(1 + exp(-gamma * (iter - stepsize))))

參數gamma控制曲線的變化速率。gamma必須小于0才能下降,而這在caffe中并不被支持。

究竟這些策略的實際表現結果如何呢?請看下面的實驗結果。

?

03?實驗結果

下面就展示以上的學習率策略下的實驗結果,由于type=sigmoid不能進行學習率的下降,所以不進行對比。學習率的具體變更方式如下。

訓練數據集大小9000,batchsize=64,可知10000次迭代時,epoch=64*10000/9000>70,在該學習率下應該已經充分訓練了,實驗結果如下。

?

收斂的結果如上,可知道都得到了收斂,但是效果不同。我們在這里要下幾個結論,雖然只有一個案例,但是根據筆者多年使用經驗,確實如此。

  • step,multistep方法的收斂效果最好,這也是我們平常用它們最多的原因。雖然學習率的變化是最離散的,但是并不影響模型收斂到比較好的結果。

  • 其次是exp,poly。它們能取得與step,multistep相當的結果,也是因為學習率以比較好的速率下降,操作的確很騷,不過并不見得能干過step和multistep。

  • inv和fixed的收斂結果最差。這是比較好解釋的,因為fixed方法始終使用了較大的學習率,而inv方法的學習率下降過程太快,這一點,當我們直接使用0.001固定大小的學習率時可以得到驗證,最終收斂結果與inv相當。

在此問大家一個問題,你覺得上面的模型,收斂到最好的狀態了嗎?不妨后臺留言討論。

?

04?總結

今天只是小試牛刀,也挖了很多的坑給大家(我們以后會填上的)。如果不是為了刷指標,很多時候,學習率變更策略不太需要精挑細選,比如上面的step和multistep,實際表現差不多,筆者常使用multistep,雖然這確實是個經驗活兒,不過再白癡也總不能傻到用fixed策略去訓練。

否則,其他的提高精度的措施做的再到位,也很可能因此而廢。

至于exp,inv,poly什么的,鄙人經驗,貌似中看不中用。

那adam怎么樣呢?

感謝各位看官的耐心閱讀,不足之處希望多多指教。后續內容將會不定期奉上,歡迎大家關注有三公眾號 有三AI

?

?

?

總結

以上是生活随笔為你收集整理的【模型训练】如何选择最适合你的学习率变更策略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。