阅读(1.4k) 书签 (0)

文心一言 Few-Shot Prompting

2023-06-17 15:12 更新

介绍

我们在前面的教程中,提到我们可以给模型一些示例,从而让模型返回更符合我们需求的答案。这个技巧其实使用了一个叫 Few-Shot 的方法。这个方法最早是 Brown 等人在 2020 年发现的,论文里有一个这样的例子,非常有意思,通过这个例子你应该更能体会,像 文心一言 这类统计语言模型,其实并不懂意思,只是懂概率。

我输入的内容是这样的(追云、断月和落红雨 其实只是王者荣耀里的英雄技能):

不过这并不代表,Few-Shot 就没有缺陷,我们试试下面这个例子:

实际应该是:把所有的奇数相加(15,5,13,7,1)是41。答案是假的。

2.3.2 Few-Shot Chain of Thought

要想解决这个问题,可以使用Few-Shot Chain of Thought这个技巧。

要解决这个缺陷,就要使用到新的技巧,Few-Shot Chain of Thought。根据 Wei 他们团队在 2022 年的研究表明:

通过向大语言模型展示一些少量的样例,并在样例中解释推理过程,大语言模型在回答提示时也会显示推理过程。这种推理的解释往往会引导出更准确的结果。下面是论文里的案例,使用方法很简单,在技巧2 的基础上,再将逻辑过程告知给模型即可。从下面这个案例里,你可以看到加入解释后,输出的结果就正确了。

聊完技巧,我们再结合前面的 Zero-Shot Chain of Thought,来聊聊 Chain of Thought 的关键知识。根据 Sewon Min 等人在 2022 年的研究 表明,思维链有以下特点:

  • "the label space and the distribution of the input text specified by the demonstrations are both key (regardless of whether the labels are correct for individual inputs)" 标签空间和输入文本的分布都是关键因素(无论这些标签是否正确)。
  • the format you use also plays a key role in performance, even if you just use random labels, this is much better than no labels at all. 即使只是使用随机标签,使用适当的格式也能提高性能。

理解起来有点难,我找一个 prompt 案例给大家解释(🆘 如果你有更好的解释,不妨反馈给我)。我给 文心一言 一些不一定准确的例子:

在上述的案例里,每一行,我都写了一句话和一个情感词,并用 情感分类 分开,但我给这些句子都标记了错误的答案,比如第一句其实应该是 积极的 才对。但:

1.即使我给内容打的标签是错误的(比如第一句话,其实应该是 积极的),对于模型来说,它仍然会知道需要输出什么东西。 换句话说,模型知道 情感分类: 后要输出一个衡量该句子表达何种感情的词(积极的 或 负面的)。这就是前面论文提到的,即使我给的标签是错误的,或者换句话说,是否基于事实,并不重要。标签和输入的文本,以及格式才是关键因素。

2.只要给了示例,即使随机的标签,对于模型生成结果来说,都是有帮助的。这就是前面论文里提到的内容。

最后,需要记住,思维链仅在使用大于等于 100B 参数的模型时,才会生效。