1 回答
TA贡献1777条经验 获得超3个赞
问:我想知道在P行中说一个低(绝对)数字是否合理,这意味着对该特定单词的置信度更高?
是的。正如文档所说,“P是每个令牌位置的位置分数”。分数实际上是对数概率,因此越高(即,绝对数越低)越“自信”。源代码可能不那么容易理解,但分数是由SequencScorer生成的,在那里你可以看到分数是规范化的(其中包括一个如果你使用单个模型或一个集合)。此外,在打印分数时,它们将它们从以e为底数转换为2:log
print('P-{}\t{}'.format(
sample_id,
' '.join(map(
lambda x: '{:.4f}'.format(x),
# convert from base e to base 2
hypo['positional_scores'].div_(math.log(2)).tolist(),
))
问:我试图弄清楚的是,我是否可以使用H数,或者以某种方式使用单个P数,以获得其转换中的置信度。
事实证明,H 值只是 P 值的平均值,如您所见:
score_i = avg_probs_i.sum() / tgt_len
也转换为基数 2。您可以在您的示例中检查这一点:
import numpy as np
print(np.mean([-0.0763,-0.1849 ,-0.0956 ,-0.0946 ,-0.0735 ,-0.1150 ,-0.1301 ,-0.0042 ,-0.0321 ,-0.0171 ,-0.0052 ,-0.0062 ,-0.0015]))
# >>> -0.06433076923076922
另一个通常用于评估语言模型性能的度量是困惑。一件好事是,可以根据 P 值轻松计算困惑度,如 fairseq 存储库的语言模型示例所示:
# Compute perplexity for a sequence
en_lm.score('Barack Obama is coming to Sydney and New Zealand')['positional_scores'].mean().neg().exp()
# tensor(15.1474)
我不是NLP方面的专家,所以我不能真正告诉你在你的案例中应该使用哪一个。
添加回答
举报