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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

【AI不惑境】学习率和batchsize如何影响模型的性能?

發布時間:2025/3/20 ChatGpt 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【AI不惑境】学习率和batchsize如何影响模型的性能? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,這是專欄《AI不惑境》的第四篇文章,講述學習率以及batchsize與模型性能的關系。

進入到不惑境界,就是向高手邁進的開始了,在這個境界需要自己獨立思考。如果說學習是一個從模仿,到追隨,到創造的過程,那么到這個階段,應該躍過了模仿和追隨的階段,進入了創造的階段。從這個境界開始,講述的問題可能不再有答案,更多的是激發大家一起來思考。

作者&編輯 | 言有三

前幾期我們講述了數據,模型的深度,寬度對深度學習模型性能的影響,這一次我們講述學習率和batchsize對模型性能的影響,在實踐中這兩個參數往往一起調整

?

1 為什么說學習率和batchsize

目前深度學習模型多采用批量隨機梯度下降算法進行優化,隨機梯度下降算法的原理如下,

n是批量大小(batchsize),η是學習率(learning rate)。可知道除了梯度本身,這兩個因子直接決定了模型的權重更新,從優化本身來看它們是影響模型性能收斂最重要的參數。

學習率直接影響模型的收斂狀態,batchsize則影響模型的泛化性能,兩者又是分子分母的直接關系,相互也可影響,因此這一次來詳述它們對模型性能的影響。

?

2 學習率如何影響模型性能?

通常我們都需要合適的學習率才能進行學習,要達到一個強的凸函數的最小值,學習率的調整應該滿足下面的條件,i代表第i次更新。

第一個式子決定了不管初始狀態離最優狀態多遠,總是可以收斂。第二個式子約束了學習率隨著訓練進行有效地降低,保證收斂穩定性,各種自適應學習率算法本質上就是不斷在調整各個時刻的學習率。

學習率決定了權重迭代的步長,因此是一個非常敏感的參數,它對模型性能的影響體現在兩個方面,第一個是初始學習率的大小,第二個是學習率的變換方案。

2.1、初始學習率大小對模型性能的影響

初始的學習率肯定是有一個最優值的,過大則導致模型不收斂,過小則導致模型收斂特別慢或者無法學習,下圖展示了不同大小的學習率下模型收斂情況的可能性,圖來自于cs231n。

那么在不考慮具體的優化方法的差異的情況下,怎樣確定最佳的初始學習率呢?

通常可以采用最簡單的搜索法,即從小到大開始訓練模型,然后記錄損失的變化,通常會記錄到這樣的曲線。

隨著學習率的增加,損失會慢慢變小,而后增加,而最佳的學習率就可以從其中損失最小的區域選擇。

有經驗的工程人員常常根據自己的經驗進行選擇,比如0.1,0.01等。

隨著學習率的增加,模型也可能會從欠擬合過度到過擬合狀態,在大型數據集上的表現尤其明顯,筆者之前在Place365上使用DPN92層的模型進行過實驗。隨著學習率的增強,模型的訓練精度增加,直到超過驗證集。

2.2、學習率變換策略對模型性能的影響

學習率在模型的訓練過程中很少有不變的,通常會有兩種方式對學習率進行更改,一種是預設規則學習率變化法,一種是自適應學習率變換方法

2.2.1 預設規則學習率變化法

常見的策略包括fixed,step,exp,inv,multistep,poly,sigmoid等,集中展示如下:

筆者之前做過一個實驗來觀察在SGD算法下,各種學習率變更策略對模型性能的影響,具體的結果如下:

從結果來看:

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

其次是exp,poly。它們能取得與step,multistep相當的結果,也是因為學習率以比較好的速率下降,雖然變化更加平滑,但是結果也未必能勝過step和multistep方法,在這很多的研究中都得到過驗證,離散的學習率變更策略不影響模型的學習。

inv和fixed的收斂結果最差。這是比較好解釋的,因為fixed方法始終使用了較大的學習率,而inv方法的學習率下降過程太快。

關于以上內容的完整分析結果,可以查看往期文章:

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

從上面的結果可以看出,對于采用非自適應學習率變換的方法,學習率的絕對值對模型的性能有較大影響,研究者常使用step變化策略。

目前學術界也在探索一些最新的研究方法,比如cyclical learning rate,示意圖如下:

實驗證明通過設置上下界,讓學習率在其中進行變化,可以在模型迭代的后期更有利于克服因為學習率不夠而無法跳出鞍點的情況。

確定學習率上下界的方法則可以使用LR range test方法,即使用不同的學習率得到精度曲線,然后獲得精度升高和下降的兩個拐點,或者將精度最高點設置為上界,下界設置為它的1/3大小。

SGDR方法則是比cyclical learning rate變換更加平緩的周期性變化方法,如下圖,效果與cyclical learning rate類似。

2.2.2 自適應學習率變化法

自適應學習率策略以Adagrad,Adam等為代表,我們在公眾號已經說得非常多了,這里就不再做原理上的講述,可以查看往期介紹:

【AI初識境】為了圍剿SGD大家這些年想過的那十幾招

原理上各種改進的自適應學習率算法都比SGD算法更有利于性能的提升,但實際上精細調優過的SGD算法可能取得更好的結果,在很多的論文[3-4]中都得到過驗證,我們在實驗中也多次證明過這一點,如下圖。

2.3、小結

不考慮其他任何因素,學習率的大小和迭代方法本身就是一個非常敏感的參數。如果經驗不夠,還是考慮從Adam系列方法的默認參數開始,如果經驗豐富,可以嘗試更多的實驗配置。

?

3 Batchsize如何影響模型性能?

模型性能對batchsize雖然沒有學習率那么敏感,但是在進一步提升模型性能時,batchsize就會成為一個非常關鍵的參數。

3.1 大的batchsize減少訓練時間,提高穩定性

這是肯定的,同樣的epoch數目,大的batchsize需要的batch數目減少了,所以可以減少訓練時間,目前已經有多篇公開論文在1小時內訓練完ImageNet數據集。另一方面,大的batch size梯度的計算更加穩定,因為模型訓練曲線會更加平滑。在微調的時候,大的batch size可能會取得更好的結果。

3.2 大的batchsize泛化能力下降

在一定范圍內,增加batchsize有助于收斂的穩定性,但是隨著batchsize的增加,模型的性能會下降,如下圖,來自于文[5]。

這是研究者們普遍觀測到的規律,雖然可以通過一些技術緩解。這個導致性能下降的batch size在上圖就是8000左右。

那么這是為什么呢?

研究[6]表明大的batchsize收斂到sharp miminum,而小的batchsize收斂到flat mimimum,后者具有更好的泛化能力。兩者的區別就在于變化的趨勢,一個快一個慢,如下圖,造成這個現象的主要原因是大小的batchsize帶來的噪聲有助于逃離sharp mininum。

Hoffer[7]等人的研究表明,大的batchsize性能下降是因為訓練時間不夠長,本質上并不少batchsize的問題,在同樣的epochs下的參數更新變少了,因此需要更長的迭代次數。

3.3 小結

batchsize在變得很多時,會降低模型的泛化能力。在此之下,模型的性能變換隨batch size通常沒有學習率敏感。

?

4 學習率和batchsize的關系

通常當我們增加batchsize為原來的N倍時,要保證經過同樣的樣本后更新的權重相等,按照線性縮放規則,學習率應該增加為原來的N倍[5]。但是如果要保證權重的方差不變,則學習率應該增加為原來的sqrt(N)倍[7],目前這兩種策略都被研究過,使用前者的明顯居多。

從兩種常見的調整策略來看,學習率和batchsize都是同時增加的。學習率是一個非常敏感的因子,不可能太大,否則模型會不收斂。同樣batchsize也會影響模型性能,那實際使用中都如何調整這兩個參數呢?

研究[8]表明,衰減學習率可以通過增加batchsize來實現類似的效果,這實際上從SGD的權重更新式子就可以看出來兩者確實是等價的,文中通過充分的實驗驗證了這一點。

研究[9]表明,對于一個固定的學習率,存在一個最優的batchsize能夠最大化測試精度,這個batchsize和學習率以及訓練集的大小正相關。

對此實際上是有兩個建議:

如果增加了學習率,那么batch size最好也跟著增加,這樣收斂更穩定。

盡量使用大的學習率,因為很多研究都表明更大的學習率有利于提高泛化能力。如果真的要衰減,可以嘗試其他辦法,比如增加batch size,學習率對模型的收斂影響真的很大,慎重調整。

關于學習率和batch size這次就說這么多,感興趣可以自行拓展閱讀。

參考文獻

[1] Smith L N. Cyclical learning rates for training neural networks[C]//2017 IEEE Winter Conference on Applications of Computer Vision (WACV). IEEE, 2017: 464-472.

[2] Loshchilov I, Hutter F. Sgdr: Stochastic gradient descent with warm restarts[J]. arXiv preprint arXiv:1608.03983, 2016.

[3] Reddi S J, Kale S, Kumar S. On the convergence of adam and beyond[J]. 2018.

[4] Keskar N S, Socher R. Improving generalization performance by switching from adam to sgd[J]. arXiv preprint arXiv:1712.07628, 2017.

[5] Goyal P, Dollar P, Girshick R B, et al. Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour.[J]. arXiv: Computer Vision and Pattern Recognition, 2017.

[6] Keskar N S, Mudigere D, Nocedal J, et al. On large-batch training for deep learning: Generalization gap and sharp minima[J]. arXiv preprint arXiv:1609.04836, 2016.

[7] Hoffer E, Hubara I, Soudry D. Train longer, generalize better: closing the generalization gap in large batch training of neural networks[C]//Advances in Neural Information Processing Systems. 2017: 1731-1741.

[8] Smith S L, Kindermans P J, Ying C, et al. Don't decay the learning rate, increase the batch size[J]. arXiv preprint arXiv:1711.00489, 2017.

[9] Smith S L, Le Q V. A bayesian perspective on generalization and stochastic gradient descent[J]. arXiv preprint arXiv:1710.06451, 2017.

?

總結:

學習率和batchsize是影響模型性能極其重要的兩個參數,我們應該非常謹慎地對待。

對于學習率算法,可以選擇Adam等自適應學習率策略先訓練模型看看收斂結果,再考慮使用SGD等算法進一步提升性能。對于Batchsize,大部分人并不會使用幾千上萬的batchsize,因此也不用擔心模型性能的下降,用大一點(比如128)的batchsize吧,這樣需要的迭代次數更少,結果也更加穩定。

下期預告:跳層連接對網絡性能的影響。

AI白身境系列完整閱讀:

第一期:【AI白身境】深度學習從棄用windows開始

第二期:【AI白身境】Linux干活三板斧,shell、vim和git

第三期:【AI白身境】學AI必備的python基礎

第四期:【AI白身境】深度學習必備圖像基礎

第五期:【AI白身境】搞計算機視覺必備的OpenCV入門基礎

第六期:【AI白身境】只會用Python?g++,CMake和Makefile了解一下

第七期:【AI白身境】學深度學習你不得不知的爬蟲基礎

第八期:?【AI白身境】深度學習中的數據可視化

第九期:【AI白身境】入行AI需要什么數學基礎:左手矩陣論,右手微積分

第十期:【AI白身境】一文覽盡計算機視覺研究方向

第十一期:【AI白身境】AI+,都加在哪些應用領域了

第十二期:【AI白身境】究竟誰是paper之王,全球前10的計算機科學家

AI初識境系列完整閱讀

第一期:【AI初識境】從3次人工智能潮起潮落說起

第二期:【AI初識境】從頭理解神經網絡-內行與外行的分水嶺

第三期:【AI初識境】近20年深度學習在圖像領域的重要進展節點

第四期:【AI初識境】激活函數:從人工設計到自動搜索

第五期:【AI初識境】什么是深度學習成功的開始?參數初始化

第六期:【AI初識境】深度學習模型中的Normalization,你懂了多少?

第七期:【AI初識境】為了圍剿SGD大家這些年想過的那十幾招

第八期:【AI初識境】被Hinton,DeepMind和斯坦福嫌棄的池化,到底是什么?

第九期:【AI初識境】如何增加深度學習模型的泛化能力

第十期:【AI初識境】深度學習模型評估,從圖像分類到生成模型

第十一期:【AI初識境】深度學習中常用的損失函數有哪些?

第十二期:【AI初識境】給深度學習新手開始項目時的10條建議

AI不惑境系列完整閱讀:

第一期:【AI不惑境】數據壓榨有多狠,人工智能就有多成功

第二期:【AI不惑境】網絡深度對深度學習模型性能有什么影響?

第三期:【AI不惑境】網絡的寬度如何影響深度學習模型的性能?

第四期:【AI不惑境】學習率和batchsize如何影響模型的性能?

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

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的【AI不惑境】学习率和batchsize如何影响模型的性能?的全部內容,希望文章能夠幫你解決所遇到的問題。

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