今天小編分享的科學經驗:谷歌揭秘大模型不會數r原因:嵌入維度是關鍵,不止分詞器問題,歡迎閱讀。
大模型做奧賽題遊刃有餘,簡單的數數卻屢屢翻車的原因找到了。
谷歌的一項新研究,發現大模型不會數數的原因,并不是簡單的 tokenizer 所致,而是沒有足夠的空間來存儲用于計數的向量。
數出一段話中某個單詞出現的次數,這樣簡單的任務可以難倒許多大模型,GPT-4o、Claude 3.5 也無法幸免。
如果再進一步,想要找到出現頻率最高的一個詞,更是難如登天,即便能蒙對給出的具體數量也是錯的。
有人認為是詞匯的 token 化導致了大模型看到的 " 詞 " 和我們的看法不一致,但論文表明,實際情況并不是這麼簡單。
想數清單詞,嵌入維度要夠大
Transformer 的計數能力與其嵌入維度 d 和詞匯量 m(指詞匯表中詞的數量,非序列長度)的關系密切相關。
詳細的原因,就涉及到了 Transformer 統計詞頻時的機制。
Transformer 通過一種特殊的嵌入方式,利用嵌入空間的線性結構,巧妙地将計數問題轉化為了向量加法。
具體說是将每個詞映射到一個獨特的正交向量上,在這種表示下,詞頻可以通過對這些正交向量求和來簡單地計算。
然而,這種機制的局限性在于,它要求詞匯表中的每個詞都有一個獨立的正交向量表示,因此嵌入維度必須大于詞匯量。
嵌入維度不足時,詞向量就無法保持正交性,詞頻的線性疊加也就無法實現了。
此時 Transformer 要實現計數,可以通過注意力機制(CountAttend)來實現,但需要一個随序列長度 n 線性增長的大型 " 逆轉 MLP" 層。
具體來說,模型首先通過注意力賦予被查詢詞較大的權重,再利用位置編碼将注意力權重提取到值向量的最後一個元素,這個元素實際記錄了被查詢詞的出現頻率的倒數。
這意味着,模型需要一個大小為 O ( n ) 的 MLP 層來計算 1/x 函數(x 為某個詞出現的次數)。
但進一步分析表明,任何常數層 ReLU 網絡都無法在 o ( n ) 的神經元數量下逼近 1/x 函數。
因此,對于固定規模的 Transformer,這種方案無法推廣到任意長度的序列。當序列長度超出訓練集長度時,模型的計數能力會急劇惡化。
長度非主要因素,詞匯表中數量是關鍵
為了驗證這一結論,作者一共進行了兩個實驗。
第一個實驗,是在一個從頭開始訓練的 Transformer 模型上進行的,具體有關參數如下:
使用一個由兩個 Transformer 層、四個注意力頭組成的标準模型;
嵌入維度 d 的取值範圍為 8 到 128;
對每個固定的 d,詞匯量 m 從 5 到 150 變化,分别測試 20 個不同的值;
模型使用 Adam 優化器從零開始訓練,批量大小為 16,學習率為 10^-4,訓練 10 萬步。
訓練和評測數據通過随機采樣生成。首先從大小為 m 的詞匯表中均勻采樣 n 個詞,構成一個長度為 n 的序列。
序列長度 n 設定為 n=10m,平均每個詞出現的次數固定為 10 次,一共使用了 1600 個樣本進行測試。
作者發現,随着詞匯量的增加,模型的計數準确率呈階梯狀下降,臨界點恰好出現在詞匯量超過嵌入維度的時刻。
為了進一步量化模型的計數能力,作者定義了一個指标 m_thr,表示模型的計數準确率下降到 80% 時的臨界詞匯量。
直觀地說,m_thr 反映了在給定嵌入維度下,模型可以 " 承受 " 的最大詞匯量,m_thr 越大說明模型的計數能力越強。
結果顯示,對于計數(QC)和找出最高頻詞(MFC)的任務,m_thr 都随嵌入維度 d 的增大而近似線性增長。
第二個實驗則是在預訓練的 Gemini 1.5 模型上開展,在這個實驗中,作者更關注詞匯量對計數能力的影響。
他們設計了一系列計數任務,每個任務使用不同大小的詞匯表,并把每個詞在序列中出現的平均次數固定。
這意味着,在實驗組當中,詞匯量越大,序列長度也就越長。
作為對照,作者還設定了一個 "Binary Baseline",詞匯表中只有固定為兩個詞,但序列長度與主實驗組相同。
這樣一來,就可以判斷出帶來模型計數誤差的究竟是詞匯量還是序列長度。
實驗結果顯示,随着詞匯量的增加,Gemini 1.5 在計數任務上的平均絕對誤差顯著上升,而 "Binary Baseline" 的誤差要低得多。
這表明,詞匯量的增加,而非序列長度的增長,是導致大模型計數能力下降的主要原因。
不過作者也表示,雖然這項研究一定程度上劃定了大模型計數能力的上下界,但這些界限還不夠緊致,距離理想的結果還有一定差距。
同時,作者也沒有探究增加 Transformer 的層數是否會改變這一結論,需要未來開發新的技術工具才能進一步驗證。
論文地址:
https://arxiv.org/abs/2407.15160