一、Adapter Tuning :开启大模型 PEFT (2019)
Adapter 核心技术解读:Adapter 嵌入 Transformer 网络
在两个FNN层后增加 Adapter 层:Adapter 层被嵌入在 Transformer 网络的两个 FNN 层之间,通过增加额外的层来增强模型的表现。这一方法通过在原有网络结构中引入适配层,使得模型在特定任务上的微调变得更加高效。
Adapter 内部学习降维后特征,减少参数:Adapter 层通过学习降维后的特征,有效地减少了参数数量。这种降维方法不仅能保留原有特征的关键信息,还能显著降低计算复杂度,从而提升模型的运行效率。
使用skip-connection,最差退化为 identity:通过使用 skip-connection 技术,即使在最差情况下,Adapter 层也可以退化为 identity,从而保持模型的稳定性。Skip-connection 确保了信息能够无阻碍地通过不同层,从而提高了模型的稳健性和可复用性。
提升微调效率和稳定性,可复用性增强:Adapter Tuning 提升了微调效率和稳定性,同时增强了模型的可复用性,使得在不同任务间切换更加便捷。这一技术不仅减少了对新数据的依赖,还提高了适应新任务的能力。
二、Prefix Tuning :自动化构造 Prompts (2021)
Prefix Tuning 核心技术解读:Prefix 嵌入 Transformer 网络
在预训练 Transformer 前增加 Prefix 模块:Prefix Tuning 方法通过在预训练的 Transformer 模型前增加一个前缀模块,仅训练前缀部分,而冻结 Transformer 的全部参数。这种方法通过引入任务特定的前缀来引导模型生成特定任务的输出。
仅训练 Prefix,冻结 Transformer 全部参数:Prefix Tuning 仅对前缀部分进行训练,而冻结其余的模型参数,从而大大减少了训练所需的计算资源和时间成本。这一方法特别适合那些参数数量庞大的模型,如 GPT-3,使得微调这些模型成为可能。
降低 GPU 算力和训练时间成本:通过减少需要训练的参数数量,Prefix Tuning 显著降低了 GPU 算力和训练时间成本。这不仅提高了模型训练的效率,还降低了硬件需求,使得更多研究者能够进行大模型的微调。
Prefix:任务特定的指令集,引导模型生成特定任务的输出:前缀作为任务特定的指令集,通过引导模型生成特定任务的输出,提高了模型在特定任务上的性能。这种方法使得大模型能够更加灵活地适应不同的任务需求,增强了其实用性。
三、Prompt Tuning :Soft Prompts 开创者 (2021)
1、Prompt Tuning 主要贡献
直观性:Prompt Tuning 使用直观的语言提示来引导模型,使其更易于理解和操作。这种方法通过人类可理解的提示词来引导模型,从而使得模型的操作更加透明和直观。
适用性:这种方法特别适用于那些预训练模型已经掌握了大量通用知识的情况,通过简单的提示就能激发特定的响应。Prompt Tuning 通过利用模型已掌握的知识,快速适应新的任务,提高了模型的通用性。
微调成本低:Prompt Tuning 可以在微调时减少所需的计算资源,同时保持良好的性能。这一方法通过减少对模型参数的调整,降低了训练成本,使得微调变得更加经济高效。
2、Prompt Tuning 核心技术解读:Prompt Tuning 训练方法
设计提示:根据任务选择硬提示(固定文本)或软提示(可训练向量)作为输入。硬提示通常是固定的文本片段,而软提示则是可训练的向量,能够根据任务需求进行调整。
融入输入:硬提示直接加入文本,软提示作为向量加入序列。在实际应用中,硬提示可以直接插入到输入文本中,而软提示则以向量的形式嵌入到输入序列中。
训练过程:硬提示下全面微调模型;软提示下只调整提示向量,其他参数不变。硬提示需要对模型进行全面微调,而软提示则仅调整提示向量,从而减少了训练复杂度。
执行任务:训练后模型用于 NLP 任务(如问答、摘要),输出由提示引导。经过训练的模型能够在不同的 NLP 任务中表现出色,其输出由预设的提示词引导,从而提高任务执行的准确性和效率。
四、P-Tuning v1 :解决人工设计 Prompt 的问题 (2021)
1、P-Tuning 的创新之处
离散性(Discreteness):预训练优化过的正常语料嵌入层与直接对输入提示嵌入进行随机初始化训练相比,可能会导致后者陷入局部最优解。P-Tuning 通过优化提示嵌入层,避免了这种局部最优解的问题。
关联性(Association):难以有效捕捉提示嵌入之间的相互关系。P-Tuning 通过学习提示嵌入层的内部关系,提高了提示的有效性和模型的适应性。
2、P-Tuning v1 核心技术解读
2.1、 一个关于“The capital of Britain is [MASK]” 示例:蓝色是上下文 “Britain”、 红色是目标单词 “[MASK]”、橙色区域是提示词。
传统方式与 P-Tuning 对比:在传统方式中,提示生成器只接收离散奖励,而在 P-Tuning 中,连续的提示嵌入(Prompt Embedding)和提示编码器(Prompt Encoder)以可微的方式进行优化。P-Tuning 通过优化提示嵌入层,使得模型能够更有效地利用提示信息,从而提升任务执行效果。
2.2、 P-Tuning 和 Prefix-Tuning 的主要区别
嵌入位置:Prefix Tuning 在每个注意力层增加前缀嵌入来引入额外参数,而 P-Tuning 的嵌入位置更为灵活,仅在输入时加入嵌入。P-Tuning 的这种灵活性使得它在不同任务中具有更高的适应性。
初始化方法:Prefix Tuning 用多层感知机(MLP)进行初始化,而 P-Tuning 则通过长短期记忆网络(LSTM)加 MLP 进行初始化。这种初始化方法提高了 P-Tuning 的性能,使其在不同任务中都能表现出色。
五、P-Tuning v2 :提升小模型和多任务微调质量 (2022)
1、P-Tuning 在小模型上性能不佳
P-Tuning 在小模型上的性能表现不如在大型预训练模型上。因此,P-Tuning v2 旨在改进这一问题,使得小模型也能通过提示调整(Prompt Tuning)达到类似全面微调的效果。
2、P-Tuning v2 的目标
P-Tuning v2 的目标是使提示调整在不同规模的预训练模型上,针对各种下游任务都能达到类似全面微调的效果。这一目标通过优化提示长度、多任务学习和重参数化等技术手段得以实现。
3、之前方法的限制
模型规模差异:在大型预训练模型中,Prompt Tuning 和 P-Tuning 能取得与全面微调相似的效果,但在参数较少的模型上则表现不佳。P-Tuning v2 通过优化提示长度和重参数化技术,解决了这一问题。
任务类型差异:Prompt Tuning 和 P-Tuning 在序列标注任务上的表现都较差。P-Tuning v2 通过改进提示嵌入层的设计,提高了在序列标注任务上的表现。
4. P-Tuning v2 核心技术解读
4.1 重参数化(Reparameterization)
Prefix Tuning 和 P-Tuning 中的 MLP:P-Tuning v2 的研究发现,针对不同的任务和数据集,这种方法可能产生相反的效果,特别是在自然语言理解领域。通过重参数化技术,P-Tuning v2 提高了提示嵌入层的有效性。
4.2 提示长度(Prompt Length)
任务对应的最优提示长度:不同任务对应的最优提示长度不一样,例如在简单的分类任务中,长度为20的提示可能是最佳选择,而对于更复杂的任务,则需要更长的提示长度。P-Tuning v2 通过优化提示长度,使其在不同任务中都能达到最佳效果。
4.3 多任务学习(Multi-task Learning)
多任务学习提供更好的参数初始化:对于 P-Tuning v2 而言,多任务学习是可选的,但它可以提供更好的参数初始化,从而进一步提升模型性能。多任务学习通过共享参数,提高了模型的泛化能力和适应性。
4.4 分类头(Classification Head)
语言模型(LM)头的应用:在 Prompt Tuning 中,使用语言模型头来预测动词是核心思路。然而,P-Tuning v2 的研究发现,在完整数据集上这种做法并非必要,且与序列标记任务不兼容。因此,P-Tuning v2 采用类似 BERT 的方式,在第一个 token 处应用随机初始化的分类头。这一改进使得 P-Tuning v2 在序列标注任务中表现更加稳定。