大模型Prompt系列高效微调

1 背景

国内外目前有很多大语言模型,如GPT3、GPT4、ChatGLM、Llama、Baichuan、PanGu等,在自然语言处理任务中各有千秋。在面对具体的任务时,我们需要对大语言模型在已有的基础上进行,通过相应的监督语料进行训练、微调等,以获得适应下游任务的模型。

1.1 Pre-training + Fine-tuning模式

自从GPT、EMLO、BERT的相继提出,以Pre-training + Fine-tuning 的模式在诸多自然语言处理(NLP)任务中被广泛使用。

首先是预训练阶段,使用大量的无监督语料库来训练通用的预训练语言模型(PLM),此时尚未设定特定任务目标。这一阶段的目的在于使模型掌握语言的基本特征,例如,语法、上下文关联及词义等。

然后是微调阶段,我们将经过预训练的模型应用于具体的下游任务,使模型适应这些具体的任务,如情感分析、问答系统或文本分类等。在微调过程中,模型的参数会被针对性地调整以适应特定的任务。

这种模式在诸多任务的表现上超越了传统的监督学习方法,不论在工业生产、科研创新还是竞赛中均作为新的主流方式。然而,这套模式也存在着一些问题。例如,在大多数的下游任务微调时,下游任务的目标与预训练的目标差距过大导致提升效果不明显,微调过程中依赖大量的监督语料等。

1.2 Prompt模式

以GPT-3、PET(Pattern-Exploiting Training)为首提出一种基于预训练语言模型的通过Prompt进行微调的新范式,通过添加模板的方法来避免引入额外的参数,从而让语言模型可以在小样本 (Few-shot) 或零样本(Zero-shot) 场景下达到理想的效果。旨在解决目前传统Fine-tuning的两个痛点问题:

  • 降低语义差异(Bridge the gap between Pre-training and Fine-tuning) :预训练任务主要以Masked Language Modeling(MLM)为主,而下游任务则重新引入新的训练参数,因此两个阶段的目标通常有较大差异。由此需要解决如何缩小Pre-training和Fine-tuning两个阶段目标差距过大的问题。

  • 避免过拟合(Overfitting of the head) :由于在Fine-tuning阶段需要新引入额外的参数以适配相应的任务需要,因此在样本数量有限的情况容易发生过拟合,降低了模型的泛化能力。因此需要面对预训练语言模型的过拟合问题。

下面按时间线分别介绍Prefix-tuning、P-tuning、Prompt Tuning、P-Tuning v2这几个常用的微调方法以及PEFT统一框架。

2 Prefix-tuning

Prefix-tuning最早于2021年由斯坦福大学研究团队提出,是一种轻量级的微调方法。该方法在固定预训练语言模型参数的前提下,添加一个前缀,通过优化该前缀的少量参数,就能够达到不错的微调效果。

2.1 技术原理

2.1.1 Prefix-tuning训练过程

由于人工设计/自动化搜索的离散型Prompt对模型优化的鲁棒性很差,因此Prefix-tuning使用了连续可调的矩阵来调整Prompt。在训练时,Prefix-tuning在模型输入前添加一个连续且任务特定的向量序列(即Prefix),固定PLM的所有参数,只更新优化特定任务的Prefix。其中,Prefix可以通过训练得到。

例如,对于Decoder-only的GPT,Prefix只加在句首,模型的输入表示为:

而对于Encoder-Decoder的BART,不同的Prefix同时加在编码器和解码器的开头:

在下游微调时,LM的参数被冻结,只有Prefix部分的参数进行更新。

2.1.2 Prefix具体添加到模型的哪部分?

Prefix-tuning将Prefix参数(可训练的张量)添加到所有的transformer层,如下图。

机制:将多个prompt vectors 放在每个multi-head attention的key矩阵和value矩阵之前。注意,P-Tuning是加在embedding矩阵上。

计算方式:相当于原始的token要多和这些soft prompt token计算相似度,然后聚合。

其中是一个标量,表示Prefix上的归一化注意力权重之和:

通过上面等式的变换,等式的前部分是不加入Prefix向量的初始attention计算的公式,后半部分则是上下文向量无关的部分。通过一个类似门的机制来计算前后两部分的比重,如果用h表示原本的attention模块输出,则Prefix-tuning的attention计算可以写成如下形式:

那么,加入Prefix的attention模块输出等于原本attention模型输出和一个与上下文无关的增量之间的加权平均。

2.1.3 Prefix矩阵分解

作者发现直接更新多个虚拟token的参数效果不稳定,因此在Prefix层加了MLP,分解成了更小的embedding层 更大的MLP层。原始的embedding层参数是n_prefix emb_dim,调整后变为n_prefix n_hidden + n_hidden * emb_dim。训练完成后这部分就不再需要只保留MLP输出的参数进行推理即可。

2.1.4 Prefix长度

prefix部分到底使用多少个虚拟token,直接影响模型微调的参数量级,以及处理长文本的能力。默认的prefix长度为10࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值