深度學習基礎課:使用小批量隨機梯度下降
大家好~本課程為“深度學習基礎班”的線上課程,帶領同學從0開始學習全連接和卷積神經網絡,進行數學推導,并且實現可以運行的Demo程序
線上課程資料:
本節課錄像回放
加QQ群,獲得ppt等資料,與群主交流討論:106047770
本系列文章為線上課程的復盤,每上完一節課就會同步發布對應的文章
本課程系列文章可進入索引查看:
深度學習基礎課系列文章索引
回顧相關課程內容
- 對于隨機梯度下降,多少個樣本更新一次權重?
為什么要學習本課
- 如何改進隨機梯度下降算法?
- 如何充分利用CPU緩存?
- 如何更接近損失函數的極小值?
主問題:如何充分利用CPU緩存?
- 我們現在使用什么方法更新權重?
答:隨機梯度下降 - 除此之外還有什么方法嗎?
答:梯度下降 - 它們分別是多少個樣本更新一次權重?
答:隨機梯度下降使用一個樣本更新一次權重;梯度下降使用所有的樣本,求梯度的平均后更新一次權重 - 哪種方法更能利用CPU緩存?為什么?
答:梯度下降,因為它一次性輸入所有的樣本,能更好地利用緩存 - 但是該方法有什么問題?
答:如果樣本數量太多,可能超出緩存大小,影響性能;計算所有樣本的梯度平均后才更新一次權重,花費的時間太多,相應太慢 - 能否提出一個折中的方法?
答:小批量隨機梯度下降。該方法使用一個批量的樣本,求梯度平均后更新一次權重。有多少批量,就更新多少次權重 - 該方法有什么優勢?
答:批量的樣本數量可以任意設置,使其不超出緩存大小,又能占滿緩存空間,充分利用緩存;相對于梯度下降,更新權重的次數變多,從而每次更新的時間變少,加快相應速度
主問題:如何更接近損失函數的極小值?
- 如圖所示是梯度下降算法的幾何意義

- 隨機梯度下降算法是否總能達到極小值處?
答:否 - 可能會出現什么情況?
答:在極小值處震蕩 - 小批量隨機梯度下降是如何改進的?
答:相比隨機梯度下降,會更直接地達到極小值處,減少震蕩和繞彎路。 - 我們再從代數上來理解
- 對于隨機梯度下降,梯度等于什么?
答:\(g = \frac{dE}{dw}\) - 對于小批量隨機梯度下降,梯度等于什么?
答:\(g = \frac{1}{\beta} \sum_{i \in \beta} \frac{dE}{dw}\) - 相比隨機梯度下降,期望是否一樣?
答:一樣。
因為期望約等于平均值,而小批量隨機梯度下降的梯度是在計算平均值,平均值的期望約等于原值的期望,所以期望不變 - 相比隨機梯度下降,標準差是否下降了?
答:\(下降了,標準差為原來的 \frac{1}{\sqrt{\beta}}\)
結學
-
從幾何上來看
- 三種更新權重方法分別會如何接近損失函數的極小值?

- 三種更新權重方法分別會如何接近損失函數的極小值?
-
從代數上來看
- 小批量隨機梯度下降相比隨機梯度下降,期望和標準差有什么變化?
任務:實現小批量隨機梯度下降
- 請在“識別手寫數字”Demo中實現小批量隨機梯度下降
答:待實現的代碼:Minibatch,實現后的代碼:Minibatch_answer - 請每個同學都運行代碼,分別與梯度下降、隨機梯度下降比較每輪的時間、收斂速度
答:
運行Minibatch_answer代碼,調整train的參數
測試梯度下降:訓練樣本數取100,miniBatchSize取100
前4輪的收斂情況為:
[ 'loss:', 2.7084382520998895 ]
[ 'getCorrectRate:', '10%' ]
[ 'loss:', 2.553819845325052 ]
[ 'getCorrectRate:', '15%' ]
[ 'loss:', 2.443912505188381 ]
[ 'getCorrectRate:', '17%' ]
[ 'loss:', 2.3617236859557043 ]
[ 'getCorrectRate:', '21%' ]
測試隨機梯度下降:訓練樣本數取100,miniBatchSize取1
前4輪的收斂情況為:
[ 'loss:', 2.0895738788666964 ]
[ 'getCorrectRate:', '26%' ]
[ 'loss:', 1.067310882730676 ]
[ 'getCorrectRate:', '71%' ]
[ 'loss:', 0.5722998319431286 ]
[ 'getCorrectRate:', '85%' ]
[ 'loss:', 0.3622678286495109 ]
[ 'getCorrectRate:', '94%' ]
測試小批量隨機梯度下降:訓練樣本數取200,miniBatchSize取2,使更新權重的次數與隨機梯度的更新次數一樣,都為100
前4輪的收斂情況為:
[ 'loss:', 1.86769048890096 ]
[ 'getCorrectRate:', '42.5%' ]
[ 'loss:', 0.9562183977660103 ]
[ 'getCorrectRate:', '81%' ]
[ 'loss:', 0.6213491872632919 ]
[ 'getCorrectRate:', '88%' ]
[ 'loss:', 0.4314509748028065 ]
[ 'getCorrectRate:', '94%' ]
通過對比可知,每輪的時間從小到大依次為:梯度下降、小批量隨機梯度下降、隨機梯度下降
收斂速度從小到大依次為:梯度下降、隨機梯度下降、小批量隨機梯度下降
浙公網安備 33010602011771號