不同數據集有不同的Scaling law?而你可用一個壓縮算法來預測它

機器之心報道

機器之心編輯部

一般而言,訓練神經網絡耗費的計算量越大,其性能就越好。在擴大計算規模時,必須要做個決定:是增多模型參數量還是提升數據集大小 —— 必須在固定的計算預算下權衡此兩項因素。

Scaling law 告訴我們:只要能適當地分配參數和數據,就能在固定計算預算下實現性能最大化。之前已有不少研究探索過神經語言模型的 Scaling law,而這些研究通常得出的結論是參數和訓練 token 數應當一比一地擴展。

但是,之前的語言模型 Scaling law 研究都是基於在散亂的網絡文本上訓練的 Transformer 得到的。這是一種非常特定的數據分佈,因此我們自然會問:基於這樣的網絡文本數據集得到的 Scaling law 是否可以泛化到其它分佈?

此外,人們普遍認爲,訓練數據混合的秘訣在於能讓前沿探索的產業界實驗室能持續產出當前最佳的 LLM。考慮到提升數據質量能顯著提升語言模型的性能,而強化學習的 Scaling law 也會隨博弈難度而縮放,也許我們可以假設:當前的語言模型 Scaling law(即 Chinchilla)只是針對網絡文本數據的具體案例,其背後還有一個基於訓練數據屬性的更廣義的 Scaling law。

那麼,神經 Scaling law 對訓練用的 token 序列數據集的哪些性質敏感呢?換句話說,如果我們想要準確預測如何以最佳方式爲訓練過程分配計算量,我們該觀測數據的哪些屬性?另外,Scaling law 的數據依賴性質僅僅是個理論問題,還是說對真實世界數據集也很重要?

爲了探究這些問題,AI 數據公司 Reworkd 的研究者 Rohan Pandey 做了一番調查,得到了這些問題的答案;另外他還提出了一種壓縮算法 gzip,可預測數據複雜性對擴展性質的影響。

他的研究方法是:在可以直觀控制複雜度的文本數據設置下,以信息論方法理解 Scaling law 的數據依賴性的原因。

他最終找到的設置名爲概率式上下文無關語法(PCFG,最早由喬姆斯基於 1956 年提出)。該設置相對自然(可以建模自然語言、代碼等),句法複雜度可控,遵循一些已被很好理解的信息論原理。

實驗中,通過調整 PCFG 的句法性質,他生成了 6 個具有不同複雜度的數據集。對於每個數據集,他又訓練了 6 個不同大小的語言模型(參數量從 4.4M 到 1.4B),並記錄了這些語言模型在 6 種不同訓練步數(100K 到 100M token)下的結果。然後,他爲每個數據集都擬合了一個 Scaling law,發現 Scaling law 的參數會隨句法複雜度而有意義地變化。遵循之前有關形式語法的熵的研究,對於複雜度度量,他使用的是數據集中每個 token 序列的可壓縮率(compressibility)中值,這能通過 gzip 輕鬆計算出來。

結果發現,隨着訓練數據的可壓縮率降低(更加複雜),Scaling law 的計算最優邊界也會逐漸從參數量偏向數據大小。然後,他測量了真實世界的代碼和自然語言數據集的可壓縮率,結果發現前者的可壓縮率更大,因此可預測其服從不同的 Scaling law。

通過 PCFG 的句法性質調節數據複雜度

概率式上下文無關語法(PCFG)是計算語言學的一種基礎工具,可用於建模自然語言的句法。PCFG 是對標準的上下文無關語法(CFG)的擴展,即在生成規則中關聯了概率,從而能以一種可量化的方式表徵語言的模糊性和可變性。這些語法會生成樹,其中每個節點都表示一個句法類別,每條邊則表示用於生成句子的生成規則。在根據 PCFG 生成句子時,會以概率方式採樣應用生成規則的序列,直到該樹的所有葉節點都是端點(實際的詞彙 token)。

我們可以控制 PCFG 的句法性質,以自然方式調節文本數據集的複雜度。具體來說,PCFG 創建函數可接收的參數包括:端點的數量、非端點的數據、生成規則右側的最大長度、任何非端點允許的生成規則的最大數量(如果這個值爲 1,則給定的非端點將始終得到同樣的右側)。直觀而言,以上每個值的增長都會導致句法複雜度增大。

爲了基於以上參數創建 PCFG,對於每個端點,都隨機選取其生成數量(RHS 選項)、這些生成的每個長度,通過從端點和非端點隨機採樣來實例化生成規則,併爲其分配一個概率(根據非端點的總 RHS 選項而進行了歸一化)。然後,收集所有爲全部非端點生成的生成規則,並使用基於 NLTK 構建的 PCFG 軟件包實例化一個語法。

再使用該語法(在給定約束下隨機創建的)來概率式地採樣句子,以構建 token 序列數據集。爲了後面更容易比較在不同語法(生成不同平均長度的句子)上的訓練情況,他決定將句子採樣到同等 token 數量的文檔中。持續基於語法採樣句子,直到填滿上下文長度,如有溢出,則直接截斷句子。

句子由僅爲整數的端點構成,因此可以被視爲語言模型的 token ID;再使用未被使用的整數 0(可有效對應於自然語言中的句號)將句子連接起來。澄清一下,這裡不是生成「看起來」像自然語言的字符串再進行 token 化 ——PCFG 是直接生成 token ID 本身的序列。現在,可以根據 6 組初始語法約束生成 6 個有不同複雜度的 token 序列數據集了。

用 gzip 可壓縮率度量句法複雜度

爲了估計生成數據集以及真實數據集的複雜度,Rohan Pandey 選擇使用一種壓縮算法 gzip。

gzip 的一個優點是已有很好的理論研究基礎,它們表明:可壓縮率(compressibility)與熵成反比,而熵與句法複雜度成正比。具體來說,針對數據集中 1000 個 token 構成的每個 token 序列,使用 gzip 並計算壓縮後數據與原始數據的大小(字節數)之比。

然後,計算可壓縮率的中值和標準差,確認有更高句法複雜度的語法會得到更難壓縮的數據集。

表 1 列出了每個語法的句法參數和測得的壓縮率。

可以觀察到,隨着非端點(語法類別)、端點(token)、右側選項和右側長度的增長,gzip 壓縮率也會增長,即變得更難壓縮。

圖 1 繪出了這些數據集以及自然語言和代碼數據的情況。

可以看到,在複雜度方面,某些 PCFG 數據集與代碼數據相近(易於壓縮的部分),而另一些則與自然語言相近。

Scaling law 對數據複雜度敏感嗎?

爲了確定數據集的 Scaling law,該研究者在不同大小的數據子集(100K、1M、5M、20M、50M、100M token)上訓練了幾個不同大小(參數量爲 4.2M、8.8M、20.3M、59.0M、275.3M、1.4B)的模型,表 6 給出了其架構詳情;然後他在所得損失結果上進行冪律擬合。大多數實驗都是在 4 臺有 80 GB VRAM 的英偉達 A100 上完成的,使用了 PyTorch FSDP。

如圖 2 所示,如果一個數據集更容易壓縮(可壓縮率越低),模型的收斂速度就越快。這符合我們的直觀認識。

儘管這表明我們需要更多計算量去建模更復雜的數據集,但我們還是需要更多證據才能確定計算最優邊界是否會直接根據數據複雜度而變化。爲了確立 Scaling law 對數據複雜度的非平凡的敏感性,需要計算每個數據集的 Scaling law 並調查其擬合參數。

根據 gzip 可壓縮率計算數據敏感的 Scaling law

Hoffmann et al. 在 2022 年提出的 Scaling law 函數形式是將訓練損失作爲模型和數據大小的函數:

其中 N 是模型的參數量,D 是訓練數據集的 token 數量。他們宣稱 E 是「自然文本的熵」且 Scaling law「與數據集無關」。但是,當 Rohan Pandey 在 PCFG 數據集上擬合訓練結果與該函數時,卻發現每個數據集的 Scaling law 大不相同,見表 2。

該 Scaling law 可爲參數量得到一個計算最優邊界(由 Kaplan et al. [2020] 和 Hoffmann et al. [2022])推導得出,可簡化爲:

其中 C 是計算預算,單位 FLOPs。

圖 3 繪出了 Chinchilla 的計算最優邊界以及每個 PCFG 數據集擬合得到的 Scaling law。

可以看到,隨着數據越來越難壓縮,擬合得到的 Scaling law 的邊界逐漸變得偏向於數據,在 0.23 < gzip 可壓縮率 < 0.45 區間中某個點時越過 Chinchilla 的一比一邊界。

爲了根據數據集的可壓縮率預測 Scaling law 參數,可在每個數據集的擬合 Scaling law 參數上進行簡單的線性迴歸擬合。之前我們提到,針對數據集 D,計算可壓縮率 H 的方法是:先計算每個元素 d 壓縮後比特量與原始比特量的比值,然後再計算所有元素的平均值。

一旦從 H 擬合出預測每個參數(E, A, B, α, β)的線,就可以將每個參數重新定義成可壓縮率的一個函數:

其中 m_x 和 n_x 是擬合後線性迴歸的參數。

表 3 給出了這些擬合後的值(以及迴歸的 p 值),圖 4 則是這些線性迴歸的可視化結果。

它們幾乎都是單調遞減的,只是速率不同,而在 H 約 0.27 的位置,α 和 β 相交。需要指出,E(原本設定爲常數的「自然語言的熵」)是唯一一個會隨 H 增大的參數(但不明顯)。

現在就可以將 (1) 式重新參數化爲可壓縮率 H 的函數:

但是,由於這裡的實驗規模相當小,並且主要集中於 PCFG 數據集,因此 Pandey 又對該函數進行了擴展 —— 調整 Chinchilla 後得到了數據依賴型的 Scaling law:

其中 ε 是對訓練數據的 gzip 壓縮率的調整權重,加 ' 的參數是 Chinchilla 常量。

將句法參數作爲可壓縮率的一個混雜變量而消除掉

上面的實驗並沒有解決這一可能性:這個可壓縮率度量混雜了某個底層的句法屬性(如詞彙庫大小)。爲了解決這一問題,圖 5 給出了另外的結果。

可以看到,當維持詞彙庫大小穩定不變並改變其它句法性質(表 4)時,gzip 可壓縮率依然可以預測 Scaling law 的參數變化情況(相關性甚至強於增加詞彙量的設置)。

圖 6 則是實證中找到的反例,這表明當句法性質變化範圍很大(表 5)但這些數據集的最終 gzip 可壓縮率一樣時,Scaling law 參數並不會有顯著變化。

儘管在這個同等詞彙案例中並未觀察到圖 4 中那樣的相交行爲,但 α 的斜率依然比 β 陡(A 也比 B 陡),這說明隨着 gzip 可壓縮率增大,有同樣的偏向數據的現象。

因此,可以說這些結果表明:Scaling law 依賴於訓練數據,而 gzip 可壓縮率可以很好地預測數據複雜度對擴展性質的影響。