Toward Human Readable Prompt Tuning: Kubrick’s The Shining is a good movie, and a good prompt too?
Shi W, Han X, Gonen H, et al. Toward Human Readable Prompt Tuning: Kubrick’s The Shining is a good movie, and a good prompt too?[J]. arXiv preprint arXiv:2212.10539, 2022.
这篇工作的目的不仅是提出一种prompt生成方式,也是研究一下prompt提高LLM性能的内在原因。
首先,该文章基于SGD优化的soft prompt提出了一种监督式的prompt生成方式FluentPrompt,在SGD的基础之上,FluentPrompt在每次迭代的时候会随机增加一些噪声来鼓励多样性,同时会在迭代时将soft prompt投影到最近的vocabulary embedding上来保证可读性,还有另一个损失函数来衡量生成的prompt的流畅度。
纯SGD优化的soft prompt迭代方程:
soft prompt迭代方程:
流畅度损失函数,简单说来就是通过前面已经生成的prompt得到后面生成的新词的概率的累乘。
整个损失函数,或者说能量函数,则是准确率和流畅度的加权:
第一次实验,FluentPrompt跟纯SGD优化的soft prompt做了一个对比,注意此AutoPrompt非之前博客里讲的AutoPrompt,但后面为了方便就用AutoPrompt指代了。准确率FluentPrompt稍逊一筹,但困惑度确实要比AutoPrompt好多了,稍微讲点道理(但其实不多。
基于此,作者做了更进一步的实验,首先是流畅度的引入相比没有流畅度准确率提高了,而且困惑度明显下降。
然后噪声的引入确实让prompt变得更多样,这个后续没什么分析,图就不放了。
之后,作者就开始找规律,什么才是好prompt捏?有两个观点,好的prompt会校准模型的输出分布;好的prompt会有与任务的主题相关联。为了证实这两个观点,作者也补充了一些实验。
好的prompt会校准模型的输出分布:作者将发现在情感分析的任务中,一些有效的prompt会出现明显带负面情感的单词,这可能是因为预训练的模型因为训练数据的原因带有一些偏差,可能导致在情感分析的时候更容易出现积极的评价,而prompt中的负面词汇就是为了“抵消”这样的倾向。首先作者用输出分类标签的熵来衡量LLM输出的label是否平衡,越平衡熵越大。在测试输出label的熵的时候,所分析的文本都是完全“中立”的,不带任何感情色彩,如下表。
结果显示,effective prompts的熵雀氏比没有prompt或者人类写的prompt输出要更balance一些。
为了表示输出平衡雀氏可以让LLM性能更好,作者还计算了label熵和performance的相关性,显示强相关。
好的prompt会有与任务的主题相关联:作者注意到在SST-2这样的电影评价情感分析任务里,prompt就会有电影或者导演的名字,在Amazon产品评价分析里就会有产品的名字。为了定量分析这个推论,作者先用GPT-3把FluentPrompt生成的略微不太好懂的prompt续写成地更长一点,然后分析其中是否有和任务主题相关的词汇,发现effective prompt中主题相关词汇的频率确实比一般的prompt要高,而且准确率也要高一点。
这篇文章的思路最有意思的点在于,先用监督的方法提出prompt,然后找规律,根据规律得到了无监督的方法。作者在loss function中引入了计算输出label平衡度的熵函数
以及和输入的相关性
最后得到一个无监督的损失函数:
最后这个无监督的FluentPrompt居然效果比监督的还好(在SST-2和Amazon上),但作者没有进一步分析。
总的来说这篇文章得出了一些有意思的结论,在情感分析这种简单的二分类任务上表现也不错,但在AGNEWS上面表现稍有下降。同时作者的定性和定量分析都比较有理有据,但还是只局限在简单任务上,不知道同样的方法在复杂一点的任务上有没有效果。