我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
在研究 Transformer 模型時,我們往往專注於它們的架構以及用來訓練它們的數據集,本書涵蓋了原始 Transformer、BERT、RoBERTa、ChatGPT、GPT-4、PaLM、LaMBDA、DALL-E 等,此外,書中還回顧了幾個基準任務和數據集,我們已經微調了一個類似 BERT 的模型,並訓練了一個 RoBERTa 的 Tokenizer,使用這些 Tokenizer 來編碼數據,我們還打開了黑箱,並分析了 Transformer 模型的內部運作。
然而,我們並未深入探討 Tokenizer 所扮演的關鍵角色,也沒有評估它們如何影響我們構建的模型,在本章中,我們將探討一些 Tokenizer 可能阻礙或提升 Transformer 模型性能的問題,不要僅從表面上看待 Tokenizer,您可能擁有特定的詞彙,例如,高級醫學術語,而這些詞彙可能會被通用 Tokenizer 不當處理。
我們將從介紹一些與 Tokenizer 無關的最佳實踐開始,來衡量 Tokenizer 的質量,我們將從 Token 的角度描述數據集和 Tokenizer 的基本指導原則,接著,我們將使用 Word2Vec Tokenizer 來展示 Tokenizer 的某些潛在局限性,並描述我們在任何分詞方法中面臨的問題,這些局限性將通過一個 Python 程式來說明,我們將通過探索詞級和子詞級 Tokenizer 來繼續我們的研究。
我們將從句子和詞語 Tokenizer 開始介紹,這些 Tokenizer 提供了有價值的自然語言處理工具,然而,它們在 Transformer 模型訓練中並不如更高效的子詞 Tokenizer,因此,我們將繼續介紹適用於 Transformer 模型的更高效的子詞 Tokenizer。