大量的數(shù)據(jù)對機器學習算法的研究很有幫助,當我們直到算法有較高的方差(variance)時,增加m會有助于改善算法。
但是當m很大時,比如m=100,000,000時,在這種情況下,在計算時就會消耗更多的成本。
使用隨機梯度下降或小批量梯度下降
在使用批量梯度下降時,假設有1億的樣本,就要對1億的樣本求和,這樣的成本太高了,使用隨機梯度下降,每次對一個樣本,或者小批量梯度下降,對幾十個樣本求和,可以大大減小計算,加快速度。
映射約減(Map Reduce),并行化處理
在設計網(wǎng)站時,當用戶量增加時,一臺服務器不足以承載這么多用戶,我們會增加服務器,用負載均衡來解決。
同樣的在解決大量數(shù)據(jù)的機器學習問題上,一臺機器有時也不足以完成任務。
以線性回歸為例,假設有400個樣本,它的批量梯度下降的內(nèi)部迭代為:
同時有四臺機器,將樣本分為四份:
機器1: ;
機器2: ;
機器3: ;
機器4: 。
分別將梯度下降大括號里的求和分成4在四個機器上運算:
機器1:
機器2:
機器3:
機器4:
然后將4份數(shù)據(jù)匯總到另一臺機器上做求和運算。
這樣能將原來的速度提升解決4倍,這是一個很大的提升。
將類似的求和運算分攤到多個機器上,它就是映射約減。
在線性回歸和邏輯回歸問題上很容易實現(xiàn),而在神經(jīng)網(wǎng)絡上,也可以在多臺機器上運行正向傳播和反向傳播,然后將結果匯總到主服務器上,加快運行速度。
處理使用多臺計算機實現(xiàn)并行化,一臺多核處理器的計算機也能實現(xiàn)類似的效果。
在線學習(Online Learning)
在一個大型網(wǎng)站中,有不斷的用戶訪問,數(shù)據(jù)源保持不斷,這時就可以使用在線學習系統(tǒng)在解決一些問題。
與通常的機器學習問題使用固定的數(shù)據(jù)集來訓練算法不同,在線學習每次處理單獨的樣本,在利用單獨的樣本更新完參數(shù),改善算法性能后就丟棄該樣本。這與隨機梯度下降的處理方式有類似之處,區(qū)別就是在線學習不會使用一個固定的數(shù)據(jù)集。
算法過程:
一直迭代下去 {
獲取單獨的數(shù)據(jù);
通過該樣本更新 {
}
}
這種做法的優(yōu)點在于可以減少數(shù)據(jù)的存儲空間和計算速度,在大型網(wǎng)站中,數(shù)據(jù)是海量的,要集中處理時占用的硬盤和內(nèi)存空間非常大,也非常耗時。而當有連續(xù)的數(shù)據(jù)時,就可以使用在線學習來處理。
另一個優(yōu)點是可以適應業(yè)務不同發(fā)展的需求和不同時段用戶的需求,因為參數(shù)會隨著輸入樣本的不同而改變。
轉(zhuǎn)載自:
https://codeeper.com/2020/02/09/tech/machine_learning/learn_large_datasets.html