Perplexity:深入理解语言模型评价指标——困惑度

语言模型好坏的衡量

语言模型(Language Model)会进行文本生成。如何衡量不同语言模型的好坏呢?一般而言,在机器学习中,我们通常将数据划分为训练集和测试集。在训练集上训练模型,并在测试集上衡量模型的拟合能力。如果拟合得越精确,代表模型越强。

什么叫”拟合能力越好“呢?由于语言模型是根据各个词出现的不同概率来进行文本生成的,所以我们可以给定一段文本序列(即测试集),如果模型生成这段话的概率越高,即说明语言模型能更好地进行拟合,也代表该模型越好。

困惑度评价指标的形式

对于文本序列  W = w_1,w_2,w_3,...,w_N而言,语言模型生成这段话的概率P(w_1,w_2,w_3,...,w_N)

因为概率P会受到文本长度的影响(文本长度越长概率越低),因此我们对概率开负N次根号,这就是困惑度评价指标:

PPL(W) = P(w_1,w_2,w_3,...,w_N)^{-\frac{1}{N}} = \sqrt[N]{\frac{1}{P(w_1,w_2,w_3,...,w_N)}}

如果概率P越大,则困惑度PPL越小。

对上式使用链式法则:

P(w_1,w_2,w_3,...,w_N) = P(w_1)P(w_2|w_1)P(w_3|w_1,w_2)...P(w_N|w_1,...,w_{N-1})

可以将困惑度改写为:

PPL(W) = \sqrt[N]{\prod _{i=1}^N \frac{1}{P(w_1|w_1,...,w_{i-1})}}

举例说明

我们利用n-gram的词袋模型来进行举例说明。其中n=2的语言模型称为Bigram,n=3的语言模型称为Trigram。

(1)Bigram

Bigram的具体做法是,统计在训练集中,出现单词w1的情况下出现单词w2的概率,即计算公式

p(w_2|w_1) = \frac{count(w_1,w_2)}{count(w_1)}

"The cat sat on the mat and looked at the mouse. Suddenly, it pounced and caught the small creature in its claws. The mouse squeaked and wriggled, but it was no use. The cat had its prey."

(2)Trigram

而Trigram的具体做法是,统计在训练集中出现单词w1,w2时,出现w3的概率

p(w_3|w_1,w_2) = \frac{count(w_1,w_2,w_3)}{count(w_1,w_2)}

以下为Trigram模型生成的部分文本示例:

"The sun was setting behind the mountains, casting a warm glow over the valley below. The trees rustled in the breeze, and the birds chirped their evening songs. It was a beautiful moment, and I felt at peace with the world."

从中可以发现

则如果要生成测试集的文本序列W = w_1,w_2,w_3,...,w_N

Bigram模型生成文本W的概率为\prod _{i=1}^N p(w_i|w_{i-1})

相应的困惑度为PPL(W)_{Bigram} = \sqrt[N]{\prod_{i=1}^N\frac{1}{P(w_i|w_{i-1})} }

Trigram模型生成文本W的概率为\prod _{i=1}^N p(w_i|w_{i-1},w_{i-2}),

对应的困惑度为PPL(W)_{Trigram} = \sqrt[N]{\prod_{i=1}^N\frac{1}{P(w_i|w_{i-1},w_{i-2})} }

猜你喜欢

转载自blog.csdn.net/a61022706/article/details/130256742
今日推荐