文档链接地址Prompt-based learning.
1. 为什么不能微调而要 Prompt Tuning
主要是模型在 2022 年已经变得非常大,动不动上 10 亿,GPT-3 175B 的参数就非常吓人了。在原有模型上微调的成本越来越高。
这里总结了 PaLM, ChatGPT,LLaMa, GPT4,Bard 各种模型的训练 token 和模型规模包括 layer,模型隐状态。
对于微调和 prompt tuning 的本质理解比较认可的是这段话:
Fine-tuning 的本质是改变预训练模型的 weights。由于预训练模型在原域上已经有非常好的性能了,域的迁移会受到原域的阻力,因为使用 fine-tune 改变的 weight 是原域上的 weight。
——来自于 提示学习 Prompt Tuning:面向研究综述
因此,不要微调,只要大模型和 prompt tuning.
No fine-tuning!!! Literally just take a pretrained LM and give it the following prefix.
2. 什么是 Prompt tuning
如这个模板:“Translate English to French: sea otter => loutre de mer, cheese =>”,prompt tuning 就是:
自然语言指令 + 任务 demo+ 实际任务这种模板。
Zero-shot 就是没有任务的 demo 给模型,只给指令和实际任务
One-shot 给一个任务的 demo。
Few-shot 给少量的任务例子。最多给 00 就行了。
3. Prompt tuning 和 Fine tuning 比较
主要差异:
- 预训练 + 微调:在这种方法中,语言模型首先在大规模的无标签文本数据上进行预训练,以学习一般的语言模式和知识。在预训练之后,模型会使用带有标签的特定下游任务数据进行微调。微调的过程通过根据特定任务的数据来更新预训练模型的参数,使其适应特定任务。
- 无微调的预训练模型:在这种新的范式中,重点是 直接使用预训练的语言模型 ,而无需进行进一步的微调。与 更新预训练模型的参数不同,该模型直接应用于目标任务,而无需针对任务进行参数更新。Ptompt 不需要改变预训练参数,直接拿过来用,将原本的预训练领域直接转到特定任务领域。
要点总结:
- “预训练 + 微调”范式包括两个不同的阶段:预训练和特定任务的微调,而新的范式跳过了微调阶段。
- “预训练 + 微调”通过参数更新将预训练模型调整到特定任务中,而新的范式直接将预训练模型应用于任务,而无需任务特定的参数更新。
- 新的范式假设预训练模型已经从预训练阶段中获得了有用的知识和表示,可以在各种下游任务中有效利用,而无需额外的微调。
需要注意的是,选择使用哪种范式取决于标注数据的可用性、目标任务的复杂性以及性能和计算资源之间的权衡。每种方法都有其优点和局限性,研究人员和从业者可以根据自己的需求选择最适合的范式。
4.Prompt 的分类
- Discrete/hard prompts
- 人类认为不错的硬提示对于 LM 来说不一定是一个好的硬提示,这个性质被称为硬提示的 sub-optimal(次优)性。
- 硬提示的选择对于预训练模型的影响非常大。
比如下面这个对比实验数据就表明,不同的 Prompt 效果差异特别大。
- Continuous/soft prompts
软提示与硬提示之间存在着明显的差异。软提示的生成被视为一个独立的任务进行学习,这将使机器能够自主学习和尝试生成提示,而不再依赖于人类逐个尝试的方式(硬提示)。
然而,由于软提示需要机器自己进行学习,这必然引入了新的参数到模型中。这带来了另一个问题:如何有效地学习软提示的参数?目前,研究者们关注以下几个热点方向:
- P-tuning:将提示转化为标记,并使用双向 LSTM 进行学习。
- P-tuning:采用混合的提示初始化策略,如 CLInit 和 SelectInit。
- Prefix-tuning:针对不同的模型,在输入中不同位置注入提示。以下是其原理图示例:
参考
[2] The Power of Scale for Parameter-Efficient Prompt Tuning