gpt4 book ai didi

python - 如何解释 fairseq 生成的 P 数?

转载 作者:行者123 更新时间:2023-12-03 16:49:32 26 4
gpt4 key购买 nike

使用 fairseq-generate.py 和 Transformer 架构,每次翻译都会生成一个像这样的部分:

Why is it rare to discover new marine mammal species?
S-0 Why is it rare to discover new marine mam@@ mal species ?
H-0 -0.0643349438905716 Pourquoi est-il rare de découvrir de nouvelles espèces de mammifères marins?
P-0 -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

this explanation :

H is the hypothesis along with an average log-likelihood; and P is the positional score per token position, including the end-of-sentence marker



我想知道在 P 行中说低(绝对)数字意味着对该特定单词的更高信心是否合理?例如。 “Pourquoi”的 -0.07 是否意味着它比“est-il”的(-0.1849)更快乐?最后的低 -0.0015 意味着它真的有信心句子应该在那里结束。

背景:我想要解决的是,我是否可以使用 H 数或以某种方式使用单个 P 数来获得其翻译的置信度。我一直在针对 H 数字分析一些翻译,并没有注意到它与我对翻译质量的主观看法之间有太多对应。但我有几个我认为它特别差的地方——它漏掉了一些关键信息——最终的 P 值相对较高 -0.6099-0.3091 (最终的 P 号是 -0.11 左右,其中大部分是这样。)

最佳答案

Q: I'm wondering if it is reasonable to say a low (absolute) number in the P row means higher confidence in that particular word?


  • 是的。正如文档所说,“P 是每个标记位置的位置分数”。分数实际上是对数概率,因此越高(即绝对数越低)越“自信”。源代码可能不太容易理解,但分数是由 SequenceScorer 生成的。 ,在那里你可以看到分数被归一化(如果你使用 single modelensemble,其中包括 log)。此外,在打印分数时,他们 convert them from base e to 2 :
    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(),
    ))

  • Q: What I'm trying to work out is if I can use either the H number, or somehow to use the individual P numbers, to get a confidence measure in its translation.


  • 事实证明,H 值只是 P 值的平均值,如您所见 here :
    score_i = avg_probs_i.sum() / tgt_len
    还有converted to base 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
    另一个经常用于评估语言模型性能的度量是 Perplexity .好消息是,可以根据 P 值轻松计算困惑度,如 Language Model example 所示。 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 方面的专家,所以我不能真正告诉你应该在你的情况下使用哪个。
  • 关于python - 如何解释 fairseq 生成的 P 数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60765496/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com