本章講了梯度下降的幾種方式:batch梯度下降、mini-batch梯度下降、隨機梯度下降。也講解了如何利用mapreduce或者多cpu的思想加速模型的訓練。
更多內容參考 機器學習&深度學習
有的時候數據量會影響算法的結果,如果樣本數據量很大,使用梯度下降優化參數時,一次調整參數需要計算全量的樣本,非常耗時。
如果訓練集和驗證集的誤差像左邊的圖形這樣,就可以證明隨着數據量的增加,將會提高模型的准確度。而如果像右邊的圖,那么增加樣本的數量就沒有什么意義了。
因此可以考慮縮小m的使用量,可以使用隨機梯度下降。隨機梯度下降的過程是:隨機打散所有的樣本,然后從第一個樣本開始計算誤差值,優化參數;遍歷所有的樣本。這樣雖然優化的方向比較散亂,但是最終還是會趨於最優解。
還有一種方式叫做小批量梯度下降,每次使用一小部分的數據進行驗證。比批量梯度下降更快,但是比隨機梯度下降更穩定。
針對損失函數和batch的數量,可以畫出下面的圖:圖1的震盪曲線可以忽略,此時的震盪可能是由於局部最小值造成的;圖2如果增加數量能使得曲線更平滑,那么可以考慮增加batch的數量。圖3 可能是模型根本沒有在學習,可以考慮修改一下其他的參數。圖4可能是因為學習太高,可以使用更小的學習率。
在線學習就是隨着數據的獲取,增量的來當做每個batch進行訓練。
如果數據的樣本很大,其實也可以通過map reduce的方式來進行並行處理,比如把數據切分成很多塊,每個map運行完,統一在reduce端進行參數梯度下降學習。多CPU的情況下,也是同樣的道理。