评估大型语言模型中的文本生成

原文:towardsdatascience.com/evaluating-text-generation-in-large-language-models-d4a4baee49a8

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/06cfd2e01b7cd28a8609737980c42458.png

图片来源 unsplash.com

最近,大型语言模型在生成类似人类文本方面显示出惊人的能力。有许多指标可以衡量大型语言模型生成的文本与参考人类文本的接近程度或相似度。实际上,弥合这一差距是研究的一个活跃领域。

在这篇文章中,我们探讨了两个用于自动评估机器生成文本的知名指标。

BERTScore

假设你被给定了一个人工生成的参考文本和一个由大型语言模型(LLM)生成的机器生成文本。为了计算这两个文本之间的语义相似度,BERTScore 计算标记嵌入对的余弦相似度。请看下面的图片:

<…/Images/cefed0d010fa833c5f7e1cd3fc67e9dd.png>

图片来源 [1]

在这里,参考文本是 “今天天气很冷”,而候选文本是机器生成的 “今天很冷”。 如果我们计算这两个文本的 n-gram 相似度,它们的得分会很低。然而,我们知道它们在语义上非常相似。所以 BERTScore 计算了参考文本和候选文本中每个标记的上下文嵌入,并根据这些嵌入向量,计算成对的余弦相似度

<…/Images/e39b7368fc2021e3a611dcd8464201d6.png>

图片来源 [1]

基于成对的余弦相似度,我们可以计算精度、召回率和 F1 分数。为此,按照以下步骤进行:

  • 召回率:我们对参考文本中的每个标记获取最大的余弦相似度并计算它们的平均值

  • 精度:我们对候选文本中的每个标记获取最大的余弦相似度并计算它们的平均值

  • F1 分数:精度和召回率的调和平均值

<…/Images/c1e03e7ba0c90f8c978598501f145ad6.png>

图片来源 [1]

BERTScore[1] 还提出对上述评分的一种修改,称为**“重要性加权”。在“重要性加权”**中,考虑到两个句子之间共有的罕见词比常见词更能表明两个句子之间的相似性。因此,他们使用 idf(逆文档频率) 来表示每个标记的重要性权重。他们按以下方式计算每个标记的 idf

<…/Images/18abcc62cf37a6f3afe714ca1839570d.png>

图片来源 [1]

在这里,M 是语料库中的总句子数,I 是一个指示函数,表示单词 w 是否在句子中。他们使用 +1 平滑处理 idf 分子中的未知单词。

因此,使用 idf,召回率的公式如下:

<…/Images/52f8a001c5bc1819f527817d23ac3e5a.png>

图片来自 [1])

上述例子中 BERTScore 的计算如下:

<…/Images/53d86f36ad9ac8400877e046b21383eb.png>

图片来自 [1])

Mauve

自回归模型在词汇表的标记上形成一个 分布,并与解码机制相结合,从这个分布中采样一个标记,并逐个输出。

如果你对解码机制不熟悉,请阅读 这篇帖子

使用 Transformers 进行语言生成的解码方法

为了比较一个语言模型生成的文本与人类文本,Mauve [2] 将语言模型生成的语言分布与人类真实分布进行比较。

设 P 为真实分布,Q 为语言模型生成的机器分布。

<…/Images/3d20b7d82552708a744b84f8b819235e.png>

两个分布 – 图片来自 [2]

要比较 P 和 Q,我们必须考虑两种类型的错误:

  1. 第一类错误 = 假阳性错误 = 存在文本 x,其中 Q(x) 较大但 P(x) 较小。换句话说,LLM 对一个不类似人类文本的序列/标记生成高概率。

  2. 第二类错误 = 假阴性错误 = 存在文本 x,其中 P(x) 较大但 Q(x) 较小。这与上面相反,意味着 LLM 未能生成类似人类的文本。类似人类的文本/标记具有较大的概率 P(x),而 LLM 生成较小的概率 Q(x)

<…/Images/fa2291743617bb4268c8f8e36f4c2184.png>

图片来自 [2]

现在,如果你熟悉 KL 散度,你知道 KL(P||Q) 衡量第一类错误。同样,KL(Q||P)衡量第二类错误。

让我们回顾一下 KL 散度。考虑以下离散分布 P 和 Q 的例子:

<…/Images/da591e2e7fe9b7f23d7818229ae4d759.png>

图片来自 [3]

我们可以看到,Q 是一个概率为 1/3 的均匀分布,而 P 是一个概率为 0.4 的二项分布。我们可以计算 KL(P||Q)和 KL(Q||P)的 KL 散度如下:

<…/Images/01179329f28336cd9fb9b6b8f17a46ed.png>

图片来自 [3]

不幸的是,如果两个分布的支持集不相同,KL(P||Q) 或 KL(Q||P) 将是无限的;这在自然语言生成的情况下是常见的情况。为了解决这个缺点,Mauve [2] 提出以下分布混合方法:

<…/Images/d714ebfcabcab4a908d4032904e3dcea.png>

来自 [2] 的图片

这种新的混合分布允许 Mauve[2] 测量软 Type-I 错误和软 Type-II 错误。

然后他们定义了一个由以下数据点指定的发散曲线

<…/Images/da3837d994ab0fb9a894ccf3438add1d.png>

来自 [2] 的图片

注意 C(P,Q) 是一组数据点,其中数据点的第一个坐标是软 Type-I 错误,第二个坐标是软 Type-II 错误。这些点共同定义了发散曲线,该曲线捕捉了两个错误之间的权衡。

Mauve(P,Q) 是这个发散曲线下的面积。

Mauve 的值越大,表示 Q 越接近 P。

<…/Images/8d52d96714aeccf5543d17cb89405960.png>

来自 [2] 的图片

如何计算 Mauve: 为了在实践中测量 Mauve,我们需要访问真实的分布 P,但我们没有。为了克服这一点,论文 [2] 提出以下方式使用蒙特卡洛估计器:

  1. 样本文本实例 x ~ P 和 x’ ~ Q。

  2. 有足够的样本后,通过编码器传递并获取它们的嵌入向量。

  3. 通过将 P 的嵌入向量聚类成 k 个簇来量化分布。同样,通过应用 k-means 将 Q 的嵌入聚类成 k 个簇。

  4. 现在每个分布的支持集是 k,我们计算一个簇标签的概率,作为落入该簇的数据点的比例。

在获得 P 和 Q 的量化分布后,我们可以计算它们的 Mauve 分数,作为原始分布 Mauve 分数的估计。

作者运行以下实验来比较 GPT2 和 Grover 在不同解码机制下的收敛曲线。他们表明,来自较大模型和核采样生成的文本更接近人类文本 [2]。

<…/Images/7e52c8a53d280791276f01f02f7d425e.png>

来自 [2] 的图片

结论

在这篇文章中,我们探讨了两种系统性地计算 LLM 生成的文本和人类生成的文本相似度的指标。第一种方法,BERTScore,通过使用成对余弦函数计算每个文本的标记的相似度。第二种方法,Mauve,考虑生成文本的分布,并使用 KL 散度的混合来计算相似度。


如果您有任何问题或建议,请随时联系我:邮箱:[email protected] 领英:www.linkedin.com/in/minaghashami/

参考文献

  1. BERTScore: 使用 BERT 评估文本生成

  2. MAUVE:使用发散前沿测量神经文本与人类文本之间的差距

  3. zh.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值