Featured image of post LLM 小百科:什麼是 Token?

LLM 小百科:什麼是 Token?

什麼是詞元?

詞元(Token)是語言模型處理文本的基本單位。使用者輸入至語言模型的任何文本,在模型處理前,都會先由分詞器(Tokenizer)切分成多個詞元,再輸入至模型進行處理。例如:What're tokens? 會被分詞器切分成 ["What", "'re", " token", "s", "?"] 5 個 token。

為何選擇詞元而非字元或單字?

語言模型之所以採用詞元作為基本處理單位,而非單一字元或完整單字,主要基於以下考量:

  • 語意豐富性: 相較於單一字元,詞元通常能承載更豐富的語意資訊,有助於模型更好地理解文本的上下文。
  • 效率與彈性: 詞元比完整單字能提供更高的處理效率和彈性。模型的詞彙表(Vocabulary)中獨特的詞元數量通常少於獨特單字的數量。這是因為詞元可以組合起來形成新的單字。例如,tokens 可以由 token 和 s 這兩個詞元組合而成,無需在詞彙表中同時包含 token 和 tokens 這兩個獨立的單字。
  • 處理新創詞彙(OOV): 詞元機制使模型能夠處理新創或不常見的詞彙(Out-of-Vocabulary, OOV Words)。例如,像 gpting 這樣的詞彙,可以被拆分成模型已知的詞元 gpt 和 ing,即使 gpting 本身不在詞彙表中,模型也能透過其組成詞元來理解其結構或推斷意義。

從詞元到詞元 ID 再到語意張量

一個語言模型所能識別的所有詞元集合,稱為模型的詞彙表(Vocabulary)。詞彙表中的每個詞元都會被賦予一個獨特的數值識別碼(ID),如下表所示:

Token ID
What 1001
're 1002
token 1003
s 1004
? 1005

詞彙表包含 ID 的原因至關重要。當使用者輸入的文本被分詞器轉換後,實際輸入至模型的並非詞元本身,而是它們對應的 ID。例如,["What", "'re", " token", "s", "?"] 會被轉換成 [1001, 1002, 1003, 1004, 1005] 輸入模型。將詞元轉換為數值 ID 的主要原因在於,神經網路的底層運作基於大量的數學運算,而這些運算只能處理數字,無法直接處理符號或文字。

在詞元被轉換為詞元 ID 後,這些數值會進入語言模型的嵌入層(Embedding Layer)。嵌入層會將每一個詞元 ID 轉換成一個密集的、固定維度的數值表示,稱為嵌入向量(Embedding Vector)。這些嵌入向量旨在捕捉詞元之間的語意和關係。最終,輸入序列中所有詞元的嵌入向量會組合成一個張量(Tensor)。以 [1001, 1002, 1003, 1004, 1005] 為例,假設嵌入向量空間的維度是 64,它最終會形成一個形狀為 (5, 64) 的張量(Tensor),如下所示:

[
    [0.6548761, 0.5097416, 0.6433363, 0.8687355, 0.0768908, ...],
    [0.1873722, 0.0308064, 0.5898745, 0.8872957, 0.4930335, ...],
    [0.3456789, 0.1234567, 0.9876543, 0.2345678, 0.8765432, ...],
    [0.9123456, 0.7890123, 0.6543210, 0.5432109, 0.4321098, ...],
    [0.1020304, 0.2030405, 0.3040506, 0.4050607, 0.5060708, ...]
]

總結

  • 詞元(Token) 是語言模型處理文本的基本單位。使用者輸入的文本會先由分詞器(Tokenizer)切分成多個詞元,再輸入模型。
  • 語言模型選擇詞元而非單一字元或完整單字,是為了提升語意豐富性處理效率與彈性(詞彙表較小,可組合形成新單字),以及更好地處理新創詞彙(OOV)
  • 每個詞元在模型的詞彙表(Vocabulary)中都有一個獨特的 ID。這些 ID 會被轉換成嵌入向量(Embedding Vector),最終組合成張量(Tensor),作為神經網路的實際輸入,因為模型只能處理數字。

參考資料

  1. Miss Woodrina; Samuel, your copy gets weaker and weaker. – Oh, I’m tired copyin’ these same old words (1916)
最後更新 Jul 20, 2025 09:43 UTC
comments powered by Disqus
使用 Hugo 建立
主題 StackJimmy 設計