文章目錄
- 01 | Token不是詞:GPT如何切分語言的最小單元?
- 一、什么是 Token?
- 二、Token 是怎么來的?——BPE算法原理
- BPE核心步驟:
- 三、為什么不直接用詞或字符?
- 四、Token切分的實際影響
- 五、中文Token的特殊性
- 六、Token機制的未來方向
- 七、總結
01 | Token不是詞:GPT如何切分語言的最小單元?
副標題:深入BPE算法,理解token的非線性結構意義
一、什么是 Token?
在 GPT 這類語言模型中,token 是模型處理語言的基本單位。它不是傳統意義上的“詞”或“字符”,而是更小的、基于統計規律和語義結構的子詞片段。
示例:
文本內容 | Token 切分 |
---|---|
ChatGPT | Chat, G, PT |
playing | play, ing |
我愛你 | 我, 愛, 你 |
英文可能被分成多個片段;中文一般一個字一個 token。
二、Token 是怎么來的?——BPE算法原理
GPT采用的BPE(Byte Pair Encoding)是一種子詞分詞算法,原本用于壓縮,現在被用來平衡詞與字符的語義表達。
BPE核心步驟:
- 初始化:所有詞拆為單字符;
- 統計頻次:找出最常見的字符對;
- 合并字符對:變成新的token;
- 重復合并,直到構建出固定大小的詞表(如GPT-3為50257個token)。
BPE最終形成的token詞表中,高頻詞可整體保留,低頻詞被拆解重構。
三、為什么不直接用詞或字符?
粒度 | 優點 | 缺點 |
---|---|---|
字符 | 泛化強 | 語義弱 |
單詞 | 語義強 | 新詞不識別 |
子詞(Token) | 平衡泛化與語義 | 實現復雜 |
token 是字符和詞之間的平衡結構,便于模型學習和泛化。
四、Token切分的實際影響
- 模型限制:如 GPT-3 最大支持 2048 token,不是 2048 字;
- API計費:OpenAI 計費基于 token 數,而非字數;
- 上下文控制:token 越多,占用上下文窗口越快,需控制生成長度。
五、中文Token的特殊性
中文通常一字一 token,但模型會根據語料頻率進行調整:
- “清華大學” 可能為 [“清”, “華”, “大學”] 或 [“清華”, “大學”];
- “ChatGPT” 可被切為 [“Chat”, “G”, “PT”],因非高頻復合詞。
六、Token機制的未來方向
- Unigram分詞(如T5);
- 多語言共享詞表(如mBERT);
- 動態tokenization:模型運行時自適應切分。
七、總結
token 不是詞,它是語言模型的語言單位,是語義壓縮與泛化效率之間的產物。理解 token 的切分方式,是深入理解GPT系列語言模型結構的第一步。