Prompt Engineering的过程就是选择效果更好的prompt的过程,其关键在于 衡量prompt的效果 。
本文介绍3种 无需Ground Truth的prompt效果衡量方法 :Entropy(包括GlobalE、LocalE)[1]、Mutual Information(MI)[2]、Minimum Description Length(MDL)[3]。
无需Ground Truth意味着,在没有验证集或验证集数量不足的情况下,仍然可以用这些方法来prompt engineering。
关注笔者
方法1:Entropy(GlobalE和LocalE)
包括2种方法: Global Entropy
和 Local Entropy
。
Global Entropy(GlobalE)
。
核心思想:对一批样本而言,好的prompt不会产生非常不均衡的label分布。
即给定1批unlabel data,对每个data赋予概率最大的label,然后计算label分布的熵,这个值就是GlobalE。GlobalE希望 越大越好 。
这一思想和Label Bias Calibration技术[4])是一体两面。 Bias Calibration技术的思路是在prompt固定的前提下,尽量消除label bias,而prompt engineering的思路是一开始就要挑选label bias小的prompt。 (感兴趣的读者可移步笔者有关Bias Calibration的文章)
-
Local Entropy(LocalE)
核心思想:对单个样本而言,好的prompt不会产生过于自信的预测 。
这一思想与GlobalE的思想一脉相承,LocalE也是希望 越大越好 。
方法2:Mutual Information(MI)
核心思想:好的prompt能够最大化(prompt + x)与Y之间的互信息。
其中f(x)可理解为prompt + x,也就是经过处理后给到LLM的input。
从公式上看, H(Y)类似于GlobalE指标(但此处未进行One-Hot转换),H(Y|f(x))等同于LocalE 。
也就是说,给定一批unlabel data,MI方法希望 整体预测的label分布更均匀,同时单个的预测又要更自信 。其中第二点 与LocalE正好相反。
方法3:Minimum Description Length(MDL)
核心思想:好的prompt能够更好地压缩信息。
作者引入 Minimum Description Length(MDL)
方法,公式如下。
其中第二项与排序无关,可忽略,第一项的计算公式如下。
由于没有label y,因此使用数学期望来进行近似,公式如下。
因此最终的排序公式如下。
从最终公式来看, MDL方法等同于最小化LocalE,与LocalE的思路相反 。
同时论文作者提到,当有验证集时,无需再用数学期望来近似, 此时MDL等同于交叉熵loss ,说明了MDL方法的合理性。
Corpus Level & Instance Level讨论
这里有必要介绍prompt enginerring的两种粒度:
- corpus level :面对一个Task Corpus,进行一次prompt engineering,选出一个prompt之后,后续所有的test instance都使用这一个prompt;
- instance level :对于每一个test instance,进行单独的prompt engineering,选择不同的prompt。
instance level的效果上限比corpus level 更高 ,但同时也 更耗时 ,每一次inference都需要调用多次LLM来进行prompt engineering,如果使用收费API,那么费用是 成倍增长 的。(并且很遗憾的是,研究指出LLM之间的prompt engineering是较难迁移的[1],因此无法用小LLM来减少这个挑选成本)
在原论文中,GlobalE、LocalE、MI都应用在corpus level场景,MDL则应用在instance level场景。
那么,GlobalE、LocalE、MI可以应用在instance level场景吗? 答案是:LocalE可以,其他不行。当只有一条样本时,GlobalE和MI均=0,无法用于prompt排序。
MDL可以应用在corpus level场景吗? 答案是:可以。不严谨地看,MDL就是-LocalE,当然也可以使用了。
因此,当你需要corpus level的prompt engineering时,本文介绍的方法都可以尝试;当你需要instance level时,可以尝试LocalE与MDL。
总结
本文介绍的3种方法之间互有联系,本质上属于同一类方法,只是细节各有不同。
由于目前的LLM对于prompt仍然敏感,进行良好的prompt engineering非常重要。有足够验证集的时候,可直接通过验证集的表现来挑prompt;而如果没有验证集、或验证集数量不足,则可以尝试本文的方法。
至于本文的哪一个方法更好,综合理论本身以及各论文的实验结果,笔者的感觉是: 如果你需要corpus level的prompt engineering,那么优先尝试MI方法,如果你需要instance level,那么优先尝试MDL方法 。
另外,这些方法属于无监督学习范畴,可以发现,在LLM时代,经典理论仍然是很重要的。
参考资料
[1] Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity: https://aclanthology.org/2022.acl-long.556/
[2] An Information-theoretic Approach to Prompt Engineering Without Ground Truth Labels: https://aclanthology.org/2022.acl-long.60/
[3] Self-Adaptive In-Context Learning: An Information Compression Perspective for In-Context Example Selection and Ordering: https://aclanthology.org/2023.acl-long.79/
[4] Calibrate Before Use: Improving Few-shot Performance of Language Models.: http://proceedings.mlr.press/v139/zhao21c.html