現(xiàn)在,假設(shè)我們把樣本分配到n個(gè)工作節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)在m個(gè)樣本上進(jìn)行學(xué)習(xí)(節(jié)點(diǎn)1處理樣本1,……,m,節(jié)點(diǎn)2處理樣本m+1,……,2m,以此類(lèi)推),則得到:
當(dāng)然,上述結(jié)果在實(shí)際應(yīng)用中可能并不嚴(yán)格一致(從性能和收斂性的角度來(lái)說(shuō),對(duì)所有minibatch進(jìn)行平均和不采用諸如momentum和RMSProp之類(lèi)的updater的建議都較為偏頗),但是它從直覺(jué)上告訴了我們?yōu)樯秴?shù)平均法是一種可行的做法,尤其是當(dāng)參數(shù)被頻繁的求均值。
參數(shù)平均法聽(tīng)上去非常簡(jiǎn)單,但事實(shí)上并沒(méi)有我們看上去這么容易。
首先,我們應(yīng)該如何求平均值?最簡(jiǎn)單的辦法就是簡(jiǎn)單地將每輪迭代之后的參數(shù)進(jìn)行平均。一旦這樣實(shí)現(xiàn)了,我們會(huì)發(fā)現(xiàn)此方法在計(jì)算之外的額外開(kāi)銷(xiāo)非常巨大;網(wǎng)絡(luò)通信和同步的開(kāi)銷(xiāo)也許就能抵消額外機(jī)器帶來(lái)的效率收益。因此,參數(shù)平均法通常有一個(gè)大于1的平均周期averaging period(就每個(gè)節(jié)點(diǎn)的minibatch而言)。如果求均值太頻繁,那么每個(gè)節(jié)點(diǎn)得到的局部參數(shù)更多樣化,求均值之后的模型效果非常差。我們的想法是N個(gè)局部最小值的均值并不保證就是局部最?。?/p>

什么樣的平均的周期算是過(guò)高呢?這個(gè)問(wèn)題還沒(méi)有結(jié)論性的回答,和其它超參數(shù)攪和在一起之后變得更為復(fù)雜,比如學(xué)習(xí)率、minibatch的大小,和工作節(jié)點(diǎn)的數(shù)量。有些初步的研究結(jié)論(比如[8])建議平均的周期為每10~20個(gè)minibatch計(jì)算一次(每個(gè)工作節(jié)點(diǎn))能夠取得比較好的效果。隨著平均的周期延長(zhǎng),模型的準(zhǔn)確率則隨之下降。
另一類(lèi)額外的復(fù)雜度則是與優(yōu)化算法相關(guān),比如adagrad,momentum和RMSProp。這些優(yōu)化方法(即Deeplearning4j中的updater)在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程中能夠顯著提升收斂的特性。然而,這些updater都有中間狀態(tài)(通常每個(gè)模型參數(shù)有1或2個(gè)狀態(tài)值)—— 我們也需要對(duì)這些狀態(tài)值求均值嗎?對(duì)每個(gè)節(jié)點(diǎn)的中間狀態(tài)求均值可以加快收斂的速度,而犧牲的代價(jià)則是兩倍(或者多倍)增加網(wǎng)絡(luò)的傳輸數(shù)據(jù)量。有些研究在參數(shù)服務(wù)器的層面應(yīng)用類(lèi)似的“updater”機(jī)制,而不僅僅在每個(gè)工作節(jié)點(diǎn)([1])。
異步隨機(jī)梯度下降
有另一種與參數(shù)平均概念類(lèi)似的方法,我們稱(chēng)之為‘基于更新’的數(shù)據(jù)并行化。兩者的主要區(qū)別在于相對(duì)于在工作節(jié)點(diǎn)與參數(shù)服務(wù)器之間傳遞參數(shù),我們?cè)谶@里只傳遞更新信息(即梯度和沖量等等)。參數(shù)的更新形式變?yōu)榱耍?/p>
其中 λ 是一個(gè)縮放因素(類(lèi)似于學(xué)習(xí)率這類(lèi)的超參數(shù))。
它從結(jié)構(gòu)上來(lái)看與參數(shù)平均法非常相似:

熟悉神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練過(guò)程的數(shù)學(xué)原理的讀者也許已經(jīng)注意到了參數(shù)平均法與基于更新的方法之間的相似點(diǎn)。如果我們定義損失函數(shù)為L(zhǎng),學(xué)習(xí)率為α,那么權(quán)值向量W在SGD訓(xùn)練過(guò)程的第i+1次迭代的結(jié)果為
W
i
+
1
,
j
=
W
i
−
α
∇
L
j
,其中
∇
L
=
(
∂
L
∂
w
1
,
…
,
∂
L
∂
w
n
)
。
如果我們按照上述的權(quán)重更新規(guī)則,并且設(shè)置
λ
=
1
n
,權(quán)重值的更新量為
Δ
W
i
,
j
=
α
∇
L
j
(簡(jiǎn)單期間,僅用學(xué)習(xí)率為α的SGD算法),于是得到:
最終,當(dāng)參數(shù)時(shí)同步方式更新時(shí),參數(shù)平均法等價(jià)于基于更新的數(shù)據(jù)并行化。這個(gè)等價(jià)關(guān)系對(duì)多個(gè)平均步驟以及其它updater都成立(不僅限于簡(jiǎn)單版SGD)。
當(dāng)我們松綁同步更新的條件之后,基于更新的數(shù)據(jù)并行化方法變得更有意思了。也就是說(shuō),一旦計(jì)算得到?Wi,j,就立即將其應(yīng)用于參數(shù)向量(而不是等待N ≥ 1 輪迭代),我們因此得到了異步隨機(jī)梯度下降算法。異步SGD有兩個(gè)主要優(yōu)勢(shì):