簡介
每次只使用單個樣本的最佳化算法有時被稱為
隨機(stochastic)或者線上(online)算法。術語“線上”通常是指從連續產生樣本的數據流中抽取樣本的情況,而不是從一個固定大小的訓練集中遍歷多次採樣的情況。批量算法是指深度學習訓練中,使用一個以上,而又不是全部的訓練樣本的最佳化算法,或指使用所有訓練集的最佳化算法。在實際套用中,批量算法一般多指小批量算法,即使用部分訓練樣本的最佳化算法傳統上,這些會被稱為小批量(mini-batch)或小批量隨機(mini-batch stochastic)方法,通常將它們簡單地稱為隨機(stochastic)方法。
影響因素
批量的大小通常由以下幾個因素決定:
更大的批量會計算更精確的梯度估計,但是回報卻是小於線性的。
極小批量通常難以充分利用多核架構。這促使我們使用一些絕對最小批量,低於這個值的小批量處理不會減少計算時間。
如果批量處理中的所有樣本可以並行地處理(通常確是如此),那么記憶體消耗和批量大小會正比。對於很多硬體設施,這是批量大小的限制因素。
在某些硬體上使用特定大小的數組時,運行時間會更少。尤其是在使用GPU時,通常使用2的冪數作為批量大小可以獲得更少的運行時間。一般,2的冪數的取值範圍是32到256,16有時在嘗試大模型時使用。
可能是由於小批量在學習過程中加入了噪聲,它們會有一些正則化效果。泛化誤差通常在批量大小為1時最好。因為梯度估計的高方差,小批量訓練需要較小的學習率以保持穩定性。因為降低的學習率和消耗更多步驟來遍歷整個訓練集都會產生更多的步驟,所以會導致總的運行時間非常大。
不同的算法使用不同的方法從小批量中獲取不同的信息。有些算法對採樣誤差比其他算法更敏感,這通常有兩個可能原因。一個是它們使用了很難在少量樣本上精確估計的信息,另一個是它們以放大採樣誤差的方式使用了信息。
小批量的優點
小批量是隨機抽取的這點也很重要。從一組樣本中計算出梯度期望的無偏估計要求這些樣本是獨立的。我們也希望兩個連續的梯度估計是互相獨立的,因此兩個連續的小批量樣本也應該是彼此獨立的。很多現實的數據集自然排列,從而使得連續的樣本之間具有高度相關性。例如,假設我們有一個很長的血液樣本測試結果清單。清單上的數據有可能是這樣獲取的,頭五個血液樣本於不同時間段取自第一個病人,接下來三個血液樣本取自第二個病人,再隨後的血液樣本取自第三個病人,等等。如果我們從這個清單上順序抽取樣本,那么我們的每個小批量數據的偏差都很大,因為這個小批量很可能只代表著數據集上眾多患者中的某一個患者。在這種數據集中的順序有很大影響的情況下,很有必要在抽取小批量樣本前打亂樣本順序。對於非常大的數據集,如數據中心含有幾十億樣本的數據集,我們每次構建小批量樣本時都將樣本完全均勻地抽取出來是不太現實的。幸運的是,實踐中通常將樣本順序打亂一次,然後按照這個順序存儲起來就足夠了。之後訓練模型時會用到的一組組小批量連續樣本是固定的,每個獨立的模型每次遍歷訓練數據時都會重複使用這個順序。然而,這種偏離真實隨機採樣的方法並沒有很嚴重的有害影響。不以某種方式打亂樣本順序才會極大地降低算法的性能。
批量梯度下降
無約束最佳化問題是最最佳化理論的基礎,通常採用疊代法求它的最優解。 經典的數值最佳化算法如梯度下降法(gradient descent method),牛頓法(Newton method)等都可求得其最優解。 梯度下降法早在 1847 年由大數學家 Cauchy 最先使用。它是最古老的一種解析方法,而其他解析方法大多承其衣缽,並構成最最佳化方法的基礎。梯度下降法具有儲存量小、結構簡單、易於實現的優點。梯度下降法常作為機器學習領域內訓練算法的核心算法,用來遞歸性地逼近最小偏差模型,如人工神經網路與 Logistic regression,廣泛套用於數據挖掘、模式識別等領域。梯度下降法以負梯度方向作為極小化算法的下降方向,是無約束最佳化中最簡單的方法。 在訓練類的算法中(如神經網路、回歸),通常使用梯度下降法最小化損失函式,這時學習率的設定對算法的性能很重要,已有許多研究致力於梯度下降法的分析與改進。20世紀 80 年代,Naym Shor研究發明了次梯度法(Subgradient Method), 它是解凸最佳化問題的一 種疊代算法,也適用於目 標 函式不 可微 的 情 形 。 牛頓法(Newton method)最初由艾薩克·牛頓發明,後於 1690 年由約瑟夫·拉弗森再次提出。 Bottou L提出在大數處理時,使用隨機抽取的單個樣本計算近似的平均梯度值,單次疊代計算量小,效率很高,特別適合大數據機器學習。郭躍東和宋旭東針對學習率對算法收斂速度的影響做了研究,提出了一種新的梯度下降法,通過求解線性回歸問題分析了算法性能,結果表明,改進算法大大加快了算法的收斂速度
梯度下降法(Gradient descent)是一個一階最最佳化算法,通常也稱為最速下降法。 要使用梯度下降法找到一個函式的局部極小值,必須向函式上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行疊代搜尋。如果相反地向梯度正方向疊代進行搜尋,則會接近函式的局部極大值點;這個過程則被稱為梯度上升法。批量梯度下降由若干樣本計算得到,比單樣本隨機梯度下降更為可靠,同時大大降低了單樣本梯度下降中批量梯度互相抵消的情況。其次,梯度下降有利於並行運算,能夠在深度學習平台上高效運行。