雪花台湾

求通俗解釋NLP里的perplexity是什麼?


先說結論:困惑度是交叉熵的指數形式。

然後你要知道信息熵、交叉熵的概念,可參考知乎上的回答~

對於熵,簡單點就是信息量 的期望。將一個sentence看做一個隨機變數, ,這裡假定是有限長度n,那麼它對應的熵為:

對應的per-word 熵,也就是entroy rate為:

引入交叉熵,真實分布p,通過語言模型生成的sentence,可以看作預測得到分布為m,那麼交叉熵:

根據 ,交叉熵的值越小,我們預測得到的分布也就越接近真實分布。

這裡因為訓練樣本已經給出,也就是p是定值,故 可寫成:

有了上面的知識,接下來理解困惑度就很容易了~

基於語言模型 的困惑度perplexity可定義為交叉熵的指數形式:

可以看到perplexity和交叉熵一樣都可以用來評價語言模型的好壞。 對於測試集其困惑度越小,準確率也就越高,語言模型也就越好~


前面的回答都很優秀,但我想基於我的理解做個補充。

困惑度 Perplexity 是衡量語言模型好壞的指標,為了更好地理解其意義,首先有必要回顧熵的概念。根據資訊理論與編碼的知識,我們知道 熵代表著根據信息的概率分布對其編碼所需要的最短平均編碼長度。

  1. Entropy

假設離散隨機變數 概率分布為

離散隨機變數 概率分布為

離散隨機變數 概率分布為

則根據離散隨機變數熵的計算公式可計算得

也就是說如果需要對離散隨機變數 進行編碼,編碼長度分別為 0 bits、1.5 bits 和 2 bits。而編碼長度表示隨機變數能夠呈現出的等可能性的狀態數(就隨機變數而言就是取值個數,這種表述並不嚴謹,只是為了方便下文敘述):隨機變數 呈現出的狀態數為 種;隨機變數 呈現出的狀態數為 種;隨機變數 呈現出的狀態數為 種。

2. Entropy Rate

對於索引可數的隨機過程 ,其熵率定義為:

對於獨立同分布的序列,各隨機變數的熵相等,則顯然有:

所以熵率依其定義可粗略地類比於隨機過程中 per-random_variable entropy。比如,考慮這樣一台打字機,假設可輸出 個等可能的符號。因此打字機可產生長度為 的共 個序列,並且都等可能出現。那麼對於該印表機, bits/symbol。

3. "Entropy of Language"

在語言模型中,對於語言 中的長度為 的單詞序列 ,單詞序列的熵的計算公式為

那麼在單詞序列熵的基礎上,根據熵率的定義,可粗略的定義 per-word entropy

而若將語言 視作隨機過程,則有:

而對上式又可作如下近似(摘自 Speech and Language Processing 3rd ed. draft):

The Shannon-McMillan-Breiman theorem (Algoet and Cover 1988, Cover and Thomas 1991) states that if the language is regular in certain ways (to be exact, if it is both stationary and ergodic)

To summarize, by making some incorrect but convenient simplifying assumptions, we can compute the entropy of some stochastic process by taking a very long sample of the output and computing its average log probability.

4. Cross Entropy

當我們用概率分布 來近似真實的未知分布 時,可利用交叉熵來衡量近似分布 的性能好壞。在語言模型的應用場景下,語言 (仍視作隨機過程)的交叉熵表達式如下所示,其中 表示真實的語言模型, 表示根據訓練語料學習得到的語言模型:

根據 Shannon-McMillan-Breiman theorem,可近似得:

在實際應用中,單詞序列一般都足夠長,又可作如下近似表示:

注意交叉熵 是真實分布 的上界, ,也因此在模型訓練時經常把交叉熵當作損失函數進行優化,以逼近真實分布。

5. Perplexity

從訓練語料中學習得到語言模型分布後,可以計算 perplexity 衡量其好壞。假設測試語料為 ,測試語料中的每一語句為單詞序列 ,則:

其中 即為語言模型。

6. Summary

就可認為是根據訓練語料學習得到的語言模型 的交叉熵,而這一般也是在訓練語言模型時的損失函數。而對於 perplexity 即 從編碼長度的角度來理解,就可認為是在語言模型 下,等可能性的輸出結果的個數。所以在給定輸入的前面若干辭彙即給定歷史信息後,當然語言模型等可能性輸出的結果個數越少越好,越少表示模型就越知道對給定的歷史信息 ,應該給出什麼樣的輸出 ,即 perplexity 越小,表示語言模型越好。

在學習語言模型時最常見的一個例子是隨機語言模型,即每次等可能性地輸出辭彙表 中的任意辭彙。顯然這與前面印表機的例子相同,因此隨機語言模型的 perplexity 為

P.S. 關於 perplexity,更常見的表述如下,所有表述方式實質上是等價的:

假設測試語料共包括 個句子,第 個句子有 個字,則有

對測試語料中的每一個句子 ,若 越大,則說明語言模型在測試語料上的表現越好。即相當於下式

而 perplexity 定義為


一、語言模型

本文盡量通俗解釋一下困惑度的概念。既然題目中寫了是用來評價語言模型的好壞,那麼首先來看一下語言模型:憶臻:深入淺出講解語言模型?

zhuanlan.zhihu.com

簡單地說,語言模型就是用來計算一個句子的概率的模型,也就是判斷一句話是否是人話的概率?

那麼如何計算一個句子的概率呢?給定句子(詞語序列)

它的概率可以表示為:

也就是說在給定一句話的前k個詞,我們希望語言模型可以預測第k+1個詞是什麼,即給出一個第k+1個詞可能出現的概率的分布p(xk+1|x1x2...xk)。

那麼如何學習到一個語言模型呢,這裡不詳細敘述,可以參考:憶臻:深入淺出講解語言模型?

zhuanlan.zhihu.com

二、如何評價一個語言模型好壞

在得到不同的語言模型(一元語言模型、二元語言模型....)的時候,我們如何判斷一個語言模型是否好還是壞,一般有兩種方法:1、一種方法將其應用到具體的問題當中,比如機器翻譯、speech recognition、spelling corrector等。然後看這個語言模型在這些任務中的表現(extrinsic evaluation,or in-vivo evaluation)。但是,這種方法一方面難以操作,另一方面可能非常耗時,可能跑一個evaluation需要大量時間,費時難操作。2、針對第一種方法的缺點,大家想是否可以根據與語言模型自身的一些特性,來設計一種簡單易行,而又行之有效的評測指標。於是,人們就發明了perplexity這個指標。困惑度(perplexity)的基本思想是:給測試集的句子賦予較高概率值的語言模型較好,當語言模型訓練完之後,測試集中的句子都是正常的句子,那麼訓練好的模型就是在測試集上的概率越高越好,公式如下:由公式可知,句子概率越大,語言模型越好,迷惑度越小。

下面是一些 ngra-m 模型經 訓練文本後在測試集上的困惑度值:

可以看到,之前我們學習的 trigram 模型經訓練後,困惑度由955跌減至74,這是十分可觀的結果。

這節的核心就是句子概率越大,語言模型越好,迷惑度越小。參考:http://sentiment-mining.blogspot.com/2016/11/perplexity.html?

sentiment-mining.blogspot.com

本回答來自專欄【機器學習演算法與自然語言處理】:

憶臻:通俗解釋困惑度 (Perplexity)-評價語言模型的好壞?

zhuanlan.zhihu.com

樓主要的是一個『通俗解釋』,那麼拋開上面諸位學術型回答的公式答案,一句話就是:

困惑度p可以理解為,如果每個時間步都根據語言模型計算的概率分布隨機挑詞,那麼平均情況下,挑多少個詞才能挑到正確的那個

選自 Graham Neubig: Neural Machine Translation and Sequence-to-sequence Models: A Tutorial


答案請見

習翔宇:基於循環神經網路的語言模型的介紹與TensorFlow實現(1):語言模型與評價指標perplexity?

zhuanlan.zhihu.com

簡單來說,是語言模型的評價指標。

語言模型的效果好壞的常用評價指標是困惑度(perplexity),在一個測試集上得到的perplexity 越低,說明建模的效果越好,計算perplexity的公式如下:

簡單來說,perplexity刻畫的是語言模型預測一個語言樣本的能力,比如已經知道了 這句話會出現在語料庫之中,那麼通過語言模型計算得到這句話的概率越高,說明語言模型對這個語料庫擬合的越好。

在語言模型的訓練中,通常採用perplexity的對數表達形式:

相比較乘積求平方根的方式,採用加法的形式可以加速計算,同時避免概率乘積數值過小而導致浮點數向下溢出的問題。

在數學上,log perplexity 可以看作真實分布與預測分布之間的交叉熵 Cross Entropy, 交叉熵描述了兩個概率分布之間的一種距離,假設 是一個離散變數, 是兩個與 相關的概率分布,那麼 之間的交叉熵 的定義是分布 的期望值:

我們把 看作是單詞, 表示每個位置上單詞的真實分布,

是模型的預測分布 ,那麼即有

因此log perplexity和交叉熵是等價的。

歡迎關注專欄

機器學習?

zhuanlan.zhihu.com
推薦閱讀:
相关文章