###### tags: `大語言模型` `AI` `Agent` `核心概念大串聯`
# 第一篇:語言模型的基石 — LLM 與 Token
> **系列**:AI 核心概念大串聯 | [返回總覽](https://hackmd.io/@TommyHuang/ByDQ96dcZx) | 下一篇:[Context 與 Context Window →](https://hackmd.io/@TommyHuang/SkiIsT_qbe)
---
## 一、LLM 是什麼?
**LLM(Large Language Model,大型語言模型)** 是一種以海量文字資料訓練而成的 AI 模型,核心能力是「預測下一個詞」。
聽起來很簡單,但這個能力在足夠規模之後,會湧現出令人驚訝的能力:推理、寫程式、翻譯、摘要、對話……
### LLM 的本質:機率預測機器
```
輸入:「今天天氣很好,我想去」
輸出:「公園」(機率最高的下一個詞)
```
LLM 不是查資料庫,也不是執行規則。它是透過學習數十億個句子後,建立起對語言模式的「直覺」,每次輸出都是一個機率分佈的採樣。
### 常見的 LLM
| 模型 | 開發者 |
|------|--------|
| GPT-4o | OpenAI |
| Claude 3.5 / Claude 4 | Anthropic |
| Gemini | Google |
| Llama 3 | Meta(開源) |
---
## 二、Token 是什麼?
LLM 不是以「字」或「詞」為單位來處理文字,而是以 **Token(詞元)** 為單位。
### 電腦看得懂文字(中文/英文/日文/…)?
電腦內有不同編碼:ASCII、Big5、Unicode、Base64
把文字轉換成數字給電腦看得懂。
例如: 編碼: ASCII

所有的文字對於電腦來說就是一個符號而已。
所以在LLM中他有自己獨特的方法來對所有的文字進行編碼,這個過程根據你訓練的資料庫有關,所以當我資料庫只有100個字,我的編碼可能就只有100個,如下圖,

我們也許可以學出一個字典
```
「A」這個符號在電腦在看就是數字2
「你」這個符號在電腦在看就是數字101
「好」這個符號在電腦在看就是數字102
```
|符號|字典|Tokenization ID|
|:-|:-|:-|
|A|A|2|
|B|B|3|
|...|...|...|
|你|你|101|
|好|好|102|
|?|?|103|
電腦在說你好的概念就是「101」、「102」
電腦說「101」「102」要翻成人類可以看得懂的情形就是要找到上面那個表格當翻譯蒟蒻,也就是decode解碼
```
「101」「102」→翻譯蒟蒻(表格)→你好
```
所以在用大量數據訓練的過程就是要產出Tokenization的方法,所以熟一點的人都知道在Token部分不同方法用的Tokenization都不一樣,後面有範例。
### Token ≠ 字,也 ≠ 詞
Token 是模型處理文字的最小單位,由訓練時的**分詞演算法(Tokenizer)** 決定。
```
英文範例:
"Hello, world!" → ["Hello", ",", " world", "!"] → 4 tokens
中文範例:
"你好世界" → ["你好", "世界"] → 2 tokens(視模型而定)
程式碼範例:
"def hello():" → ["def", " hello", "():"] → 3 tokens
```
大家在看上面覺得不就英文分詞,中文分字或是詞來切就好了嗎?
```
「我是黃志勝」 這句話可以切成
→ “我”、“是”、“黃”、“志”、“勝”
→ “我是”、“黃志勝”
→ “我”、“是”、“黃”、“志勝”
這三個哪個比較好?????
How are you?
→ “H ”、“o”、“w”、“a “、“r”、“e”、“y”、“o”、“u”、“?”
→ “How ”、“are”、“you”、“?”
哪個比較好?????
```
我們有提到要是"視模型而定",原因是切token的方法很吃你收集來訓練的資料庫
大家可以去https://platform.openai.com/tokenizer 看ChatGPT不同代的切詞結果,切詞演算法就不在今天討論的範疇內。
我分別用GPT-5和GPT-3進行Token給大家看,
```
範例是 你好我是黃志勝
GPT-5產出是5個Tokens,分別是「你好」「我是」「黃」「志」「勝」
GPT3產出是14個Tokens,分別是「?」「?」「?」「?」「?」「?」「是」「?」「?」「?」「?」「?」「?」「?」。
請自行到上面網頁測試看看
```
為什麼出現麼多?
- 原因訓練資料並沒有編碼中文,也就是GPT3的字典沒有這麼多中文字影響的。
- 拚字打錯還有辦法在電腦找到編碼嗎
|符號|GPT3 token|GPT3 Tokenization ID|
|:-|:-|:-|
|Book|Book|10482|
|is|is|271|
|good|good|11274|
|recognition|"recogn","ition"|[26243, 653]|
|11737|"117", "37"|[17657, 2718]|
|ggyy|"ggy","y"|[19970, 88]|
|boook|"bo","ook"|[2127, 566]|
recognition會被拆成"recogn"和"ition"兩個token,是因為訓練資料類似的字ition很多,在Subword的拆詞方法(例如Byte Pair Encoding (BPE)),會被拆出來。
大家有發現ggyy和boook會被拆成兩個token,因為這兩個不是真的英文單字,所以也是依據Subword的拆詞方法拆成兩個token。
下面有放上簡單的單字teacher,在GPT3和GPT-4的tokenizer結果就不太一樣

所以訓練資料越來越大,tokenizer就會跟著改變。
### 為什麼 Token 很重要?
1. **成本計算**:API 費用以 token 數量計費(輸入 token + 輸出 token)
2. **速度影響**:token 數越多,生成越慢
3. **容量限制**:模型能處理的最大 token 數有上限(這就是 Context Window,後篇詳述)
### Token 的直覺估算
| 語言 | 估算規則 |
|------|----------|
| 英文 | 1 個單字 ≈ 1.3 tokens |
| 中文 | 1 個漢字 ≈ 1–2 tokens |
| 程式碼 | 比自然語言用更多 token |
---
## 三、LLM 與 Token 的關係
```
你輸入的文字
↓
Tokenizer(分詞)
↓
[Token][Token][Token]...(數字 ID 序列)
↓
LLM 處理(向量運算)
↓
[Token][Token][Token]...(預測輸出)
↓
Detokenizer(反分詞)
↓
你看到的輸出文字
```
LLM 從頭到尾只看到「數字序列」,而非你眼中的文字。Token 就是人類語言與模型數學世界之間的橋樑。
---
## 四、重點整理
- **LLM** = 以預測下一個 token 為核心訓練的大型語言模型
- **Token** = 模型處理文字的最小單位,非字非詞
- Token 影響:**費用、速度、容量上限**
- LLM 的「理解」本質上是對 token 序列的機率運算
---
> 下一篇:[第二篇 — 模型的記憶與視野:Context 與 Context Window →](https://hackmd.io/@TommyHuang/SkiIsT_qbe)