Perplexity(困惑度)是什麼?

Perplexity是通常可以拿來衡量一個語言模型(Language Model)的一個方法

CHEN TSU PEI
NLP-trend-and-review
3 min readDec 16, 2019

--

Language Model Trying to model how a language is generated - Photo by Roman Kraft on Unsplash

Perplexity與語言模型

Perplexity是通常拿來衡量一個語言模型(Language Model)的一個方法,那語言模型又是什麼呢?簡單來說,語言模型計算一句話的機率,一個越好的語言模型,對我們人類給出的一句通順的話,會給出越高的機率

Unigram為例子,每個字的機率都是獨立的,我們可以用以下的式子來表示一個句子的機率

每個字為獨立機率,相乘後等於該句子機率

P(wi)為第i個字的機率,而怎麼計算這個機率就是不同語言模型的工作。例如unigram可以表示成 P(wi),該字出現的機率跟其他字出現是獨立的。而bigram可以表示成 P(wi|wi-1),每個字的機率都依賴於前一個字

Perplexity數學公式

Perplexity的計算公式

我們將上面的公式細部拆解來看

1. 整個句子的機率
2. 取 log,因為 log 為嚴格遞增函數,所以不影響比較結果
3. 除以 M做平均
4. 取負號,所以會變成值越小原本的機率越大
5. 取2的指數,一樣為嚴格遞增函數,所以不影響比較結果

從第一步推到最後,當Perplexity越小,則原本句子的機率就越高,所以對於一個包含合理通順語句的資料集,假設我們有兩個語言模型,以訓練集來訓練語言模型A與語言模型B,再以測試集來評估兩者的Perplexity,平均Perplexity越小的語言模型表示能更高的機率,因此會認為它較好

註:不影響比較結果的意思是,當今天有多個模型用Perplexity來進行比較時,取對數跟指數並不會影響原本的排名結果

--

--

CHEN TSU PEI
NLP-trend-and-review

這邊停止更新了!麻煩移駕到https://tsupei.github.io,有持續更新更多NLP的文章唷!