[自然語言處理](https://app.notion.com/p/3e6fc631b03081b4a9e8f91f3411f61f) › [W3(9/24)](https://app.notion.com/p/3e6fc631b03081ff9776f36fab3e6e50) › 07|影片 [2:33:51–2:51:05](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9231s)|投影片 W2_Word embeddings and Language Modeling (RNN)_v2 p.15–17|上一章 [06 N-gram 語言模型(2:12–2:33)](https://app.notion.com/p/3e6fc631b03081588140d7f6a95e5bb4)|下一章 無
## 重點
- 語言模型(language model,LM)就是替一串字打機率分數的模型:順的句子分數高,怪的句子分數低。分兩種:靠數次數的 N-gram LM,和用神經網路學的 neural LM;後者出現,是因為前文一長就數不到次數。
- 困惑度(perplexity,PPL)是評估語言模型最常用的分數:模型看到一句話平均有多意外,越低越好。老師強調它非常重要,也拿它檢查 fine-tune 有沒有把模型弄壞、模型是不是快要胡說。
- PPL 有四種解讀:不確定性、平均分支數、模型能力、壓縮效率。AI 偵測工具也在算 PPL,但改幾個字就騙得過去。考試約在第 14 週,著重作業和上課內容,不太考計算。
## Exam-ready
- **Language Models (LMs)**: "Models that assign probabilities to sequences of words are called LMs."(W2 投影片 p.15)
- 中文:能替「一串字」指定機率的模型,就叫語言模型。白話:它替每個句子打分數,越像人話分數越高。sequences of words(字的序列,一串字)。
- **N-Gram vs. Neural LMs**: "N-Gram Language Models: A purely statistical model of language." / "Neural Language Models: Use neural networks to predict the likelihood of sequences."(W2 投影片 p.15)
- 中文:N-gram 語言模型是純統計的語言模型(只靠數次數);神經網路語言模型用神經網路預測一串字出現的可能性(從資料學規律)。purely statistical(純統計)、likelihood(可能性)。
- **Perplexity**: "Perplexity (PPL) is a quantitative criterion used to evaluate the capacities/effectiveness of language modeling models."(W2 投影片 p.16)【老師強調】(2:39:41)
- 中文:困惑度是用來評估語言模型能力/效果的量化標準。quantitative criterion(量化的評分標準)。白話:替語言模型打分數的尺。
- **Perplexity(W) = P(w1w2…wN)^(−1/N) = N-th root of ∏ 1 / P(wk | wk−n+1:k−1)**: "Given the sequence of words and an n-gram model. The PPL of the model was computed by:"(W2 投影片 p.16)
- 中文:給一串字 W(共 N 個字)和一個 n-gram 模型,困惑度=整句機率取倒數、再開 N 次方根;等於每個字機率倒數的幾何平均。白話:平均每個字,模型有多意外。
- **Lower is better**: "The lower the value of perplexity, the better the language modeling capability of the model."(W2 投影片 p.16)
- 中文:困惑度越低,模型的語言建模能力越好。
- **A Measure of Uncertainty**: "Perplexity quantifies the level of uncertainty or unpredictability that a model experiences when making predictions."(W2 投影片 p.17)
- 中文:困惑度衡量模型做預測時有多不確定(uncertainty 不確定性、unpredictability 難以預測)。
- **An Average Branching Factor**: "Perplexity can be viewed as an 'average branching factor' of possible choices at each step in the sequence."(W2 投影片 p.17)
- 中文:困惑度可以看成序列中每一步「平均有幾個可選的分支」。branching factor(分支數)。白話:PPL 是 4,就像每一步都在 4 個字裡猜。
- **Quantification of Model Performance**: "In language modeling, perplexity reflects how well the model understands the rules and structure of the language. … A lower perplexity indicates better language comprehension and prediction ability, signifying the model's efficiency in capturing language patterns."(W2 投影片 p.17)
- 中文:困惑度反映模型有多懂語言的規則和結構;越低代表理解和預測能力越好,越能有效抓住語言的模式(language patterns)。
- **Compression Efficiency Indicator**: "Perplexity can also be seen as a measure of how well the model compresses the test data. … Lower perplexity means that the model predicts with higher probabilities, reducing the uncertainty and effectively compressing the information."(W2 投影片 p.17)
- 中文:困惑度也可以看成模型把測試資料壓縮得多好。越低代表模型給正確的字越高機率,不確定性越少,資訊壓得越有效率。
- **Slide question**: "Can we use perplexity to evaluate whether text is generated by AI or not?"(W2 投影片 p.17)
- 中文:能不能用困惑度判斷文字是不是 AI 寫的?老師:很多偵測工具就在算它,但改一兩個字就騙得過去。
## [2:33:51](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9231s) 語言模型的正式定義
投影片 p.15 給的是教科書定義:能替「一串字」算出機率的模型,就叫語言模型。人聽得懂、講得順的句子機率高;不順的句子機率低。老師補充:他從搜尋(資訊檢索)進入 NLP 的那個年代,用語言模型做 NLP 會被認為是偏理論、要算一堆機率的做法(當然 paper 比較好寫)。
生活比喻:語言模型像手機鍵盤的「下一個字建議」,它讀過大量文字,知道哪些字常接在一起,所以能替每句話打「像不像人話」的分數。
它怎麼替整句打分數(文字步驟):從第一個字開始,每一步問「在前面這些字之後,接這個字的機率有多大」,最後把每一步的機率全部乘起來。
名詞補充:機率(probability)是 0 到 1 之間的數字,越接近 1 越可能發生。很多小於 1 的數相乘會越乘越小,所以句子越長、越怪,整句機率就越小。
下面這張圖是同一個模型看兩句話:字完全一樣,只有順序不同。
```mermaid
flowchart LR
A["我 想 吃 飯"] --> M1["語言模型"] --> P1["機率高:像人話"]
B["飯 吃 想 我"] --> M2["同一個語言模型"] --> P2["機率極低:不像人話"]
```
所以語言模型看的不只是「有哪些字」,還有「字的順序」。
考試可能怎麼問:「Define a language model and name its two types.」(定義語言模型,並說出投影片上的兩種類型。)
下面的進階摺疊在解決一件事:整句話太長,沒辦法直接估它的機率,所以拆成「一個字接一個字」的小機率再相乘。乘出來的數字,就是整句像不像人話的分數。
一句話的機率怎麼拆開算?(進階,可跳過)
- 條件機率 P(B | A):A 已經發生時 B 發生的機率。例:P(want | I) 是「前一個字是 I 時,下一個字是 want 的機率」。
- 連鎖律(chain rule,把整句機率拆成條件機率相乘):P(I want to eat) = P(I) × P(want | I) × P(to | I want) × P(eat | I want to)。
第 06 章的 N-gram 就是把每一項的條件縮短成「只看前 N−1 個字」,再用次數去估。
老師原話是什麼?
「他可以去 assign 這個字的、這個一串字的 probability,叫做 language model」(2:34:52)
「只要是人聽得懂的話,他的機率就會很高」(2:35:03)
## [2:35:12](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9312s) 不同族群有不同的語言模型
語言模型是從某一批語料統計出來的分布,只熟悉那群人的說話習慣。中風或有語言障礙的病人,說話會中斷、語助詞變多、詞彙變少;用一般人語料訓練的模型去看,機率就偏低。反過來用,模型就能判斷一句話「是不是人說的、符不符合我們要看的那種語言」。
名詞補充:語料(corpus)是拿來統計或訓練模型的大量文字;分布(distribution)是「每種說法各占多少比例」。
老師也提到密碼:把每個字一對一換成別的符號,人看不懂,但算出來的 perplexity 跟原文一樣。最簡單的密碼就是這樣做,所以很容易被破解。
生活比喻:每個家庭都有自己的口頭禪,外人一開口,家人就聽得出「這不是我們家的講法」。一對一換符號則像幫每個字換一件衣服,衣服換了,走路的樣子(字跟字怎麼接)沒變。
考試可能怎麼問:「Why does a one-to-one symbol substitution keep the same perplexity, and why is such a cipher easy to break?」(為什麼一對一換符號困惑度不變?為什麼這種密碼容易破?)
下面的進階摺疊用「數次數」說明:換符號後,每兩個字相鄰出現的次數一樣多,算出的機率就一樣,所以困惑度不變。
為什麼一對一換符號,perplexity 不變?(進階,可跳過)
把每個字固定換成一個符號:我→◆、想→▲、吃→●、飯→■。原文「我 想」出現 50 次,換完後「◆ ▲」也剛好 50 次。每組相鄰字的次數都一樣,條件機率都一樣,perplexity 當然也一樣。
換符號只換了名字,沒動規律。破解的人先數哪個符號最常出現,猜它是英文的 e,再一路推回去。老師這堂課前面也講過:換成怪符號,語言模型照樣抓得到規律。
老師原話是什麼?
「雖然你看不懂,但是因為是一對一的 mapping」(2:36:22)
「一對一啊,所以很容易被破解就是這樣」(2:36:36)
## [2:36:42](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9402s) 統計太難,改成用學的
理想上,預測下一個字要看「前面所有的字」。但前文越長,那一整串在語料裡出現的次數越少,常常是 0,根本估不出可靠的機率。所以做法改成:不只數次數,而是讓神經網路從有限的資料裡「學」出規律。這就是 p.15 的兩類:N-gram LM 與 neural LM。
老師用兩個例子說明「從少量資料學」已經很常見:拿班上 50 位同學的學習表現訓練模型,上完三週就能預測誰可能被當;大公司面試也有 AI 輔助,統計你回答的用字(見下方摺疊)。他也提醒:訓練資料本身就有偏差(bias),模型學到的不一定公平。
生活比喻:學做菜不可能把每種食材組合都試過再記下來(統計),而是學會「酸能解膩、鹹配甜」這種規律(學習),沒做過的菜也能猜個大概。
下表把兩類語言模型並排比較。
| 比較 | N-gram LM | Neural LM |
| 投影片定義 | A purely statistical model of language.(純統計) | Use neural networks to predict the likelihood of sequences.(用神經網路預測) |
| 機率怎麼來 | 數次數再相除,例如 count(want to) ÷ count(want) | 網路把前文變成向量,再用 softmax 給每個字機率 |
| 看多長的前文 | 固定前 N−1 個字(bigram 只看 1 個) | 可以更長(之後會講的 RNN 等) |
| 沒看過的組合 | 次數是 0,機率變 0,只能靠平滑(smoothing)硬補 | 意思相近的字向量也相近,沒看過的組合也能給合理機率(我補充) |
| 代表 | W2 p.12 的 bigram 機率表 | Bengio et al. 2003(W1 投影片 p.65)、GPT 系列 |
一句話記:N-gram 是「記次數」,neural LM 是「學規律」。
名詞補充:神經網路(neural network)是一種會從例子自己調整內部數字的程式,看越多例子猜得越準。向量(vector)是一串數字,用來代表一個字的意思(本週第 01、03 章學過:意思相近的字,向量也相近)。平滑(smoothing,第 06 章學過)是替沒看過的組合硬塞一點點機率,避免機率變 0。RNN 是之後會教的、能一個字一個字往下讀的神經網路。
考試可能怎麼問:「Compare N-gram and neural language models. Why were neural LMs introduced?」(比較兩種語言模型;為什麼要有神經網路語言模型?)
下面第一個進階摺疊在講:神經網路怎麼把前面的字,變成「每個候選字各有多少機率」,以及訓練時怎麼替它打分。重點只有一句:正確的字拿到的機率越高,模型就越好。
神經網路語言模型怎麼吐出機率?(進階,可跳過)
1. 前面每個字先變成詞向量(第 03 章 word2vec 那種向量),網路把它們混成一個「上下文向量」。
2. 這個向量跟詞彙表裡每個字比對,每個字得到一個分數。
3. softmax(把分數變成加總為 1 的機率):每個分數取 e 的次方,再除以總和。例:分數 2、1、0 → 機率約 0.665、0.245、0.090。
訓練時的 loss 是 −ln(正確字的機率):正確字是第 1 個時 ≈ 0.41,是第 3 個時 ≈ 2.41。這個 loss 叫 cross-entropy(交叉熵),後面兩段會看到它跟 perplexity 是同一件事。
用生活例子講,面試 AI 跟語言模型有什麼關係?
公司記錄了「以前進來後表現好的人」面試時用哪些字(不是嘴炮,是很深入的技術關鍵字)。你的回答聽起來不錯,但用詞分布如果比較像「沒錄取」或「進來後被 fire」的那群人,就可能不被考慮。
這就是「為兩群人各建一個語言模型,看你比較像哪一群」。老師也提醒這有偏差:表現好的人講過這些字,不代表沒講的人就表現不好,訓練資料本來就不完整。
老師原話是什麼?
「好吧,那我們就不要統計就學」(2:37:07)
「在你有限的資料裡面去學會一些東西」(2:37:12)
「因為 training data 本來就有這種不足的問題」(2:39:18)
## [2:39:39](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9579s) 困惑度:模型有多困惑
【老師強調】(2:39:41) perplexity 字面就是「困惑」:模型看到一句話有多意外。機率越低,困惑度越高;困惑度越低,模型越好。老師的例子:用成人說話訓練的模型,看到小朋友說「吃飯飯」會很困惑,因為大人不會跟同學說「我去吃飯飯」。
生活比喻:像考四選一選擇題,每題都只能亂猜,你的「困惑度」就是 4;常常能刪到剩 2 個,接近 2;全懂就是 1。語言模型每預測一個字,就是在做「下一個字是什麼」的選擇題。
怎麼算(文字步驟):
1. 用模型算出句子裡每個字(接在前文之後)的機率。
2. 全部乘起來,得到整句機率。
3. 取倒數:越不可能的句子,數字越大。
4. 開 N 次方根(N=字數),換算成「平均每個字」,長短句才能公平比較(老師說的「看你要不要 normalize」(2:41:06))。
名詞補充:倒數就是「1 除以它」,1/64 的倒數是 64。開 N 次方根是問「哪個數自己乘 N 次會等於它」,64 開 3 次方根是 4,因為 4×4×4=64。這樣算出的平均叫幾何平均,專門拿來平均「要相乘的東西」。
下面是 p.16 的正式定義,公式就是上面四步的數學寫法。
[[IMG: C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p016.png | 投影片 p.16:perplexity 的定義、公式與範圍]]
看圖抓三件事:左邊是整句機率的 −1/N 次方,右邊是同一件事(每個字機率倒數的幾何平均),最右邊 1~∞、1~|V| 是 PPL 的範圍(最小 1=完全不困惑)。
圖上重點:
- 標題 LM evaluation: Perplexity:語言模型怎麼評分——用困惑度。
- 第一句:困惑度是評估語言模型能力和效果的量化標準。
- Given the sequence of words W … and an n-gram model:給一句共 N 個字的話和一個 n-gram 模型,困惑度用中間那條公式算。公式裡 P(…) 是「看了前面幾個字後,下一個字出現的機率」,大寫 Π 是「全部乘起來」。
- 最後一句 The lower … the better:困惑度越低,模型的語言能力越好。
這張圖在講:困惑度是什麼、怎麼算、為什麼越低越好。
考試可能怎麼問:「What is perplexity, and why is a lower perplexity better?」(什麼是困惑度?為什麼越低越好?)
下面的進階摺疊用一個小例子把四個步驟真的算一次,算出的 4 代表「平均每一步像在 4 個字裡猜」;也說明投影片右邊那個範圍是怎麼來的。
PPL 到底怎麼算?範圍怎麼來?(進階,可跳過)
手算一次:模型依序給 3 個字的機率 1/2、1/4、1/8。整句機率 = 1/64,N = 3,PPL = (1/64)^(−1/3) = 4,也就是每一步像在 4 個一樣可能的字裡猜。
用 W2 p.12 的 bigram 機率表算「I want to eat Chinese food」(從 want 算起 5 個字),PPL ≈ 12;把字序打亂成「I want Chinese to eat food」,PPL ≈ 101。同一個模型,怪句子困惑得多。
範圍 1~∞、1~|V|(投影片沒文字說明,以下照公式推):
- 最小 1:每個字機率都是 1,完全不困惑(老師也說機率是 1 就是沒問題 (2:41:19))。
- 最大 ∞:只要有一個字機率是 0,取倒數就變無限大,這也是第 06 章要做平滑的原因。
- |V| 是詞彙表大小。在 |V| 個字裡平均亂猜,PPL 剛好等於 |V|;比亂猜好的模型落在 1 到 |V| 之間。
電腦實際用 log 算(很多小數連乘會小到存不下):PPL = exp( −(1/N) × Σ ln P(wk | 前文) )。
老師原話是什麼?
「這個其實非常重要」(2:39:41)
「他實際計算什麼,其實就是我們剛才在算這些東西啊」(2:39:47)
「但是你不會跟你同學說我去吃飯飯」(2:40:20)
「你講了一句我以前沒聽過的話,那就是機率很低的意思」(2:40:52)
## [2:41:25](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9685s) 用困惑度檢查微調與幻覺
老師說 perplexity 是現在評估大語言模型很重要的工具。拿自己的資料 fine-tune(微調)模型後,它會講你要的話,一般的話卻講得零零落落;這時在一般文字上重算 PPL 會變高很多,代表微調破壞了它原本學會的東西。所以 fine-tune 研究常回報 PPL:升一點正常(資料少、又跟預訓練資料差很多),但不要掉太離譜,至少還要會講人話。
名詞補充:大語言模型(LLM,large language model)就是像 ChatGPT 這種、用海量文字訓練出來的超大語言模型;它的本質跟本章一樣,都在猜下一個字。
幻覺(hallucination)也類似:模型沒把握、開始不知道自己在幹嘛時,輸出時的 PPL 通常會升高。但模型也可能很有信心地講錯,所以 PPL 只是指標之一。
注意:老師 2:44:07 口頭說「他這部分的信心度會拉高」,照上下文應該是「困惑度會拉高」(信心下降)。考試寫:模型沒把握時,perplexity 升高。
生活比喻:像通才去補習班密集補某一科,補完那科變強了;但如果連平常說話都講不順,就是補過頭。PPL 就是補習前後各考一次的「國語小考」。
下面是檢查微調的步驟流程。
```mermaid
flowchart LR
A["預訓練好的模型"] --> B["在一般文字上算 PPL(微調前)"]
B --> C["用少量自己的資料微調"]
C --> D["在同一份一般文字上再算 PPL"]
D --> E["只升一點:正常"]
D --> F["升很多:原本會的被弄壞了"]
```
前後兩次要用同一份、模型沒訓練過的一般文字,數字才比得起來。
考試可能怎麼問:「After fine-tuning, the perplexity on general text rises sharply. What does this indicate?」(微調後一般文字的困惑度大增,代表什麼?)
最下面的進階摺疊在講:訓練時電腦盯著看的分數(loss,模型猜錯的程度)跟困惑度,其實是同一個數字換算來的。所以訓練時 loss 降,困惑度也跟著降。
要先懂什麼?pre-train、fine-tune、幻覺(短版)
- pre-train(預訓練):用海量一般文字讓模型練猜下一個字,學會一般語言。
- fine-tune(微調):再用少量特定資料(例如客服對話)繼續訓練,讓它專精某件事。資料少又跟預訓練差很多時,模型可能把原本會的蓋掉,文獻常叫 catastrophic forgetting(災難性遺忘);老師沒用這個詞,但講的就是它。
- hallucination(幻覺):模型講出流暢、但跟事實不符的內容。
PPL 跟訓練的 loss 是什麼關係?(進階,可跳過)
PPL 跟訓練的 loss 是同一個量:loss 是每個字 −ln P 的平均(cross-entropy),PPL = e^loss。用上一段的順句子驗算:平均 −ln P ≈ 2.49,e^2.49 ≈ 12.0。所以老師說有人把 PPL 當成 loss 逼近的指標 (2:43:13);實務上套件會直接算給你 (2:43:36)。
老師原話是什麼?
「現在大語言模型的一個很重要的工具」(2:41:28)
「你的 fine-tune 過程就把他以前的學會的東西都破壞掉的時候,他的 perplexity 會升高」(2:42:13)
「你不要掉太離譜」(2:42:44)
「他信心度很高但都是錯的也有」(2:44:01)
## [2:44:20](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9860s) 困惑度的意義:不確定性與壓縮
p.17 把 PPL 的意義整理成四個角度(下表)。老師特別解釋壓縮:人類那麼大的語料,只用幾十億(billion)個參數就能讓模型寫回人類的文章,這本身就是壓縮;壓得好 PPL 就低,壓不好就像圖片解壓縮後變模糊。
生活比喻(老師的):像手機把照片存成小檔,壓得好,打開還是清楚;壓不好就糊掉。
名詞補充:參數(parameter)是模型內部可以調整的數字,模型學到的東西全存在這些數字裡。位元(bit)是電腦存資料的最小單位,一個位元只能記 0 或 1。
下表是 p.17 的四個角度,最右欄用本章的例子對照。
| 角度(p.17) | 白話 | 用本章例子看 |
| **A Measure of Uncertainty** | 模型預測時有多不確定 | 怪句子 PPL 約 101,順句子約 12 |
| **An Average Branching Factor** | 平均每一步像在幾個選項裡挑 | PPL 4:每步像從 4 個字裡猜 |
| **Quantification of Model Performance** | PPL 越低,模型越懂語言的規則和結構 | 看的前文越長(unigram → bigram → trigram),PPL 通常越低(我補充) |
| **Compression Efficiency Indicator** | PPL 越低,存同樣的文字需要越少位元 | 順句子平均每字約 3.6 bits,怪句子約 6.7 bits |
四個角度其實是同一件事:模型給正確的字越高機率,就越不困惑、也越會壓縮。
p.17 最後問:能不能用 PPL 抓 AI 寫的文字?偵測器的步驟:用一個語言模型讀這段文字、算出 PPL;PPL 低於門檻就判成 AI 寫的,因為 AI 挑字偏好高機率的字,讀起來「都在預料中」。老師說很多偵測工具就是這樣做,但很容易調控:AI 判斷自己寫的文字可能給 90 多分,改掉或對調一個字,分數就下降 (2:46:18)。第 06 章也提過:故意留一個錯字就能騙過偵測,因為 AI 不會寫錯字。
我的推論(老師沒講):用字很制式的人寫的文字 PPL 也偏低,可能被誤判,所以 PPL 只能當參考,不能當證據。
考試可能怎麼問:「List the four interpretations of perplexity. Can perplexity tell whether a text is AI-generated?」(列出困惑度的四種意義;困惑度能不能判斷 AI 寫的文字?)
下面的進階摺疊在講:為什麼「困惑度低」等於「壓縮得好」。越有把握的字,記下來越省空間;把每個字要花的空間平均起來,換算一下就是困惑度。
壓縮跟困惑度為什麼是同一件事?(進階,可跳過)
資訊理論(Shannon 的想法,我補充):機率 p 的事件,最省的編碼要用 −log₂ p 個位元,越意外的字越要多花位元。例:p = 1/2 → 1 bit,p = 1/8 → 3 bits,p = 0.0078 → 約 7 bits。
把每個字的位元數平均起來叫 H(cross-entropy,單位是每字幾 bits),PPL = 2^H。順句子 H ≈ 3.59,2^3.59 ≈ 12;怪句子 H ≈ 6.66,2^6.66 ≈ 101。
想看更多:[Jurafsky & Martin SLP3 第 3 章(PDF)](https://web.stanford.edu/~jurafsky/slp3/3.pdf),公式寫法跟投影片一樣,也有 branching factor 的例子。
老師原話是什麼?
「就是把人類的 knowledge 完全壓縮在這整個參數的表示裡面」(2:45:12)
「所以壓的好的,他 perplexity 會低」(2:45:18)
「其實現在有很多 detect AI 的工具,就是去算 perplexity」(2:45:48)
「我信心度很高,我沒有困惑,我認得出我寫的東西」(2:45:56)(老師模仿偵測模型的口吻)
「所以那個都很容易去調控」(2:46:28)
## [2:46:33](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9993s) 課後問答:先備知識、作業時程、考試
課程內容到 W2 p.17 結束。之後老師回答聊天室的問題(下面從老師的回答推回問題):
- 沒學過機器學習、深度學習跟不跟得上:老師說不是學校的差距,是努力的差距。課綱建議有這些基礎,但沒列成硬性門檻,因為很容易追上。作業有 code template,不用寫訓練細節;但沒訓練過模型的人,第一個作業會比較辛苦。
- Colab 平均要跑多久:會請助教整理以前的經驗時間。
- 作業一截止日:公布後三週。9/24 公布,約 10/15,確切日期以 NTU COOL 為準 (2:48:25)。
- 考試:【老師說會考】考試著重作業和上課內容,很大部分從你做作業的過程、你的 insight、做過才懂的細節出題 (2:48:36、2:48:55)。考試大約排在第 14 週;課綱寫 mid-term,但實際比較接近期末,老師兩週內確認 (2:49:17)。
- 作業環境 requirement 與 Gensim:requirement 下載作業應該就看得到;Gensim 還有沒有在維護,老師會再確認後公告 (2:50:04)。
注意:老師說不太會考計算題,舉的例子是不會叫你算 BM25 (2:49:09)。所以本章的 PPL 手算是幫你理解,考試比較可能問意義和比較(我的判斷)。
名詞補充:Colab 是 Google 的線上寫程式環境,用瀏覽器就能跑程式;Gensim 是做詞向量(word2vec)的 Python 套件;requirement 是作業要先安裝哪些套件的清單;code template 是助教先寫好的程式骨架;NTU COOL 是台大的線上課程平台。BM25([第 2 週](https://app.notion.com/p/3e6fc631b03081a18b13fad72a8874fd)學過:搜尋引擎替「文件跟查詢有多相關」打分數的公式)。
考試可能怎麼問(我的判斷):從作業一出題,例如「哪一類 word2vec 類比做得差?為什麼?」,寫作業時就把觀察記下來。
老師原話是什麼?
「其實也不是頂大的差距說實在,是努力的差距」(2:46:44)
「我覺得這些東西其實是很容易可以 catch up 的」(2:47:40)
「考試會著重作業跟上課內容」(2:48:36)
「可能會有很大部分是從作業你做的過程跟你的 insight」(2:48:55)
「不太會去考叫你算 BM25」(2:49:09)
## 補充:bias 的兩種意思
這堂課老師講了兩次 bias,意思不一樣:一次是統計上的「偏差」,一次是社會上的「偏見」。英文考題看到 bias,要先分清楚是哪一種。
兩種 bias 各是什麼?共同原因是什麼?
- 統計上的偏差:第 06 章最後,老師說語料太少時,數出來的是很有 bias 的機率 (2:33:43)。意思是樣本不夠,算出來的分布不能代表真實的語言;例如只拿幾首周杰倫的歌詞,算不出一般人說話的規律。
- 社會上的偏見:本章的面試 AI (2:39:08)。模型學的是「以前表現好的人講過哪些字」,但沒講這些字的人不一定表現差,模型會把過去的偏好一直延續下去。
共同原因:訓練資料本身不完整,模型只會忠實反映餵給它的資料。所以對你的影響是:考試寫 insight 時,講完一個方法的優點,補一句它的資料會帶來什麼偏差,答案會比較完整(我的判斷)。
## Self-check
Q1. Define a language model. Name the two types introduced in the lecture and explain why neural LMs were introduced.(中文:定義語言模型,說出課堂介紹的兩種類型,並解釋為什麼要有神經網路語言模型。)
**Answer**: A language model assigns probabilities to sequences of words. N-gram LMs are purely statistical: they estimate each word's probability from counts of the previous N−1 words. Neural LMs use neural networks to predict the likelihood of sequences. They were introduced because long histories are too sparse to count reliably, while a neural model can learn from limited data and generalize to unseen combinations.
中文:語言模型是替「一串字」指定機率的模型。N-gram 語言模型是純統計的:用「前 N−1 個字後面接這個字」的次數去估機率。神經網路語言模型則用神經網路預測一串字的可能性。之所以需要後者,是因為前文一長,那整串字在語料裡幾乎數不到,機率估不準;神經網路可以從有限的資料學出規律,連沒看過的組合也能給合理的機率。
Q2. A language model assigns the probabilities 1/2, 1/4 and 1/8 to the three words of a test sentence. Compute the perplexity and interpret the result.(中文:模型給測試句三個字的機率是 1/2、1/4、1/8,算出困惑度並解釋意思。)
**Answer**: P(W) = 1/2 × 1/4 × 1/8 = 1/64. Perplexity = P(W)^(−1/N) = (1/64)^(−1/3) = 4. Interpretation: on average the model is as uncertain as if it had to choose uniformly among 4 words at each step (average branching factor = 4). A lower perplexity would indicate a better language model.
中文:先把三個機率相乘得到整句機率 1/64;再取倒數得 64,開 3 次方根(因為有 3 個字)得到 4。意思是:模型平均每一步都像在 4 個一樣可能的字裡猜一個,這就是「平均分支數=4」。如果換一個模型算出來更低,代表那個模型更好。
Q3. After fine-tuning an LLM on a small domain dataset, its perplexity on a general-text test set rises sharply. What does this indicate, and why do researchers report perplexity in fine-tuning studies?(中文:用少量特定領域資料微調大語言模型後,它在一般文字測試集上的困惑度大增,代表什麼?為什麼微調研究要回報困惑度?)
**Answer**: A sharp rise means fine-tuning has damaged the general language ability learned in pre-training; the model is now much more uncertain about ordinary text. Some increase is expected because the fine-tuning data is small and different, but it should not be too large. Reporting perplexity shows the fine-tuned model still produces fluent, human-like language.
中文:困惑度大增,代表微調把模型在預訓練學會的一般語言能力弄壞了,它現在看到普通的文字也很不確定。因為微調資料少、又跟預訓練資料差很多,困惑度升一點是正常的,但不能升太多。研究回報困惑度,就是要證明模型微調後「至少還會講人話」。
Q4. Can perplexity be used to evaluate whether a text is generated by AI? Explain the idea and give one limitation.(中文:困惑度能不能用來判斷文字是不是 AI 寫的?說明原理並舉一個限制。)
**Answer**: Partly. LLMs tend to generate high-probability words, so AI-generated text usually has low perplexity, while human writing is less predictable; many detectors flag low-perplexity text as AI-generated. Limitation: it is easy to manipulate. Changing or swapping a single word, or adding a typo, raises perplexity and lowers the detection score. So perplexity is one indicator, not proof.
中文:部分可以。大語言模型寫字時偏好挑機率高的字,所以 AI 寫的文字讓另一個語言模型讀起來「都在預料中」,困惑度偏低;人寫的文字比較難預測。很多偵測工具就是把困惑度低的文字判成 AI 寫的。限制是很容易被操弄:改掉或對調一個字、或故意留一個錯字,困惑度就上升,偵測分數就下降。所以困惑度只能當線索,不能當證據。
這週讀完了。下一週第一章:[01 BM25 與 N-gram 模型(0:00–0:14)](https://app.notion.com/p/3ecfc631b030815a8015e146c3d4d717)|回到週頁:[W3(9/24)](https://app.notion.com/p/3e6fc631b03081ff9776f36fab3e6e50)