Zubnet AI學習Wiki › 詞彙表
基礎

詞彙表

別名:詞表、Token 詞彙表

模型能夠辨識和產生的固定 token 集合。詞彙表由分詞器在訓練期間構建,通常包含 32K 到 128K 個條目 — 常見詞彙、子詞片段、單個字元和特殊 token。模型處理的任何文本都必須能表達為此詞彙表中的 token 序列。不在詞彙表中的 token 會被拆分為更小的片段。

為什麼重要

詞彙表決定了模型能「看到」什麼。主要在英語上訓練的詞彙表將高效處理英語(每個單詞一個 token),但可能將中文、阿拉伯語或程式碼分割成許多小 token(更昂貴、更慢、上下文更少)。詞彙表設計是模型開發中最重要但最少被討論的決策之一。

深度解析

構建詞彙表:分詞器演算法(通常是 BPE)從單個位元組或字元開始,迭代合併最頻繁的配對。經過 32K–128K 次合併後,你會得到一個詞彙表,其中常見詞彙是單一 token(「the」、「and」、「function」),而罕見詞彙被分割為子詞片段(「un」+「common」、「pre」+「process」+「ing」)。特殊 token 如 <BOS>(序列開始)、<EOS>(結束)和 <PAD>(填充)被明確添加。

大小權衡

更大的詞彙表壓縮文本更好(每句更少的 token = 更便宜,能放入更多上下文),但會增加模型的嵌入表大小。一個 128K 詞彙表加上 4096 維嵌入僅用於 token 表就增加了約 5 億個參數。對於 7B 模型,這是總參數的 7%,僅用於將 token 映射到向量。對於 1B 模型,這將是 50%。這就是為什麼較小的模型傾向使用較小的詞彙表。

多語言詞彙表

詞彙表的語言覆蓋取決於其訓練語料庫。Llama 的早期分詞器主要在英語上訓練,將每個中文字元表示為 3–4 個 token,使中文推論比英語貴 3–4 倍。Llama 3 的分詞器在更均衡的多語言資料上訓練,大幅改善了非英語效率。這是一個可解決的問題,但需要刻意的努力 — 預設值是英語主導的。

相關概念

← 所有術語
← 詞嵌入 語意搜尋 →
ESC