進階最佳化

Shampoo 最佳化器(Shampoo optimizer)

Adam 與它的親戚每個參數只存一個純量,那是一個對角預條件子,忽略了參數如何一起變動。真正的全矩陣預條件子能抓到所有這些相關性,但需要一個大小是參數數平方的矩陣。Shampoo 是有結構的折衷:它不存一個巨大的矩陣,而是對每個權重張量的每個軸各存一個適中的預條件子,於是它能沿著列與沿著行抓到相關性,卻從不需要建出完整的那個矩陣。

對於形狀為 m 乘 n 的權重矩陣,Shampoo 從 G G^top 累積一個大小 m 乘 m 的左統計量 L,從 G^top G 累積一個大小 n 乘 n 的右統計量 R,其中 G 是梯度。更新被預條件化為 L^{-1/4} G R^{-1/4},用的是兩個因子矩陣的逆四次方根;對更高階的張量,則每個維度各有一個這樣的因子。沿著每個軸取分數冪的矩陣根,正是它帶有「全矩陣風味」的來源。

Shampoo 提供比對角型 Adam 更強、能感知相關性的預條件化,並在大批次與大型語言模型訓練上證實有效,尤其是它把因子計算切片分散的分散式版本。代價是每軸因子矩陣的記憶體,以及週期性計算矩陣逆根的開銷,而且為了穩定,它通常會「嫁接」到某個基準最佳化器的步長上。

W \leftarrow W - \eta\, L^{-1/4} G R^{-1/4},\quad L \mathrel{+}= GG^\top,\; R \mathrel{+}= G^\top G

每個張量軸各一個預條件子,透過逆四次方根施加。

「嫁接」(grafting)指的是 Shampoo 借用一個調好的基準(如 Adam)每步的大小,但採用 Shampoo 的方向,藉此把難調的步長與預條件子解耦。

又称
Shampoodistributed Shampoo