最新發現!每參數3.6比特,語言模型最多能記住這么多
語言模型到底能記住多少信息?Meta、DeepMind、康奈爾大學和英偉達的一項測量結果顯示:每個參數大約 3.6 比特。一旦達到這個極限,它們就會停止記憶并開始泛化。
長期以來,記憶與泛化之間的模糊性一直困擾著對模型能力和風險的評估,即區分其輸出究竟源于對訓練數據的「記憶」 (對其訓練數據分布的編碼程度) ,還是對潛在模式的「泛化」理解 (將理解擴展到未見過的新輸入)。 這種不確定性阻礙了在模型訓練、安全、可靠性和關鍵應用部署方面的針對性改進。
這就好比我們想知道一個學生考試得了高分,是因為他真的理解了知識點(泛化),能夠舉一反三,還是僅僅因為他把教科書上的例題和答案都背下來了(記憶)。
基于此,研究團隊提出了一種新方法,用于估計一個模型對某個數據點的「了解」程度,并利用該方法來衡量現代語言模型的容量。
- 論文標題:How much do language models memorize?
- 論文地址:https://arxiv.org/pdf/2505.24832
研究團隊從形式上將記憶分為兩個組成部分:
- 非預期記憶 —— 模型包含的關于特定數據集的信息;
- 泛化 —— 模型包含的關于真實數據生成過程的信息。
通過消除泛化部分,可以計算出給定模型的總記憶量,從而估計出模型容量:測量結果估計,GPT 系列模型的容量約為每個參數 3.6 比特。
研究團隊在規模不斷增大的數據集上訓練語言模型,觀察到模型會持續記憶,直到其容量飽和,此時「頓悟」(grokking)現象開始出現,非預期記憶隨之減少,模型開始泛化。也就是說,在海量數據上訓練的語言模型根本不可能記住所有訓練數據,因為根本沒有足夠的容量。
研究團隊訓練了數百個參數量從 50 萬到 15 億不等的 Transformer 語言模型,并由此提出了一系列關于模型容量、數據規模與成員推斷之間關系的 scaling law。
研究團隊還借鑒了「信息論之父」 Claude Shannon 1953 的一項重要工作《The Lattice Theory of Information》的一些理論。該論文將他早期關于信息論中熵和信道容量的概念,與數學中的格理論聯系起來,為理解和處理復雜信息系統提供了新的視角。
這項研究激發了社區對蒸餾、量化、模型安全等方面的思考。
兩種「記憶」:非預期記憶和泛化
在論文中,作者希望找到一個方法來量化模型對特定數據點的記憶程度,并且這種記憶定義要滿足以下幾點:
- 與泛化區分開;
- 能夠針對具體的數據樣本;
- 不依賴于具體的訓練算法;
統計學視角下的記憶定義
作者從信息論的角度出發,利用「互信息(Mutual Information)」來定義記憶。
在論文中,大寫字母(例如 X、Θ)用來指代隨機變量,小寫字母用來指代隨機變量的實例(例如 x ~ X 和 θ ~ Θ)。
信息論已經為隨機變量發展出了被廣泛理解的信息概念。對于隨機變量 X,通常使用 H (X),即 X 的熵,來定義 X 中存在的信息量。此外,對于兩個不同的隨機變量 X、Y,可以將 X | Y 定義為在固定 Y 后 X 中剩余的不確定性。定義了這個量之后,現在可以通過從總信息中減去剩余信息來測量 X 和 Y 之間的互信息:I (X, Y) = H (X) ? H (X | Y)。
現在假設有一個機器學習 pipeline。作者有一個關于底層模型的先驗 Θ,它捕獲了作者的數據集分布 X。作者有一個學習算法 L,它將來自 X 的樣本映射到訓練好的模型 。為了理解有多少關于 X 的信息存儲在
中,作者可以使用互信息的概念:
注意這捕獲了存儲在 中的關于 X 的所有信息。正如前面所討論的,記憶的概念需要同時考慮泛化。因此,當測量非預期記憶時,作者只對 X | Θ 中存在的信息感興趣,這是在固定 Θ 后 X 中剩余的不確定性。
因此,可以將非預期記憶化定義為:
然后泛化(或預期記憶)應該是:
現在作者已經定義預期和非預期記憶的概念,作者將注意力轉向實際測量它們。讓作者首先陳述一個能夠非預期記憶的命題:
命題 1(非預期記憶的 Super-additivity)。 假設 X = (X_1, . . . , X_n) 是 n 個獨立同分布樣本的數據集。作者有:
這個命題表明,為了測量數據集級別非預期記憶的下界,可以將每個樣本的記憶相加。另一方面,訓練模型本身的信息內容的熵作為非預期記憶的上界。這個命題的另一個含義是,非預期記憶應該隨數據集大小 scale,但不能超過模型的總容量。
用 Kolmogorov 復雜度測量非預期記憶
到目前為止,論文對記憶和泛化的定義使用的是基于「熵」的信息概念。這意味著該定義只能用于隨機變量。這在測量記憶方面帶來了很大挑戰。在記憶定義中,所有的變量都是單例。作者有一個單一的底層模型 θ,作者有一個單一的數據集 x = (x_1, . . . , x_n),作者有一個單一的訓練模型 。使用單個樣本測量底層變量的熵(更不用說條件熵)是不可能的。
為此,論文轉向另一種基于壓縮的信息概念,然后展示這種概念如何密切近似上面定義的記憶概念。Kolmogorov 復雜度將字符串 x 的信息內容定義為 H^K (x),即 x 在給定計算模型中的最短表示長度。類似地,作者可以將剩余信息 x | θ 定義為當作者有 θ 作為參考時 x 的最短表示。而 x | θ 的信息內容,記為 H^K (x | θ),是這種描述的長度。然后,作者可以用類似的方式定義互信息:
定義 2(Kolmogorov 復雜度)。設 f 是一個任意的計算模型,它接受一組輸入并返回一個輸出(例如通用圖靈機)。相對于計算模型 f 的 x 的最短描述定義為 。同樣,x 相對于另一個字符串 θ 的 Kolmogorov 復雜度定義為
。論文通過
定義 x 和 θ 之間的 Kolmogorov 互信息。假設輸入是比特串,|p | 是輸入的比特長度。
定義 3(Kolmogorov 記憶)。設 θ 是一個近似數據真實分布的參考模型, 是在數據集 x = (x_1, . . . , x_n) 上訓練的模型。對于每個 x_i,論文將 x_i 在
中的記憶定義為
。論文還將記憶的預期與非預期變體定義為:
已知 Kolmogorov 復雜度和 Shannon 熵之間存在聯系。這些結果指出了兩個概念之間的概念聯系,并暗示 。有趣的是,這意味著論文中的 Kolmogorov 記憶概念密切近似 Shannon 記憶。
命題 4。設 X = (X_1, . . . , X_n) 是由真實模型 θ 參數化的獨立同分布數據集分布。設 L 是將 X 映射到 的訓練算法。假設
且
。那么有
對于某個獨立于 θ、?、?' 和 n 的常數 ε。此外,有尾界:
用似然度估計 Kolmogorov 復雜度
確定了 Kolmogorov 記憶概念后,現在描述如何在不同設置中估計 H^K。注意,Kolmogorov 復雜度的精確計算是已知不可計算的(其判定版本是不可判定的)。然而,仍然可以使用最佳可用壓縮方案來近似它。在論文中, 作者總結了如何近似定義中的每個項。
模型記憶容量
非預期記憶為作者提供了一種有原則的方法,用以衡量模型 θ 對某一數據點 x 所掌握的確切比特數。
如果將數據集中每個數據點的信息加起來,就可以衡量模型對整個數據集所掌握的總比特數。并且,在由于每個數據點完全獨立而無法進行泛化的情況下,可以通過對每個數據點的非預期記憶進行求和來估計給定模型 θ 的容量。
定義模型容量
作者首先對特定語言模型 θ 的這種記憶容量概念進行形式化。容量是指在 θ 的所有參數中可以存儲的記憶總量。
定義 5 (容量):設 X 為一個分布, L:X→Θ 為一個學習算法。作者將學習算法 L 的容量定義為:
當達到模型容量時,mem (X,L (X)) 將不再隨數據集大小的增加而增加。在實踐中,作者可以通過在不同大小的 X 上訓練至飽和,并計算最大記憶量來計算容量。
用合成序列測量模型容量
作者測量了 Transformer 語言模型的容量,目標是實例化多個數據集和分布,并在訓練單個模型 θ 時測量它們所產生的記憶量。
然后,取所有數據集上的最大值來近似模型的容量。為了實例化數據集,每個標記都從一個預定義的標記集合中均勻采樣,且與前面的標記無關。
為了近似 ,可以直接計算在訓練好的模型下的熵,以計算以
為條件的數據集的最短描述。將兩者相減,可以近似得到非預期記憶
。由于采樣數據的過程是完全隨機的,因此在
中沒有泛化信息可供存儲,也就是說,
。
觀察到當我們從均勻分布中采樣合成序列時,可以精確地計算它們的香農信息。給定數據集大小 N,構建一個包含 N 個序列的數據集,每個序列包含 S 個標記。給定詞匯表大小 V,可以通過 計算具有這些參數的數據集
的總熵。然后,使用在
下的熵計算
的壓縮形式,以計算編碼長度,并將其用作
的近似值。接著,作者計算
,并將模型容量計算為所有數據集上的最大記憶量。
實驗
實驗結果
圖 2 展示了不同模型規模和數據量下的記憶情況。這樣,便可以將不同數據集規模 (x 軸) 下的非預期記憶量 (y 軸) 進行可視化,并按模型規模 (線條顏色) 分組。研究中觀察到,一旦模型達到其容量上限,便會出現一個明顯的平臺期。當數據集足夠大時,無論數據規模如何,模型的凈記憶量都會達到一個上限。對于容量充足的模型而言,小型數據集會被完全記憶。
文中將每個模型的容量,估計為在所有數據集規模上測得的最大非預期記憶比特數。隨后,在圖 6 中將這一容量與模型規模進行了比較。有趣的是,即便在當前這種小規模實驗中,也能觀察到所測容量(即在所有數據集上測得的最大記憶量)與模型參數數量之間,存在一種非常平滑的對應關系。圖 6 中呈現了這種關系:在當前的實驗設置下,文中所述模型每參數能穩定記憶 3.5 至 3.6 比特的信息。
這印證了先前研究的發現,即事實性信息的存儲量與模型容量成線性關系。文中的估計值略高于 Allen-Zhu & Li (2024) 的結果 —— 他們通過量化方法估計模型每參數約可存儲 2 比特信息。
由于模型是通過梯度下降進行學習的,因此并不能保證找到全局最優解;所以,作者所測量的始終是模型容量的一個下限。作者進一步仔細研究了訓練曲線,以分析一個包含 800 萬參數的語言模型的收斂情況。圖 6 展示了模型在訓練過程中的收斂動態。
可以看到,對于樣本量從 16,000 到 400 萬的各個數據集,其記憶的比特數均在 3.56×10^6 到 3.65×10^6 的范圍內。這表明測量結果在一個數量級內具有穩健性,并且作者認為,即使進行更多的訓練迭代,模型能記憶的信息量也不會有顯著增加。這一發現也印證了作者的假設:即模型的容量與參數數量大致成正比。
其中,兩個最大的數據集(樣本量分別為 400 萬和 800 萬),其收斂后的總記憶量分別為 2.95×10^6 和 1.98×10^6 比特。作者預計,若進行更多輪次的訓練,這些模型所記憶的數據總量將繼續向其容量上限增長。
精度如何影響容量?
一個很自然的問題是:對 α 的估計值,在多大程度上取決于語言模型訓練時所用的精度?
事實上,盡管多數軟件默認采用 32 位精度進行訓練,但近期研究已表明,即使將語言模型量化到每參數不足 2 比特的水平,它們仍能保留大部分原有功用。
鑒于所有其他實驗均在 bfloat16 精度下進行,作者特地在完整的 fp32 精度下重做了這些實驗,以分析其對容量的影響。
結果顯示,對于不同規模的模型,容量均略有提升,α 的平均值也從 3.51 比特 / 參數增加到了 3.83 比特 / 參數。
這一增幅遠不及參數 θ 比特數實際達到的兩倍增長,這表明,當精度從 bfloat16 提升至 float32 時,模型中增加的額外比特,大部分并未被用于原始數據的存儲。
更多信息請參見原文。