探究詞表選擇對語言模式訓練的影響:一項具有突破性的研究

王林
發布: 2023-10-04 14:25:01
轉載
1369 人瀏覽過

語言模型受不同詞表的影響有哪些?如何平衡這些影響?

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

#在未來,研究人員計劃發布程式碼、預訓練模型、指令調整模型和微調資料集

#然而,由於缺乏GPU贊助商(這是一個免費的開源專案),為了降低成本,研究者目前沒有繼續進行下去,儘管還有進一步完善研究內容的空間。在預訓練階段,這16個模型需要在8個GPU上累積運行147天(單一GPU需要使用1,176天),成本為8,000美元

研究結果可總結為:

  • 編碼方式上,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模式會表現得更好(因為它不那麼複雜),儘管字詞比(即字符與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 模式之後,會帶來明顯的負面影響。在 SMLQA 上,50256-strict-oneword-nocapcode 得分為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 的意思並沒有太大困難。也就是說,與平衡模型相比,一致性模型在語法準確性方面更高,語法錯誤更少。綜合考慮,研究者建議大家使用一致性模式。嚴格模式只能在停用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模型。造成這種情況的原因可能是這種風格的範例不夠多,或者在微調資料集中有太多的問答對。或者,這只是一個不太理想的基準測試

對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(6-consistent參數為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次迭代才能達到最大的學習能力。造成這種情況的原因很簡單,一是預算問題,二是收斂點的不確定性

小模型的結果:

探究詞表選擇對語言模式訓練的影響:一項具有突破性的研究

小模型的皮爾森相關性:

探究詞表選擇對語言模式訓練的影響:一項具有突破性的研究

小模型的結論:

#重寫後的內容:在詞彙量為32,000時,達到了最佳的詞彙量水準。在8,000到32,000的詞彙量增加階段中,增加詞彙量可以提高模型的準確度。然而,當詞彙量從32,000增加到50,257時,模型的總參數也相應增加,但對準確度的提升僅為1%。超過32,000後,增益迅速減少

糟糕的分词器设计会对模型的准确性产生影响,但不会影响语法的正确性或语言的多样性。在参数范围为9000万至1.25亿之间,语法规则更复杂的分词器(例如对应多个词、词和标点符号组合的标记、capcode编码标记以及减少总词汇量)在真值基准上的表现较差。然而,这种复杂的分词器设计并没有对生成文本的语言多样性或语法正确性产生显著的统计学影响。即使是一个紧凑的模型,如参数为9000万的模型,也能有效地利用更复杂的标记。更复杂的词汇需要更长的学习时间,从而减少了获取与基本事实相关信息的时间。由于这些模型都没有经过完整的训练,因此进一步训练以缩小性能差距的潜力还有待观察

重新写成中文: 3. 验证损失不是比较使用不同分词器模型的有效指标。验证损失与给定分词器的字词比(每个标记对应的平均字符数)具有非常强的相关性(0.97 皮尔逊相关性)。要想比较分词器之间的损失值,测量相对于字符而非标记的损失可能更有效,因为损失值与每个标记对应的平均字符数成正比

4. F1分数不适合作为评估语言模型的指标,因为这些语言模型是被训练成生成可变长度的回应(通过文本结束标记来表示完成)。这是因为文本序列越长,F1公式的惩罚越严厉。F1评分倾向于产生较短的回应模型

所有的模型(从90M参数开始)以及所有被测试的分词器(大小从8000到50257不等)都证明了它们通过微调能够产生语法连贯的答案的能力。尽管这些答案往往是不正确的或幻觉的,但它们都相对连贯,并展示了对上下文背景的理解能力

当嵌入大小增加时,生成文本的词汇多样性和语法准确性显著增加,并且与字词比呈微微的负相关。这意味着,具有较大字词比的词汇会使学习语法和词汇多样性稍微困难一些

7. 在调整模型参数大小时,字词比与 SMLQA(Ground Truth)或 SQuAD(Information Extraction)基准之间没有统计学上显著相关性。这意味着具有更高字词比的分词器不会对模型的性能产生负面影响。

与“平衡”的相比,“一致”的类别在SMLQA(Ground Truth)基准上表现似乎稍好,但在SQuAD(信息提取)基准上则差得多。虽然还需要更多的数据来证实这一点

探究詞表選擇對語言模式訓練的影響:一項具有突破性的研究

具有 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%的單字 token 和20%的多字 token

以上是探究詞表選擇對語言模式訓練的影響:一項具有突破性的研究的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板