一般而言,訓練神經網路耗費的運算量越大,其效能就越好。在擴大計算規模時,必須要做個決定:是增加模型參數量還是提升資料集大小 —— 必須在固定的計算預算下權衡這兩項因素。 增加模型參數量的好處是可以提高模型的複雜度和表達能力,從而更好地擬合訓練資料。然而,過多的參數可能導致過度擬合,使得模型在未見過的數據上表現不佳。 另一方面,擴大資料集大小可以提高模型的泛化能力,減少過度擬合問題。
我們告訴你們:只要能適當分配參數和數據,就能在固定運算預算下達到效能最大化。先前已有不少研究探索過神經語言模型的Scaling law,而這些研究通常得出的結論是參數和訓練token數量應一比一地擴展。
但是,先前的語言模型 Scaling law 研究都是基於在散亂的網路文字上訓練的 Transformer 所得到的。這是一個非常特定的資料分佈,因此我們自然會問:基於這樣的網路文字資料集所得到的 Scaling law 是否可以泛化到其它分佈?
除了目前的語言模型(即Chinchilla)只是針對網路文字資料的具體案例,而背後還有一個基於訓練資料屬性更廣泛的Scaling law。考慮到提升數據品質能顯著提升語言模型的性能,並強化學習的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 是標準的上下文無關語法(CFG)的擴展,即在生成規則中關聯了機率,從而能以可量化的方式表徵語言的模糊性和可變性。這些語法會產生樹,其中每個節點都表示一個句法類別,每條邊則表示用於產生句子的生成規則。根據 PCFG 產生句子時,會以機率方式取樣應用產生規則的序列,直到該樹的所有葉節點都是端點(實際的詞彙 token)。
我們可以控制 PCFG 的句法性質,以自然方式調節文本資料集的複雜度。具體來說,PCFG 建立函數可接收的參數包括:端點的數量、非端點的資料、產生規則右側的最大長度、任何非端點允許的生成規則的最大數量(如果這個值為1,則給定的非端點將始終得到同樣的右側)。直覺而言,以上每個值的成長都會導致句法複雜度增加。
為了基於上述參數建立PCFG,對於每個端點,都隨機選取其產生數量(RHS 選項)、這些產生的每個長度,透過從端點和非端點隨機取樣來實例化生成規則,並為其分配一個機率(根據非端點的總RHS 選項而進行了歸一化)。然後,收集所有為全部非端點產生的生成規則,並使用基於 NLTK 建構的 PCFG 軟體包實例化一個語法。
再使用該語法(在給定限制下隨機建立的)來機率式地取樣句子,以建立 token 序列資料集。為了後面更容易比較在不同語法(產生不同平均長度的句子)上的訓練情況,他決定將句子採樣到同等 token 數量的文檔中。持續基於語法採樣句子,直到填滿上下文長度,如有溢出,則直接截斷句子。
句子由僅為整數的端點構成,因此可以被視為語言模型的token ID;再使用未被使用的整數0(可有效對應於自然語言中的句號)將句子連接起來。澄清一下,這裡不是產生「看起來」像自然語言的字串再進行 token 化 ——PCFG 是直接產生 token ID 本身的序列。現在,可以根據 6 組初始語法限制產生 6 個有不同複雜度的 token 序列資料集了。
為了估計產生資料集以及真實資料集的複雜度,Rohan Pandey 選擇使用一種壓縮演算法gzip。
gzip 的一個優點是已有很好的理論研究基礎,它們顯示:可壓縮率(compressibility)與熵成反比,而熵與句法複雜度成正比。具體來說,針對資料集中 1000 個 token 構成的每個 token 序列,使用 gzip 併計算壓縮後資料與原始資料的大小(位元組數)之比。
然後,計算可壓縮率的中位數和標準差,確認有更高句法複雜度的語法會得到更難壓縮的資料集。
表 1 列出了每個語法的句法參數和測得的壓縮率。
可以觀察到,隨著非端點(語法類別)、端點(token)、右側選項和右側長度的增長,gzip壓縮率也會成長,即變得更難壓縮。
圖 1 繪出了這些資料集以及自然語言和程式碼資料的情況。
可以看到,在複雜度方面,某些PCFG 資料集與程式碼資料相近(易於壓縮的部分),而有些則與自然語言相近。
為了確定資料集的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 並調查其擬合參數。
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 可壓縮率可以很好地預測數據複雜度對擴展性質的影響。
以上是不同資料集有不同的Scaling law?而你可用一個壓縮演算法來預測它的詳細內容。更多資訊請關注PHP中文網其他相關文章!