精品国产av一区二区三区,国产av一区二区三区,丰满少妇大乳高潮在线,9lporm自拍视频区九色

當前位置:首頁 > 最新資訊 > 行業資訊

詞表的選擇如何影響語言模型訓練?這可能是目前見過最好的詞表選擇研究

不同詞表對語言模型有哪些影響?如何權衡這些影響?

在最近的一項實驗中,研究者對16個語言模型使用不同的語料進行了預訓練和微調。這次實驗使用了NanoGPT,一種小規模的架構(基于GPT-2 SMALL),訓練了12個模型,NanoGPT網絡架構的配置為:12個注意力頭、12層transformer,詞嵌入維度為768,進行大約400,000次迭代(大約10個epoch)。然后在GPT-2 MEDIUM上訓練了4個模型,GPT-2 MEDIUM架構的設置為16個注意力頭、24層transformer,詞嵌入維度為1024,并進行600,000次迭代。所有模型均使用NanoGPT和OpenWebText數據集進行預訓練。微調方面,研究者使用了baize-chatbot提供的指令數據集,分別在兩類模型里補充了額外的20,000和500,000個「字典」條目。

未來,研究者計劃發布代碼、預訓練模型、指令調整模型和微調數據集。

不過,這16個模型僅在預訓練階段就要在8個GPU上累計運行147天(單個GPU要使用1,176天),成本為8,000美元。因為沒有GPU贊助商(這是一個免費的開源項目),出于成本考慮,雖然還存在進一步對研究內容完善的空間,但是研究者目前沒有繼續進行下去。

研究結果可總結為:

編碼方式上,TokenMonster(550256-strict-nocapcode)詞表在所有指標上都比GPT-2 Tokenizer和tiktoken p50k_base表現更好。

最佳詞表規模為32000。

詞表越簡單,模型收斂得越快,但收斂后不一定會產生更好的結果。

字詞比(每個token對應的平均字符數)增加,不會單獨對模型質量產生負面影響。

單個token對應多個單詞的詞表對SMLQA(真值)基準有5%的負面影響,但對字詞比要高13%。

帶有Capcode的詞表的話,模型需要更長的時間來學習,但一旦模型收斂,似乎不會在任何方向上會對SMLQA(真值)或SQuAD(Data Extraction)基準產生影響。

在比較不同的分詞器時,驗證損失和F1都是無意義的指標。

分詞器的缺陷和復雜性對模型學習事實能力的影響大于對模型學習語言能力的影響。

根據實驗結果,englishcode-32000-consistent的結果是最好的。然而,如上所述,當使用在單個token對應多個單詞的TokenMonster時,SMLQA(Ground Truth)的準確性和字詞比之間會存在一種權衡,這增加了學習曲線的斜率。研究者堅信,通過強制 80% 的 token 對應一個單詞,20% 的 token 對應多個單詞,可以最大限度地減少這種權衡,實現 “兩全其美” 的詞表。研究者認為這種方法在性能上與 one-word 詞表相同,同時字詞比還能提高約 50%。

再詳細地解釋一下 “分詞器中的缺陷和復雜性對模型學習事實的能力的影響大于對其語言能力的影響” 這句話的含義:

這種現象是訓練過程中發現的一個有趣的特征,從模型訓練的工作方式去思考,也能說得通。研究者沒有證據證明其推理是合理的。但從本質上講,因為在反向傳播過程中,語言的流暢性比語言的事實性(它們是極其微妙和依賴上下文的)更容易糾正,這意味著分詞器效率若有任何提高,與事實性無關,都會產生直接轉化為信息保真度提高的連鎖反應,如在 SMLQA(Ground Truth)基準中所見。簡單地說:一個更好的分詞器就是一個更真實的模型,但不一定是一個更流暢的模型。反過來說:一個擁有低效分詞器的模型仍然能學會流利地寫作,但流利性的額外成本會降低模型的可信度。

詞表規模的影響

在進行這些測試之前,本文研究者認為 32000 是最佳詞表規模,實驗結果也證實了這一點。50256-balanced 的性能僅比 SMLQA(Ground Truth)基準上的 32000-balanced 好 1%,但是模型的尺寸卻大了 13%。理想情況下,本文在基于 MEDIUM 的多個模型中,通過分別在規模為 24000、32000、50256 和 100256 的詞表中進行如上所述的二八開劃分方法,來明確證明這一觀點。

優化模式的影響

研究者對 TokenMonster 下特定的三種優化模式 balanced, consistent 和 strict 進行了測試。不同的優化模式會影響標點符號以及 capcode 與單詞 token 的組合方式。研究者最初預測 consistent 模式會表現得更好(因為不那么復雜),雖然字詞比(即 character 與 token 的比值)會略低。

實驗結果似乎證實了上述猜想,但是研究者也觀察到了一些現象。首先,在 SMLQA(Ground Truth)基準上,consistent 模式似乎比 balanced 模式的效果好約 5%。然而,consistent 模式在 SQuAD(Data Extraction)基準上的表現明顯較差(28%)。但是,SQuAD 基準表現出很大的不確定性(重復運行的結果不同),也不具有說服力。研究者并沒有對 balanced 與 consistent 測試至收斂,所以這可能只代表 consistent 模式更容易學習。事實上,consistent 可能在 SQuAD(數據提取)上做得更好,因為 SQuAD 更難學習,也不太可能產生幻覺。

這本身就是一個有趣的發現,因為它意味著將標點符號和單詞合并到一個 token 中并不存在明顯的問題。迄今為止,所有其他分詞器都認為標點符號應與字母分開,但從這里的結果可以看出,單詞和標點符號可以合并到一個 token 中,不會有明顯的性能損失。50256-consistent-oneword 也證實了這一點,這個組合與 50256-strict-oneword-nocapcode 的性能相當,而且優于 p50k_base。50256-consistent-oneword 將簡單的標點符號與單詞 token 合并在一起(而其他兩個組合則不是這樣)。

在此之后,啟用 capcode 的 strict 模式會帶來顯著的不利影響。50256-strict-oneword-nocapcode 在 SMLQA 上得分 21.2,在 SQuAD 上得分 23.8,而 50256-strict-oneword 的得分分別為 16.8 和 20.0。原因很明顯:strict 優化模式阻止 capcode 與單詞 token 的合并,導致需要更多的 token 來表示相同的文本,直接結果就是字詞比降低了 8%。事實上,比起 strict,strict-nocapcode 更類似于 consistent。50256-consistent-oneword 和 50256-strict-oneword-nocapcode 在各個維度的指標中都幾乎相等。

最終的結論是,在大多數情況下,模型在學習包含標點符號和單詞的 token 的含義方面沒有任何困難。也就是說,與 balanced 模型相比,consistent 的語法準確性更高(語法錯誤更少)。綜合考慮,研究者建議大家使用 consistent 模式。strict 只能在禁用 capcode 的情況下使用。

對語法準確性的影響

如上所述,與 balanced 模式相比,consistent 模式的語法準確性更高(語法錯誤更少)。這反映在字詞比和語法之間存在非常輕微的負相關,如下圖所示。除此之外,最值得注意的一點是,同樣與 TokenMonster 的 50256-strict-oneword-nocapcode (98.6% 和 98.4%)相比,GPT-2 分詞器和 tiktoken p50k_base 的語法結果都很糟糕(分別為 98.1% 和 97.5%)。研究者最初認為這只是巧合,但多次采樣都會得到相同范圍的結果。至于原因是什么尚不清楚。

圖片

對 MTLD 的影響

MTLD 用于表示生成樣本文本的語言多樣性。它似乎與 n_embed 參數高度相關,而與詞匯量大小、優化模式或每個 token 的最大字數等特征無關。這一點在 6000-balanced 模型(n_embd 為 864)和 8000-consistent 模型(n_embd 為 900)中表現得尤為明顯。

在中型模型中, p50k_base 的 MTLD 最高,為 43.85,但語法得分也最低。造成這種情況的原因尚不清楚,但研究者猜測可能是訓練數據的選擇有些奇特。

對 SQuAD 的討論

SQuAD 基準測試的是模型從一段文字中提取數據的能力,具體做法是提供一段文字,然后提出一個問題,答案需包含在該段文字中。測試結果沒有太大意義,沒有明顯的模式或相關性,包括模型總的參數。事實上,擁有 9100 萬參數的 8000-balanced 模型在 SQuAD 中的得分要高于擁有 35400 萬參數的 50256-consistent-oneword。造成這種情況的原因也許這種風格的例子不夠多,也許在指導微調數據集中有太多的 QA 對。或者,這只是一個不太好的基準。

對 SMLQA 的討論

SMLQA 基準通過提出具有客觀答案的常識性問題來測試 "真值",例如 "哪個國家的首都是雅加達?" 和 "《哈利 - 波特》系列叢書是誰寫的?"。

值得注意的是,參考用的分詞器 —— GPT-2 Tokenizer 和 p50k_base 在該基準測試中表現相當出色。研究者最初以為浪費了幾個月的時間和幾千美元,卻證明了 tiktoken 比 TokenMonster 有更高質量的性能。但事實證明,問題與每個 token 對應的字數有關。這一點在 "中等"(MEDIUM)模型中體現得最為明顯,如下面的圖表所示。

圖片

圖片單字詞表的性能略好于 TokenMonster 默認的每個 token 對應多個字的詞表。

另一個重要的觀察結果是,當詞匯量低于 32,000 個時,即使調整模型的 n_embd 參數以彌補模型規模的縮小,詞匯量也會直接影響真值。這是有悖直覺的,因為研究者本以為 n_embd 為 864 的 16000-balanced(參數為 1.2134 億)和 n_embd 為 900 的 8000-consistent(參數為 1.2386 億)會比 n_embd 為 768 的 50256-consistent(參數為 1.2359 億)做得更好,但事實并非如此 — 兩者的表現都差得多(13.7 和 15.1 對比 50256-consistent 的 16.4)。不過,這兩個 “調整后” 的模型都接受了相同的時間來訓練,這恰好導致預訓練的次數顯著減少(盡管時間相同)。

具有 12 層注意力頭、12 層 transformer 層的小模型

研究者在默認的 NanoGPT 架構上訓練了 12 個模型,該架構基于 12 個注意力頭和 12 層的 GPT-2 架構,嵌入參數大小為 768。這些模型都沒有訓練到收斂,通俗地說,就是沒有訓練到最大的學習能力。模型的訓練經歷了 400,000 次迭代,而要想具有最大學習能力似乎需要 600,000 次迭代。造成這種情況的原因很簡單,一是預算問題,二是收斂點的不確定性。

小模型的結果:

圖片

小模型的皮爾遜相關性:

圖片

小模型的結論:

1. 32,000 是最佳詞匯量。從詞匯量 8,000 到 32,000 的階段中:增加詞匯量可以提高模型的真值準確度。將詞匯量從 32,000 增加到 50,257 時,模型的總參數也相應增加,但對真值準確度的提高只有 1%。超過 32,000 后,收益迅速減少。

2. 糟糕的分詞器設計會影響模型的正確性,但不會影響語法正確性或語言多樣性。在 90M - 125M 的參數范圍內,語法規則更復雜的分詞器(如 token 對應對應多詞、詞和標點符號的組合 token、capcode 編碼 token 和減少總詞匯量)在真值基準上的表現比簡單的分詞器要差。不過,分詞器設計的這種復雜性并沒有對生成文本的語言多樣性或語法正確性產生顯著的統計學影響。即使是一個緊湊的模型,如參數為 9000 萬的模型,也能有效地利用更復雜的 token。更復雜的詞匯需要更長的學習時間,從而減少了獲取與基本事實相關信息的時間。由于這些模型都沒有經過完整的訓練,因此進一步訓練以縮小性能差距的潛力還有待觀察。

3. 驗證損失不是比較使用不同分詞器的模型的有效指標。驗證損失與給定分詞器的字詞比(每個 token 對應的平均字符數)具有非常強的相關性(0.97 皮爾遜相關性)。要想比較分詞器之間的損失值,測量相對于字符而非 token 的損失可能更有效,因為損失值與每個 token 對應的平均字符數成正比。

4. F1 分數不是評估語言模型的合適指標,這些語言模型被訓練成生成可變長度的響應(用文本結束 token 來表示完成)。這是由于文本序列越長,F1 公式的懲罰越嚴重。F1 評分傾向于產生較短響應的模型。

5. 所有模型(從 90M 參數開始),再加上所有測試的分詞器(大小從 8000 到 50257 不等),都證明了對其進行微調以產生語法連貫的答案的能力。雖然這些反應往往是不正確的或幻覺的,但都較為連貫,并表現出對上下文背景的理解能力。

6. 當 embedding 大小增加時,生成文本的詞匯多樣性和語法準確性顯著增加,并且與字詞比呈微微的負相關。這意味著,具有較大字詞比的詞匯會使學習語法和詞匯多樣性稍微困難一些。

7. 在調整模型參數大小時,字詞比與 SMLQA(Ground Truth)或 SQuAD(Information Extraction)基準之間沒有統計學上顯著相關性。這意味著具有更高字詞比的分詞器不會對模型的性能產生負面影響。

8. 與 “balanced” 相比,“consistent” 類的詞表在 SMLQA(Ground Truth)基準上的表現似乎稍好,但在 SQuAD(Information Extraction)基準上則差得多。盡管還需要更多的數據來證實這一點。

圖片

具有 16 層注意力頭、24 層 transformer 層的中模型

在對小型模型進行訓練和基準測試后,研究者明顯發現,衡量的結果反映的是模型的學習速度,而不是模型的學習能力。此外,研究者沒有優化 GPU 的計算潛力,因為使用的是默認的 NanoGPT 的參數。為了解決這個問題,研究者選擇使用有著 50257 個 token 的分詞器及中等語言模型,對四種變體進行了研究。研究者將 batch 的大小從 12 調整到 36,并將 block 的大小從 1024 縮減到 256,確保充分利用了 24GB GPU 的 VRAM 功能。然后進行了 600000 次迭代,而不是小模型中的 400000 次。每種模型的預訓練平均需要 18 天多一點的時間,是小模型需要的 6 天的三倍。

對模型進行收斂訓練確實顯著降低了更簡單詞匯表和更復雜詞匯表之間的性能差異。SMLQA(Ground Truth)和 SQuAD(Data Extration)的基準結果非常接近。主要區別在于 50256-consistent 有著比 p50k_base 高 23.5% 的字詞比的優勢。不過,對于每個 token 對應多個單詞的詞表來說,真值的性能代價較小,不過這可以用我在頁首討論的方法來解決。

中模型的結果:

圖片

在 560000 次迭代之后,所有模型都開始收斂,如下圖所示:

圖片

后續展望

下一階段將使用 englishcode-32000-consistent 來訓練和基準測試 MEDIUM 的模型,該詞匯表具有 80% 的單詞 tokentoken 和 20% 的多詞 token。

猜你喜歡