English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

guest
1 / ?
back to lessons

單詞轉數字

邊境的翻譯員

語言模型從未見過文字。它看到的是整數。分詞器位於邊境檢查站:人類的單詞流入,整數 ID 流出。生成則反轉流程:整數 ID 返回,分詞器渲染文字。


三個工作:


1. 分割。 將字串切割成片段(tokens)。

2. 對應。 為每個片段指派一個來自固定詞彙表的唯一整數 ID。

3. 還原。 在生成時從 ID 重新建構文字。


為什麼用片段,而不是整詞

整詞詞彙表會爆炸式增長。單是英文就有數十萬種形式。更糟的是,用整詞訓練的模型無法處理錯字、新名字或外語片語:任何未見過的詞都會對應到單一 <UNK> 槽位。


子詞元化解決了這個問題。一個常見片段的詞彙可以組成任何單詞,包括訓練期間從未見過的單詞。兩種策略佔主導:BPE(byte pair encoding,位元對編碼)& distributional segmentation(分布分割)。ANDREA 選擇了第二種策略。


Harris vs BPE

為什麼使用子詞

全詞 tokenizer 在罕見單詞 `proporian`(ANDREA-12M 在步驟 43,100 產生的一個單詞)上失敗。命名兩個子詞 tokenizer(BPE 或 Harris)避免而全詞 tokenizer 無法避免的獨特問題。

單詞在何處斷開

Zellig Harris,1955

一位名叫 Zellig Harris 的語言學家注意到了一些現象。在一個單詞內,給定字母序列後跟隨的不同字母數量變化劇烈。在 un 之後,你可以找到數十個字母:a, b, c, d, e ... 而在 unbel 之後,只有極少數字母跟隨:i(然後是 ievable)。


後繼多樣性的激增標誌著可能的語素邊界。在 un(一個前綴)之後,多樣性急劇增加,因為許多詞根可以跟隨。在像 believ 這樣的詞根內部,多樣性保持低位,因為字母之間相互預測。在語素之間的過渡處,多樣性再次激增。


從多樣性激增到片段

在訓練語料庫上運行該偵測器。每個詞彙都會貢獻統計證據。一個分詞器收集在詞素形狀邊界處反覆出現的高頻段:unreprebelievknowingablelytioned


無標籤。 無語言學家手動標記詞素。字母共現的統計量完成工作。


Harris 與 BPE


屬性HarrisBPE
邊界標準後繼多樣性峰值配對頻率
語言形狀語素對齊(前綴、詞根、後綴)頻繁的位元組配對
範例:unbelievablyun + believ + abl + yunb + eli + eva + bly
概括性強(詞根 + 詞綴可重組)較弱(配對不必對齊)

兩者皆產生子詞片段。Harris 片段傾向與語言學家所稱的語素對齊:最小的有意義單位。BPE 片段優化壓縮:最頻繁的位元組配對會被合併,無論意義為何。

分割一個單詞

對單詞 `replayed` 應用 Harris 式推理。提出三個語素分割並以一個短語為每個辯護(其角色:前綴、詞根或後綴)。

三個詞彙層

ANDREA 詞彙的剖析

Harris tokenization 產生一個有三個層的詞彙:


板塊 1:256 基礎位元組。 每個可能的 UTF-8 位元組 (0x00 到 0xFF) 都有自己的 token ID。安全網:語料庫中任何字符,tokenizer 都能表示為位元組序列。永遠不會觸發 <UNK>


板塊 2:N 個語素片段。 透過分布分析發現的常見片段。ANDREA-12M 訓練時 N = 4096;ANDREA-120M 訓練時 N = 8192。每個片段將重複出現的多位元組字串壓縮成單一 token。


板塊 3:1 個 BOS token。 一個特殊標記,置於每個訓練序列的開頭。讓模型學習「此位置無過去」。ANDREA-12M 和 ANDREA-120M 都精確保留一個 ID 給 BOS。


詞彙大小


模型基礎位元組語素片段 (N)BOS詞彙大小
ANDREA-12M256409614353
ANDREA-120M256819218449

256 + N + 1 = 詞彙大小。簡單。可重現。開放。


為什麼位元組塊很重要

位元組後備保證涵蓋範圍。如果模型遇到 日本語 且 tokenizer 沒有日語語素,個別 UTF-8 位元組會將序列傳遞下去。模型在位元組上訓練;罕見腳本的品質取決於容量與曝光度,但沒有輸入會讓 tokenizer 崩潰。

計算詞彙

ANDREA-480M(家族中的第三個模型,未來活動 24 會涵蓋它)計劃在更大的語料庫上訓練 Harris tokenizer,N = 16,384 個片段。計算其詞彙大小。顯示公式。然後用一句話解釋為什麼即使 N 增長,位元組 slab 仍維持在 256。

序列開始

為什麼序列需要標記

僅限解碼器的 Transformer 從先前的上下文預測下一個 token。位置 0 沒有先前的上下文。沒有標記的情況下,位置 0 處於邏輯空洞:模型沒有任何東西可以關注。


BOS 解決了空洞。 在訓練期間,每個序列開始處放置一個單一的特殊 token(ID = 256 + N)。模型學習:


- 「當你看到 BOS 時,預測自然文本的可能第一個 token。」

- 「當你看到 BOS 後跟一個單詞時,那個單詞是序列的開始,而不是延續。」


一個 Token,多種用途


BOS 會出現在:


- 訓練時: 預置於餵入模型的每個文字區塊之前。

- 推論時: 預置於提示之前,讓模型看到熟悉的「全新開始」訊號。

- 邊界標記: 在某些管線中,作為串聯文件之間的分隔符。


ANDREA 僅為 BOS 保留一個 ID。沒有 EOS,沒有 PAD,沒有詞彙所需之外的特殊 token。簡約仍是 permacomputer 的核心價值:每個 token 都必須證明其位置的價值。


活動 3 繼續

活動 3 (grow_a_language_model_tokenizer_diet) 涵蓋當 N 過大或 tokenizer 語料庫與訓練語料庫偏離時會發生什麼。ANDREA-12M 浪費了 63.6% 的詞彙;ANDREA-120M 修復了它。繼續閱讀。

僅 BOS 的權衡取捨

反思 ANDREA 做出的設計選擇:僅一個特殊 token (BOS),沒有 EOS,沒有 PAD。命名此選擇帶來的一個權衡取捨。權衡取捨可以是優勢(更簡單的引擎、更少的浪費槽位)或限制(某些訓練技巧需要額外 token)。一句話即可。