离散型prompt模板构建 【转载以学习、回忆】

离散型prompt模板构建 【转载以学习、回忆】

在看产品观点提取比赛 前几名方案有一个用到了P-tuning,这种方法实现了模板的自动构建。但是又查发现prompt构建有连续型又有离散型。

因此寻文一篇查看离散型的构建。

来源:知乎 泽龙

来源链接:https://zhuanlan.zhihu.com/p/488004617

转载以学习、回忆

正文开始 有删减


1 简介

在上一章节中我们分享了人工构建prompt的若干样例,虽然这种方式直观,但是人工构建prompt的方式有两个弊端,一方面人工构建prompt和测试prompt效果耗费时间跟精力,另一方面是即便是专业人士也不一定能通过人工的方式构建最优的prompt。为了解决这个问题,自然而然就衍生自动构建prompt的方式,自动构建prompt可以分为离散型的prompt(prompt可以用具体的字符表示)和连续型的prompt(prompt由向量替代)。在这个章节中,我们聚焦在几种不同的自动构建离散型prompt的方法,至于连续型prompt的方法,在后面的章节再分享。

额 下边不是递进关系呀。就是自动构建离散型prompt的一些方法。先看mining和paraphrasing吧

2 Prompt Mining【1】

这是通过挖掘的方式去自动构建prompt的方法。对于数据集LAMA中的三元组(头部实体,关系,尾部实体),可以通过mask掉尾部实体去构建相应的完形填空格式,如果模型能正确预测出对应的尾部实体,就说明模型具有这个知识。选择合适的prompt,对于最终的效果有深远影响。那么该怎么去自动选择合适的prompt?

a) 首先是去挖掘可能的prompt,构建prompt的候选集。对于每一种关系,去寻找包含这种关系的数据,然后有两种挖掘到prompt的方式。第一种是直接找那些位于头部实体跟尾部实体之间的片段,将相应的头部实体跟尾部实体替换为占位符即可。例如涉及出生地点的数据“Barack Obama was born in Hawaii”可以被转换为相应的prompt ”<x> was born in <y>”。第二种是依赖于句法分析,找到从头部实体到尾部实体之间的最短依存路径,然后将该依存路径作为挖掘到的prompt。例如“France<<pobjof<<prep capital<<nsubj is<<attr Paris”,找到介于France和Paris的最短依存路径,就可以得到相应的prompt“capital of <x> is <y>”。

b) 筛选prompt。通过第一步可以挖掘得到数量繁多的prompt,同一种关系也有多个prompt与之对应,但是这些prompt的效果会有一定差异,所以需要进行筛选。首先会在模型会分别使用这些prompt在监督数据上做测试,记录同一种关系下不同prompt的指标。后续比较简单的方式可以用每种关系下效果最好的prompt作为最终选择,也可以去集成多种prompt的效果,将同一种关系下的多种prompt根据在训练集上的效果进行排序,选择其中topK个,通过直接平均得到模型在这个K个prompt的效果,最终每个关系对应的是K个prompt的集成。在前面集成多个prompt的基础上,还能多进一步的优化,通过训练得到每个prompt的权重。

实验证明了使用人工构建prompt的下限会更低,只使用Top1的prompt的效果平均比人工构建prompt的方式更好,使用多个prompt集成的效果会优于只使用Top1的prompt。

3 Prompt Paraphrasing

这种方式依赖于现有的种子prompt,通过把种子prompt扩充得到更多的候选prompt,然后从中选取在目标任务表现最好的prompt作为最后选择。扩充的方式可以分为很多种。

3.1 Paraphrasing-based Generation[1]

对于一个种子prompt,首先将这个种子prompt翻译成另外一种语言,得到翻译结果的B个候选,然后将这B个候选再翻译回最初的语言,每个候选又有B个候选。所以一个种子prompt可以由此获取B*B个候选prompt,对这个B*B个候选prompt排序,将得分最高的K个prompt,作为自动构建prompt的结果。

自注:这种就是翻译回译

3.2 BARTSCORE-Prompt【2】

文本生成任务中怎么去评估生成的文本是否通顺,准确或者有效呢?一个通用的想法就是生成的文本质量越高,模型会给它打上更高的分数。BARTSCOR是一个语言模型,在计算根据源文本生成目标文本的概率时会引入预测token的权重,不同的token具备不同的权重,类似于逆文档权重。

·····

自注:这里还有 看不懂啊。。。。这BARTSCORE先不看了

7 总结

离散型的人工构建prompt的方式层出不穷,可以通过种子prompt去扩充,可以通过生成方式去获取,在构建得到prompt候选集后,可以在直接在下游任务上评估,也可以通过语言模型去打分,最终可以只选择最合适的一种prompt,也可以集成多个prompt。总而言之,这里面的组合千变万化,在具体任务上需要多加考虑。

未完待续

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部