Prompt Tuning 提示微调
Fine Tuning 微调
Prompt Engineer 提示工程
参考:
https://research.ibm.com/blog/what-is-ai-prompt-tuning
https://www.datacamp.com/tutorial/understanding-prompt-tuning
https://arxiv.org/pdf/2109.01134
https://arxiv.org/pdf/2101.00190
提示微调是一个高效的、低成本的方法去调整基础模型去适应新的下游任务,而不用去重新训练模型,更新其参数。
提示工程:设计输入的模板,以使预训练模型产生更好的输出。
微调:对于预训练模型,在下游新任务的数据集上进行训练,调整模型权重,以适应新任务。
提示微调:在输入的模板中加入可学习参数。训练过程中,将模型进行冻结,只对输入提示的可学习参数进行调整。
方法 | 资源消耗 | 需要训练? | 适用于 |
---|---|---|---|
微调 | 高 | 是 | 任务需要模型高度定制 |
提示微调 | 低 | 是 | 跨任务但维持模型完整性 |
提示工程 | 无 | 否 | 无计算成本的快速调整 |
提示微调 vs 提示工程
提示工程是人依据经验对提示进行调整,调整的是人能看懂的“硬”提示。“硬”提示在送入模型之前也要转换成embeddings,是“软”提示,而提示微调就是在这里进行工作。提示微调对“软”提示加一些“数字”——可学习参数,在训练过程中对这些参数进行学习,以实现更好的效果。
如下图,CoOp中的一张图,在CLIP上使用不同的提示对分类精度的影响。前三行可以说是提示工程,使用不同的模板,调整“硬”提示提高性能。而第四行CoOp(提示微调的方法)调整“软”提示,去提高性能。
提示微调 vs 微调
微调是将所有的Transformer参数进行调整,需要针对不同任务进行不同的调整。而提示微调会冻结Transformer模型,仅仅去优化前缀。