[自然語言處理](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 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) - **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) - **Perplexity**: "Perplexity (PPL) is a quantitative criterion used to evaluate the capacities/effectiveness of language modeling models."(W2 投影片 p.16)【老師強調】(2:39:41) - **PPL formula**: Perplexity(W) = P(w1 w2 … wN)^(−1/N) = ( ∏ from k=1 to N of 1 / P(wk | wk−n+1 … wk−1) )^(1/N)(W2 投影片 p.16,公式從投影片圖讀出) - **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) - **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) - **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) - **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) ## [2:33:51](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9231s) 語言模型的正式定義 投影片 p.15 給的是教科書定義:能替「一串字」算出機率的模型,就叫語言模型。人聽得懂、講得順的句子,機率就高;不順的句子,機率就低。老師補充:他從搜尋(資訊檢索)進入 NLP 的那個年代,用語言模型做 NLP 會被認為是偏理論、要算一堆機率的做法。
要先懂什麼?條件機率與連鎖律(短版) 語言模型像讀過大量文章的評審:「I want to eat Chinese food」分數相對高,「food Chinese eat to want I」分數極低。 它一個字一個字接著算,靠兩個工具: - 條件機率 P(B | A):A 已經發生時 B 發生的機率。例:100 天裡下雨 30 天,下雨又塞車 24 天,P(塞車 | 下雨) = 24 ÷ 30 = 0.8。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) 不同族群有不同的語言模型 語言模型是從某一批語料統計出來的分布,只熟悉那群人的說話習慣。中風或有語言障礙的病人,說話會中斷、語助詞變多、詞彙變少;用一般人語料訓練的模型去看,機率就偏低。反過來用,模型就能判斷一句話符不符合我們要看的那種語言。老師也提到:把文字一對一換成別的符號,人看不懂,但 perplexity 跟原文一樣;最簡單的密碼就是這樣做,所以很容易被破解。
它到底怎麼運作?為什麼一對一換符號,perplexity 不變? 假設把每個字固定換成一個符號:我→◆、想→▲、吃→●、飯→■。原文「我 想」出現 50 次,換完後「◆ ▲」也剛好 50 次。每組相鄰字的次數都一樣,條件機率都一樣,perplexity 當然也一樣。 換符號只換了名字,沒動規律。破解的人就先數哪個符號最常出現,猜它是英文的 e,再一路推回去。老師在第 01 章 (0:19:52) 講過同一個實驗:用 hash 把文字換成怪符號,還是能用語言模型抓出規律。
老師原話是什麼? 「雖然你看不懂,但是因為是一對一的 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。老師舉大公司面試的例子,說明這種做法已經在真實世界使用,也提醒訓練資料本身就有偏差(bias)。
比較N-gram LMNeural 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)硬補相似的字向量相近,沒看過的組合也能給合理機率(brief p.67)
代表第 06 章 p.12 的 bigram 機率表Bengio et al. 2003(brief p.65)、GPT 系列
要先懂什麼?神經網路語言模型怎麼吐出機率(短版) 1. 前面每個字先變成詞向量(第 03 章 word2vec 那種向量),網路把它們混成一個「上下文向量」h。 2. h 跟詞彙表裡每個字的輸出向量做內積,每個字得到一個分數。 3. softmax(把分數變成加總為 1 的機率):每個分數取 e 的次方,再除以總和。 手算一次:3 個字,分數 2、1、0。e² ≈ 7.389、e¹ ≈ 2.718、e⁰ = 1,總和 ≈ 11.107,機率 ≈ 0.665、0.245、0.090。 訓練時,正確答案若是第 1 個字,loss = −ln 0.665 ≈ 0.41;若是第 3 個字,loss = −ln 0.090 ≈ 2.41。模型越意外,loss 越大。這個 loss 叫 cross-entropy(交叉熵),第 4 段會看到它跟 perplexity 是同一件事。
用生活例子講,面試 AI 跟語言模型有什麼關係? 老師說大公司面試已經有 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 字面就是困惑:模型看到一句話有多意外。機率越低,困惑度越高。p.16 的公式:整句機率取倒數,再開 N 次方根(N=字數),也就是每個字機率倒數的幾何平均。老師的例子:用成人說話訓練的模型,看到小朋友說「吃飯飯」會很困惑,因為成人不會這樣講。 [[IMG: C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\nlp_w2slides_p016.png | 投影片 p.16:perplexity 的定義、公式與範圍]]
它到底怎麼運作?用一句話手算一次 perplexity 公式白話版:PPL = (整句機率)^(−1/N) = (每個字機率倒數的連乘)^(1/N)。 例 1(數字好算):模型依序給 3 個字的機率是 1/2、1/4、1/8。 - 整句機率 = 1/2 × 1/4 × 1/8 = 1/64 - N = 3,PPL = (1/64)^(−1/3) = 64^(1/3) = 4 - 意思:平均每一步,模型像在 4 個一樣可能的字裡猜一個。 例 2(用第 06 章 p.12 的 bigram 機率表):句子「I want to eat Chinese food」,從 I 之後算 5 個字(表裡沒有句首機率,先跳過 I)。 - P(want | I) = 0.21、P(to | want) = 0.26、P(eat | to) = 0.18、P(Chinese | eat) = 0.0078、P(food | Chinese) = 0.052 - 連乘 ≈ 3.99 × 10⁻⁶ - PPL = (3.99 × 10⁻⁶)^(−1/5) ≈ 12.0 例 3(同一個表,把字序打亂):「I want Chinese to eat food」。 - P(want | I) = 0.21、P(Chinese | want) = 0.0029、P(to | Chinese) = 0.00062、P(eat | to) = 0.18、P(food | eat) = 0.0014 - 連乘 ≈ 9.5 × 10⁻¹¹ - PPL ≈ 101 同一個模型:順的句子 PPL 約 12,怪的句子 PPL 約 101。這就是「吃飯飯」讓模型困惑的數學版本。
要先懂什麼?負指數、開根號、log(短版) - x^(−1) = 1/x(取倒數);x^(1/N) = x 的 N 次方根。所以 P^(−1/N) 就是「1/P 開 N 次方根」。 - 為什麼要開 N 次方根?每個字的機率都小於 1,句子越長連乘越小,長句永遠顯得比較差。開 N 次方根等於換算成「平均每個字」,長短句才能公平比較(老師說的「看你要不要 normalize」(2:41:06))。 - 電腦用 log 算,因為很多小數連乘會小到存不下:PPL = exp( −(1/N) × Σ ln P(wk | 前文) )。 - 用例 1 驗算(以 2 為底):−log₂ 的值是 1、2、3,平均 2,2² = 4。答案一樣。
投影片右邊的「1~∞、1~|V|」是什麼? 這是 PPL 的範圍(投影片沒文字說明,以下照公式推): - 最小 1:每個字都給機率 1,完全不困惑(老師也說機率是 1 就是沒問題 (2:41:19))。 - 最大 ∞:只要有一個字機率是 0,取倒數就變無限大。這也是第 06 章要做平滑的原因。 - |V| 是詞彙表大小。在 |V| 個字裡平均亂猜,每個字機率 1/|V|,PPL 剛好等於 |V|。比亂猜好的模型就落在 1 到 |V| 之間。
用生活例子講,困惑度是什麼? 想像考四選一的選擇題:每題都只能亂猜,你的「困惑度」是 4;常常能刪到剩 2 個,困惑度接近 2;全懂就是 1。 語言模型每預測一個字,就是做一題「下一個字是什麼」的選擇題,選項是整個詞彙表。PPL 就是它平均的「有效選項數」。
老師原話是什麼? 「這個其實非常重要」(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:升一點正常,但不要掉太離譜,至少還要會講人話。另外,模型沒把握、快要產生幻覺(hallucination)時,輸出時的 PPL 通常也會升高;但模型也可能很有信心地講錯,所以 PPL 只是指標之一。 **注意:老師 2:44:07 口頭說「他這部分的信心度會拉高」,照上下文應該是「困惑度會拉高」(信心下降)。考試寫:模型沒把握時,perplexity 升高。**
要先懂什麼?pre-train、fine-tune、幻覺(短版) - pre-train(預訓練):用海量一般文字讓模型練猜下一個字,學會一般語言。 - fine-tune(微調):再用少量特定資料(例如客服對話)繼續訓練,讓它專精某件事。資料少又跟預訓練差很多時,模型可能把原本會的蓋掉,文獻常叫 catastrophic forgetting(災難性遺忘);老師沒用這個詞,但講的就是它。 - hallucination(幻覺):模型講出流暢、但跟事實不符的內容。
它到底怎麼運作?怎麼用 PPL 檢查 fine-tune? 做法:準備一份模型沒訓練過的一般文字,微調前、後各算一次 PPL 來比。數字舉例:微調前 15,微調後 17 可以接受;微調後 60 就是「掉太離譜」,一般語言能力被弄壞了。 PPL 跟訓練的 loss 是同一個量:loss 是每個字 −ln P 的平均(cross-entropy),PPL = e^loss。用上一段例 2 驗算:平均 −ln P ≈ 2.49,e^2.49 ≈ 12.0,正好是例 2 的 PPL。所以老師說有人把 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) 困惑度的意義:不確定性、壓縮,以及能不能抓 AI p.17 把 PPL 的意義整理成四個角度(下表)。老師特別解釋壓縮:人類那麼大的語料,用幾十億(billion)個參數就能讓模型寫回人類的文章,這本身就是壓縮;壓得好 PPL 就低,壓不好就像圖片解壓縮後變模糊。投影片最後問:能不能用 PPL 判斷文字是不是 AI 寫的?老師說很多偵測工具就是在算 PPL,但改掉或調換一兩個字,分數就會掉。
角度(p.17)白話用前面的例子看
**A Measure of Uncertainty**模型預測時有多不確定怪句子 PPL 101,順句子 12
**An Average Branching Factor**平均每一步像在幾個選項裡挑PPL 4:每步像從 4 個字裡猜
**Quantification of Model Performance**PPL 越低,模型越懂語言的規則和結構WSJ 測試集:unigram 962、bigram 170、trigram 109(SLP3 第 3 章)
**Compression Efficiency Indicator**PPL 越低,存同樣的文字需要越少位元順句子平均每字約 3.6 bits,怪句子約 6.7 bits
它到底怎麼運作?壓縮跟困惑度為什麼是同一件事? 資訊理論(Shannon,brief p.66)說:機率 p 的事件,最省的編碼要用 −log₂ p 個位元,越意外的字越要多花位元。例:p = 1/2 → 1 bit,p = 1/8 → 3 bits,p = 0.0078 → 約 7 bits。 把每個字的位元數平均起來叫 H(每字平均位元數,也就是 cross-entropy),PPL = 2^H。 - 順句子:H ≈ 3.59 bits,2^3.59 ≈ 12 - 怪句子:H ≈ 6.66 bits,2^6.66 ≈ 101 好模型給對的字高機率,每個字只需要很少位元,文字壓得更小。所以 PPL 低和壓縮效率高是同一件事。
它到底怎麼運作?AI 偵測器怎麼用 PPL? 原理:大語言模型寫字時傾向挑機率高的字,所以另一個語言模型讀 AI 寫的文字會覺得「都在預料中」,PPL 偏低;人寫的文字常有意外用詞,PPL 較高。偵測器就設一條線:PPL 低 → 判成 AI。 弱點(老師講的): - 改掉一個字、或兩個字對調,PPL 就上升。老師說 AI 判斷自己寫的文字可能給 90 多分,改一個字就下降 (2:46:18)。 - 第 06 章提過:有學生故意留一個錯字,因為 AI 不會寫錯字 (2:25:53)。 我的推論(老師沒講):用字很制式的人寫的文字 PPL 也偏低,可能被誤判。所以 PPL 只能當參考,不能當證據。
別人怎麼教這個? - [Jurafsky & Martin《Speech and Language Processing》第 3 章(PDF)](https://web.stanford.edu/~jurafsky/slp3/3.pdf):投影片公式的寫法跟這本一樣。3.3 節講 perplexity,3.3.1 節用紅、藍、綠三色小語言講 branching factor,3.7 節講它跟 entropy 的關係。 - [Hugging Face:Perplexity of fixed-length models](https://huggingface.co/docs/transformers/perplexity):用 GPT-2 實際算 PPL 的程式,定義就是本章的 e^loss。
老師原話是什麼? 「就是把人類的 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) 課後問答:先備知識、作業時程、考試 課程內容到 p.17 結束,下一堂從 p.18(bigram、Markov assumption)接。之後回答聊天室的問題(問題本身影片裡看不到,下面從老師的回答推回來): - 沒學過機器學習、深度學習跟不跟得上:老師說不是學校的差距,是努力的差距。課綱建議有這些基礎,但沒列成硬性門檻,因為很容易追上。作業有 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 手算是幫你理解;考試比較可能問意義和比較(我的判斷)。**
老師原話是什麼? 「其實也不是頂大的差距說實在,是努力的差距」(2:46:44) 「我覺得這些東西其實是很容易可以 catch up 的」(2:47:40) 「考試會著重作業跟上課內容」(2:48:36) 「可能會有很大部分是從作業你做的過程跟你的 insight」(2:48:55) 「不太會去考叫你算 BM25」(2:49:09)
## 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. 中文重點:LM=替一串字打機率;N-gram 靠數次數,前文一長就數不到,所以改用神經網路學。
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. **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. 中文重點:整句機率取倒數再開 N 次方根;PPL 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. 中文重點:微調後 PPL 大增=把原本會的語言能力弄壞了;升一點正常,不能升太多。
Q4. Can perplexity be used to evaluate whether a text is generated by AI? Explain the idea and give one limitation. **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 文字 PPL 偏低,所以能當線索;但改一個字就騙得過去,只能當參考。