提示集成

提示集成是使用多个不同的提示来尝试回答相同问题的概念。有许多不同的方法可以实现这一点。

DiVeRSe

DiVeRSe(“Diverse Verifier on Reasoning Steps”)是一种方法,以三种方式提高答案的可靠性。它通过以下方式实现:1)使用多个提示生成多样化的完成结果,2)使用验证器来区分好的答案和坏的答案,3)使用验证器来检查推理步骤的正确性。

1.png

DiVeRSe (Li et al.)

多样化提示

DiVeRSe 在给定输入中使用了 5 个不同的提示。为了构建每个提示,它们从训练集中随机抽取了几个示例。以下是一个以此方式构建的少样本提示(k=2)的示例,其中示例来自 GSM8K 基准测试2。在实践中,DiVeRSe 在该基准测试中使用了 5 个示例作为提示。

Q: Natalia在4月份向她的48个朋友卖了夹子,然后在5月份卖了一半数量的夹子。Natalia在4月和5月总共卖了多少个夹子?
A: Natalia在5月份卖了48/2 = 24个夹子。
Natalia在4月和5月总共卖了48+24 = 72个夹子。
####72
Q: Weng每小时做保姆工作赚12美元。昨天,她只做了50分钟的保姆工作。她赚了多少钱?
A: Weng每分钟赚12/60 = 0.2美元。
工作50分钟,她赚了0.2 x 50 = 10美元。
####10
Q: Betty正在为一款价值100美元的新钱包存钱。Betty只有她所需金额的一半。她的父母决定给她15美元,她的祖父母给她的父母的两倍。Betty还需要多少钱才能买到钱包?
A:

在生成像上面那样的5个不同提示后,DiVeRSe对每个提示进行20个推理路径的采样(temperature = 0.5)。以下是上述提示的几个示例完成。请注意,答案并不总是正确的。

Betty有0.5*100 = $50。
然后她再得到15美元 = $65。
然后她再得到2*15 = $90。
她还需要10美元。
#### 10
A: Betty有0.5*100 = $500。
然后她再得到15美元 = $650。
然后她再得到2*15 = $900。
她还需要1000美元。
#### 1000

到此为止,DiVeRSe已经生成了100个不同的完成。

投票验证器

现在,我们可以像Self-Consistency[3]一样采用多数票答案。

然而,DiVeRSe提出了一种更复杂的方法,他们称之为“投票验证器”。

在测试时,使用投票验证器是一个两步的过程。首先,验证器(一个神经网络)根据完成的可能性为每个完成分配一个0-1的分数。然后,“投票”组件将所有答案的分数求和,得出最终答案。

示例

这是一个小例子。假设我们有以下关于提示“两加二等于几?”的完成:

4
two + 2 = 5
I think 2+2 = 6
two plus two = 4
It is 5

验证器将阅读每个完成并为其分配一个分数。例如,它可能分配以下分数:0.9、0.1、0.2、0.8、0.3。然后,投票组件将对每个答案的分数进行求和。

score(4) = 0.9 + 0.8 = 1.7
score(5) = 0.1 + 0.3 = 0.4
score(6) = 0.2

最终答案是4,因为它具有最高的分数。

但是验证器是如何训练的?

验证器使用稍微复杂的损失函数进行训练,我在这里不详细介绍。

提问我吧(AMA提示)

2.jpg

提问我吧(AMA提示)是一种与DiVeRSe类似的方法。然而,它的多个提示步骤和答案聚合步骤都有显著的区别。AMA的核心思想是使用LLM生成多个提示,而不仅仅使用不同的few-shot样例。

多个提示

AMA表明,您可以采用多种方式重构问题,以创建不同的提示。例如,假设您正在从一些网站上收集有关动物的信息,并且只想记录生活在北美地区的动物。让我们构建一个用于确定这一点的提示。

给定来自维基百科的以下段落:

Kermode熊,有时被称为灵熊(Ursus americanus kermodei),是美洲黑熊的一个亚种,生活在加拿大不列颠哥伦比亚省的中部和北海岸地区。

您可以将此任务格式化为以下提示:

给定上下文,以下陈述是否为真?

上下文:Kermode熊,有时被称为灵熊(Ursus americanus kermodei),是美洲黑熊的一个亚种,生活在加拿大不列颠哥伦比亚省的中部和北海岸地区。
陈述:这种动物生活在北美洲
答案:

这种表述有点奇怪。为什么不直接使用以下更简单的提示?

上下文:Kermode熊,有时被称为灵熊(Ursus americanus kermodei),是美洲黑熊的一个亚种,生活在加拿大不列颠哥伦比亚省的中部和北海岸地区。
问题:这种动物是否生活在北美洲?

嗯,通过以这种特殊方式构思问题,我们可以生成不同的提示。我们的第一步是将陈述“这种动物生活在北美洲”重新格式化为不同的问题,这些问题实质上是在询问相同的事情。为了做到这一点,我们将通过以下图像中的提示将陈述传递。

3.png

这可能会生成以下结果:

  1. 动物是否生活在北美洲?
  2. 这种动物是否生活在北美洲?
  3. 这种动物生活在哪里?

这个想法是为任务创建不同的视角。然后,我们将每个视角应用于给定的上下文,如下所示:

上下文:Kermode熊,有时被称为灵熊(Ursus americanus kermodei),是美洲黑熊的一个亚种,生活在加拿大不列颠哥伦比亚省的中部和北海岸地区。
问题:动物是否生活在北美洲?

然后,我们可以为每个视角生成答案:

  1. 是的
  2. 是的
  3. 北美洲

这些是中间答案。我们需要将它们映射到任务标签(例如:是或否)。

我们可以通过以下提示将中间答案传递来完成这一点:

选择正确的类别。

"类别":
- 是,北美洲
- 不是,非北美洲

"Yes it was"符合类别:

现在,我们可以得到输出答案。

  1. 是,北美洲
  2. 是,北美洲
  3. 是,北美洲

在这里,它们都达成一致,所以我们可以直接选择第一个答案。然而,如果它们存在分歧,我们可以使用AMA的聚合步骤来获得最终答案。

答案聚合

AMA使用了一种非常复杂的策略来聚合答案(比DiVeRSe更复杂),而不仅仅是采用多数答案。为了理解为什么多数答案可能不是一个好选择,请考虑我们之前生成的两个问题:

  1. 动物是否生活在北美洲?
  2. 这种动物是否生活在北美洲?

它们非常相似,所以很可能会生成相同的结果。由于问题如此相似,它们会有效地对最终结果产生偏见。为了解决这个问题,AMA依赖于弱监督和复杂的数学方法,以估计它创建的不同提示之间的依赖关系,并将其适当加权。

因此,对于我们生成的三个问题,它可能分配25%、25%和50%的权重,因为前两个问题非常相似。

尽管AMA的聚合策略很强大,但它非常复杂,我在这里不会详细介绍。

结果

  • 使用这种提示策略,AMA能够使用GPT-J-6B5超过GPT-3。
  • AMA在上下文中包含答案的问题上表现更好。

要点

集成方法非常强大。它们可以用于提高任何模型的性能,并可以用于提高模型在特定任务上的性能。

在实践中,多数投票应该是您的首选策略。

标签: prompt教程, prompt基础, prompt进阶, prompt应用, prompt核心, prompt提示, 提示工程, 提示工程师, prompt提示工程, prompt基础教程, prompt进阶教程, prompt高级教程, prompt核心教程, prompt代码教程, prompt菜鸟教程, prompt命令教程, prompt使用教程