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