评估特定主题的语言模型

数据挖掘 机器学习 nlp 语言模型 openai-gpt
2022-02-13 14:34:33

我已经在我的自定义数据集上微调了预训练的语言模型(GPT-2)。我想要一种方法来评估我的模型生成特定预定义主题的句子的能力,以单个关键字(例如“计算机”)或词袋(例如“计算机”、“ Linux','服务器'......)。

例如,给定一个 LM,模型的输出与Computers一词指定的主题有多相关?

我已经尝试过:从 LM 生成足够多的句子,并采用这些句子与目标主题(或该主题中的每个单词我们有多个单词)之间的平均余弦相似度,如此处所述我不确定这是否是一种有效的方法,而且句子之间的余弦相似性在许多情况下会产生很差的结果。

提前感谢您的帮助。

2个回答

您可以做的是与同一域的验证集进行比较。首先,您使用 LM 生成许多句子,并且对于每个句子,您针对整个验证集计算BLEU 分数。这个 python 脚本可能对此有用。

但是,您应该考虑到您的模型可能总是生成非常相似的句子。因此,人们通常不仅评估质量,还评估多样性。为此,您可以计算生成句子的“self BLEU”,也就是说,您可以计算每个生成句子的 BLEU 与其余生成句子的对比。你可以在这里找到一个脚本。

您还应该考虑到可以通过设置输出 softmax 温度的不同值来以质量换取多样性,反之亦然。为此,您可能希望在不同的温度值下评估您的模型,以了解不同的发电方式,将它们绘制为曲线,如下所示:

在此处输入图像描述

你可以在这篇文章中找到更多关于这种评估的信息,我从那里得到了这个数字。

您可以在此处找到质量多样性评估的替代方案

我认为在评估这样一个模型时(至少)需要考虑两个部分:

  • 生成的文本是否与输入的主题正确相关
  • 生成的文本在语法和语义上是否可接受

在我看来,第一种评估可以通过自动方法(例如您建议的方法)合理地完成。请注意,余弦分数不应该被绝对解释:您可能应该用随机的主题样本计算余弦相似度,并且通常人们期望输入主题的相似度比任何其他主题都高得多。您还可以考虑其他变体,例如在生成的文本上训练主题模型以及来自各种已知主题的文档样本,然后检查生成的文本是否属于目标主题(即它应该与已知的文档分组属于这个话题)。

对于第二种评估,使用自动方法将是困难且不可靠的。据我所知,唯一可靠的方法是要求人工注释者评估文本在语法上是否正确以及其内容是否有意义。如果您打算这样做,您不妨要求他们注释文本与主题的相关程度。


[添加以下评论]

如果您仅通过计算与该目标主题的相似度来检查生成的文本是否与该主题相似,那么您获得的是例如平均余弦分数。然后您可能会选择一个阈值:例如,如果相似度高于 0.5,则认为该文本确实与主题相关。但是这个选项有两个问题:

  • 在某些情况下,即使文本与主题正确相关,平均相似度也会低于阈值。例如,这可能发生在涵盖大量词汇的非常“广泛”的主题中。
  • 相反,您可能会遇到平均相似度高于阈值的情况,但实际上与另一个主题进行比较会给出更高的相似度值。

这些问题是由于“绝对”解释相似度得分,而不是相对于其他相似度得分来解释它。相反,您不仅可以计算目标主题的相似度,还可以计算其他主题的相似度,然后只需检查目标主题是否是最相似的主题(或至少是最相似的主题之一)。这边走 :

  • 目标相似度分数可能较低,只要高于其他主题即可
  • 您可以检测到另一个主题恰好比目标主题具有更高相似度的情况