语言模型评价指标 bpc(bits-per-character)和困惑度ppl(perplexity)
首先简单介绍下语言模型的标准评价指标:
1、 混淆度 (Perplexity) 用来衡量一个语言模型在未见过的的字符串S上的表现。对于一个长度为N的字符串S,语言模型给出概率P(S),对应的混淆度 (Perplexity)为 2^{-(1/N) log2 P(S)}。其中字符串长度单位可以是字符 (characters) 也可以是单词 (words).
2、 bits-per-character (bpc),当计算基于字符长度单位的混淆度 (Perplexity)时,Perplexity = 2^bpc.
bpc和ppl值越小越好。
常都遵循着以下规范:
- 训练集 (Train)/开发集 (dev)/测试集 (test)的标准划分规范
- 语言模型预测的单位(通常是单词而不是字符)
- 固定的 word tokenization
- 处理未在词表中出现的单词 (out-of-vocabulary (OOV))
困惑度ppl(perplexity)
ppl是用在自然语言处理领域(NLP)中,衡量语言模型好坏的指标。它主要是根据每个词来估计一句话出现的概率,并用句子长度作normalize,公式为:
S – 当前句子;
N – 句子长度;
p(wi) – 第i个词的概率
p(wi|w1w2w3…wi-1) – 这个表示基于前i-1个词,计算得出第i个词的概率,但有的语言模型是可以利用双向的,不知道是不是会这样计算:p(wi|w1w2w3…wn) ;
ppl越小,p(wi)则越大,也就是说这句话中每个词的概率较高,说明这句话契合的表较好。
bits-per-character (bpc)
参考:https://stats.stackexchange.com/questions/211858/how-to-compute-bits-per-character-bpc。
有计算公式如下:
论文:《Generating Sequences With Recurrent Neural Networks》中指出:当以每个单词为一个字符计算bpc时,存在,
按照实际计算的话,存在:
推导过程如下:
参考:https://chinesenlp.xyz/zh/docs/language_modeling.html