Token 是什麼?LLM 為何只讀 Token?

前言 上篇講到LLM,這片就來說說裡面很常提到的字「Token」。Token 是語言模型可理解的最小單位,它像積木一樣把長句拆成小塊,讓模型逐一處理。這篇文章用更平易近人的方式解釋什麼是 token、為何 LLM 不直接處理完整的字詞,以及常見的斷詞方法,幫助你輕鬆掌握這個看似陌生卻無所不在的概念。 Token 是什麼?為何要用它? LLM 是數學模型,必須把文字轉成向量才能運算。最簡單的做法是把每個單詞賦予一個向量,但這樣會遇到兩個問題: 無法處理新詞或拼錯字:如果訓練時沒有見過某個單字,模型就不知道如何表示它。 忽略語素結構:許多語言中,一個詞可以拆成詞根和詞綴,例如「running」「runner」都來自「run」。 為了兼顧彈性與效率,LLM 會先把輸入拆解成更小的 token。有人將 token 定義是「字、字元或包含標點的組合」。有些文中也強調,token 是模型用來處理文字的原子單位。透過 token,模型得以把複雜的語言拆成固定大小的向量,並對每個 token 指派唯一編號。 幾種常見的斷詞方法 不同 LLM 可能採用不同的分割策略。以下三種是最常見的斷詞方法: 字級(Word):按空格切割。例如 “unbelievable performance” 被當作兩個 token。優點是數量少,但遇到新詞就無法處理。 字元級(Character):每個字母和空白都是一個 token。它能處理任何輸入,但 token 數大幅增加,效率低下。 子詞級(Subword):介於上述兩者之間,把常見詞根或片段視為 token,是現在主流 LLM 的做法。例如 “unbelievable performance” 可以拆成 ["un", "bel", "iev", "able", "per", "form", "ance"]。 圖中展示同一句話經過三種方法切分後的樣子: 把詞拆成小塊,看出不同斷詞方式產生的 token 數量差異。 簡易 Python 範例:手寫子詞切分 以下程式碼示範如何使用簡單的片段詞表(模擬 BPE 結果)把長詞拆成 token。一樣,雖然不是完整的演算法,但能幫你理解 tokenization 的動作。 # 定義一組常見片段 subwords = ["un", "bel", "iev", "able", "per", "form", "ance"] # 簡易子詞切分函式 def tokenize_subwords(text, subwords): tokens = [] i = 0 while i < len(text): match = None for sw in sorted(subwords, key=len, reverse=True): if text[i:].startswith(sw): match = sw break if match: tokens.append(match) i += len(match) else: tokens.append(text[i]) i += 1 return tokens # 輸入與輸出示範 print(tokenize_subwords("unbelievable performance".replace(" ", ""), subwords)) # 可能輸出: ['un', 'bel', 'iev', 'able', 'per', 'form', 'ance'] 每次優先匹配片段詞表中最長的項目,若無匹配則輸出單個字母,呈現出子詞分割的概念。 ...

2025-12-01 · 1 min · 180 words · KbWen

《大語言模型 LLM:其實做的事情比你想像中更單純》

前言 Introduction 如果你最近有用過 ChatGPT、Claude、Gemini,你已經在跟 LLM(Large Language Model)聊天了。這些模型看起來像懂很多、會推理、甚至比朋友還健談,但它們的核心動作其實無比樸實:預測下一個字。 聽起來太簡單?沒錯,但模型規模一大、資料一多、演算法一調整,這個「下一字遊戲」就能演變成看起來像魔法的語言能力。 這篇文章會用工程師看得順、初學者不會暈的方式,把 LLM 的概念、原理與常見應用一次講清楚。 LLM 是什麼? LLM 的任務比你想像的還簡單 從理論上看,LLM 是一種深度學習模型,被訓練去完成一件事情: 在語境下,挑選「最可能出現的下一個 token」。 token 可以是中文字、英文單字的一部分、符號、甚至數字。 當模型知道怎麼選下一個 token,然後不停重複這件事,就能組出一整段看起來像人寫的句子。 為什麼它看起來「懂很多」? 因為它被餵了大量內容:百科、文章、科技文、論壇討論…… 在海量語料裡找模式後,它自然會「講得像很懂」。 我們的感官上就感覺它懂很多、很能理解。 圖 1:LLM 下一字預測核心概念示意圖 LLM 是怎麼「學會」語言的? LLM 的學習流程大致分成四個步驟,其實蠻務實的: 1. 收集大量文本(資料越多,模型越穩) 來源包含書籍、文章、程式碼、論壇、維基百科等。 資料不是越亂越好,但越多越有機會讀懂語言中的隱性規律。 2. 分詞(Tokenization) 模型不直接處理字,而是處理 token。 你可以把它想像成:「把一個蛋糕切成很多比較好吞的碎片」。 3. 預測下一個 token(核心任務) 模型會計算所有候選 token 的機率: 哪個最可能? 哪個跟前文最適合? 哪個不太會讓模型出糗? 機率最高者 → 輸出。 4. 誤差反向調整(Backpropagation) 預測錯了? → 重新調參 → 再預測 → 再調 → 重複幾十億次 這就是 LLM 的訓練人生。 ...

2025-11-23 · 1 min · 179 words · KbWen