深度学习——训练时碰到的超参数
深度學習——訓練時碰到的超參數
文章目錄
- 深度學習——訓練時碰到的超參數
- 一、前言?
- 二、一些常見的超參數
- 學習率(Learning rate)
- 迭代次數(iteration)
- batchsize
- epoch
- 三、例子
- 四、References
一、前言?
在訓練深度神經網絡時,會碰到一些超參數,通過觀察在訓練過程中的監測指標如損失loss和準確率來判斷當前模型處于什么樣的訓練狀態,及時調整超參數以更科學地訓練模型能夠提高資源利用率。
總而言之,這里對深度學習中比較重要的或者常見的超參數做一個整理,我們可以根據實際情況修改超參數已達到最好的訓練效果。
二、一些常見的超參數
-
學習率(Learning rate)
學習率是控制模型的學習進度。從梯度下降算法的角度來說,通過選擇合適的學習率,可以使梯度下降法得到更好的性能。學習率,即參數到達最優值過程的速度快慢。
舉個栗子:
假如你從山峰的最高點根據梯度下降法尋找最優值,當你學習率過大,即下降的快,步子大,那么你很可能會在某一步跨過最優值;當你學習率過小時,每次下降一厘米,這將走到何年何月呀,用術語來說就是,長時間無法收斂。因此,學習率直接決定著學習算法的性能表現。
學習率的設置:
學習率 大 學習率 小 學習速度 快 慢 使用時間點 剛開始訓練時 一定輪數過后 副作用 1.易損失值爆炸;2.易振蕩。 1.易過擬合;2.收斂速度慢。 在訓練過程中,一般根據訓練輪數設置動態變化的學習率。
- 剛開始訓練時:學習率以 0.01 ~ 0.001 為宜。
- 一定輪數過后:逐漸減緩。
- 接近訓練結束:學習速率的衰減應該在100倍以上。
理想情況下曲線應該是滑梯式下降
[紅線]:- 曲線 初始時上揚
[黃線]:
Solution:初始學習率過大導致振蕩,應減小學習率,并從頭開始訓練 。 - 曲線初始時強勢下降沒多久歸水平
[綠線]:
Solution:后期學習率過大導致無法擬合,應減小學習率,并重新訓練后幾輪 。 - 曲線全程緩慢
[藍線]:
Solution:初始學習率過小 導致 收斂慢,應增大學習率,并從頭 開始訓練 。
-
迭代次數(iteration)
迭代是重復反饋的動作,神經網絡中我們希望通過迭代進行多次的訓練以達到所需的目標或結果。每一次迭代得到的結果都會被作為下一次迭代的初始值。 一次迭代=一個正向傳播+一個反向傳播。每一次迭代得到的結果都會被作為下一次迭代的初始值。 我們可以查看loss曲線,來判斷迭代次數夠不夠,如果loss從曲線上看已經收斂了,那么說明訓練差不多了,再增加迭代也沒什么用了,如果迭代結束了,但loss曲線并沒有收斂的趨勢,那么說明迭代設置的太小了。
-
batchsize
批大小。在深度學習中,一般采用隨機梯度下降法(SGD)訓練,即每次訓練在訓練集中取batchsize個樣本訓練(不是一次就把所有數據集扔進去訓練,每次只取batchsize)。相對于正常數據集,如果batchsize過小,訓練數據就會非常難收斂,從而導致欠擬合;增大batchsize,相對處理速度加快,所需內存容量也會增加。因此我們需要尋找最好的batchsize。再次重申:batchsize的正確選擇是為了在內存效率和內存容量之間尋找最佳平衡,batchsize過大可能會導致內存不夠用或程序內核崩潰。1次iteration等于使用batchsize個樣本訓練一次;batchsize通常取值為[16,32,64,128,256], 網絡較小時選用256,較大時選用64。
-
epoch
通俗的講epoch的值就是整個數據集被輪了幾次。一個epoch=所有訓練樣本的一個正向傳播和一個反向傳播,也就是等于使用訓練集中的全部樣本訓練一次。在神經網絡中傳遞完整的數據集一次是不夠的,所以我們需要將完整的數據集在同樣的神經網絡中傳遞多次。
三、例子
假設訓練集有1000個樣本,batchsize=10,那么訓練完整個樣本集需要:100次iteration,1次epoch。
| 名詞 | 定義 |
|---|---|
| epoch | 使用訓練集的全部數據對模型進行一次完整的訓練,被稱之為"一代訓練" |
| batch | 每次訓練使用數據集的一小部分(batchsize)對模型進行一次的訓練,被稱之為"一批訓練" |
| iteration | s使用一個batchsize大小的數據對模型進行一次參數更新的過程,被稱之為"一次訓練" |
四、References
- https://blog.csdn.net/program_developer/article/details/78597738
- https://blog.csdn.net/john_kai/article/details/72861731
- https://blog.csdn.net/qq_37274615/article/details/81147013
總結
以上是生活随笔為你收集整理的深度学习——训练时碰到的超参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习——数据预处理篇
- 下一篇: CornerNet的配置、训练与测试