通俗講解語言模型的評價指標-困惑度

  • 2020 年 10 月 29 日
  • AI

本文主要介紹語言模型的評價指標困惑度(perplexity),如果想要了解語言模型以及n-gram語言模型可以看《帶你理解語言模型》《通俗理解n-gram語言模型》。

無論是n-gram語言模型(unigram, bigram, tirgram)還是理論上可以記憶無限個單詞(無窮元語法, ∞-gram)遞歸神經網絡語言模型(RNN Language Model),都會涉及到一個最關鍵的問題:如何來評價這些語言模型的好壞?

語言模型是很多涉及到產生文字或預測文字概率的NLP問題的組成部分,因此最為直觀的評價方法是對應用語言模型的NLP任務進行評估。為了評估語言模型的好壞,運行更為複雜且更加耗時的其它NLP任務,顯然這種方法比較繁瑣。

有沒有一種能夠直接對語言模型進行評價的方法呢?語言模型簡單來說就是計算句子的概率值,通常認定測試集中的句子為模擬真實生產環境中的正常句子,因此在訓練數據集上訓練好的語言模型,計算在測試集中的正常句子的概率值越高說明語言模型的越好,而這正是困惑度(perplexity)的基本思想。

困惑度是語言模型效果好壞的常用評價指標,計算困惑度的公式如下:

在測試集上得到的困惑度越低,說明語言模型的效果越好。通過上面的公式也可以看出,困惑度實際上是計算每一個單詞得到的概率導數的幾何平均,因此困惑度可以理解為平均分支係數(average branching factor),即模型預測下一個單詞時的平均可選擇的單詞數量。

下面舉一個簡單的小例子,假設現在詞彙表中有三個單詞:,則訓練好的bigram語言模型的參數值為:

計算的值,具體為:(滑動公式可以移動

此時訓練好的bigram語言模型的困惑度為3,也就是說,在平均情況下,該模型預測下一個單詞時,有3個單詞等可能的可以作為下一個單詞的合理選擇。當然上面的bigram語言模型設置的參數值僅僅是為了舉例方便。

上面都是在計算一個句子的困惑度,如果測試集中有n個句子,只需要計算出這n句子的困惑度,然後將n個困惑度累加取平均,最終的結果作為訓練好的語言模型的困惑度。

參考:

  1. 《實戰Google深度學習框架》