引言
为什么
-
格式的不同
任务不同导致的输出的答案格式完全不同,如自然语言推理 NLI
下游任务不需要或不能使用MASK标记 -
领域转变问题
特定领域涉及专业知识
下游任务可能会遇到突发的新领域需求 -
时间转变问题
新知识不断产生,模型需要学习没见过的知识
非公开信息的学习
通用Adaptation配置 (Process
- 预训练
- 下游任务数据集准备
- 适配参数
- 任务损失函数
- 定义优化问题
主流的Adaptation方法
Probing
探针网络通过一个简单的线性或者浅前馈网络,探测模型的表示能力,判断其是否具有特定能力或信息
探测作为一种强大的分析工具,通过冻结语言模型表示编码器(上图中灰色部分)和优化特定任务的探针(上图中预测头,蓝色部分)来工作。这些模型可以是线性的或浅前馈预测头,提供了一种灵活的方法来理解和解释深度学习模型的内部工作机制。固定长度表示的策略也进一步促进了这一目的,提供了灵活而有效的解决方案。
Fine-tuning
在微调过程中,通常至少使用比预训练时小一个数量级的学习速率,而且微调的时长远远少于预训练。这意味着需要存储针对每个下游任务专门化的大型语言模型,这可能相当昂贵。然而,微调是在更大的模型家族(即,非常具有表现力)上进行优化的,并且通常比探针有更好的性能。
(预训练的优化器状态被丢弃?)
使用微调技术进行zero-shot learning的方式主要是利用prompts learning,有效提高模型的泛化能力。
同时,微调可以使语言模型更好地与人类价值观和目标一致。
例如,InstructGPT微调GPT-3模型的步骤:
Lightweight Fine-tuning
轻量级微调主要包括以下三种类型:
- Prompt tuning
- Prefix tuning
- Adaptor tuning
Prompt tuning
提示调整(Prompt Tuning)是一种特殊的微调技术,主要用于文本分类任务。Prompt Tuning的灵感来源于推理为基础的自适应提示设计/工程。与传统的微调方法不同,提示调整专注于优化输入提示,而不是改变模型的内部参数。
Prompt Tuning通过在输入前添加 k k k个可学习的、连续的标记嵌入(定义为 Γ Γ Γ)来工作。因此,新的输入长度现在为 L ′ = L + K L'=L+K L′=L+K ,其中 L L L是原始输入的长度。这些额外的标记嵌入通过在带标签的任务数据上进行训练来学习。
同时,在这种微调下,模型的所有参数是被冻结的。随着模型参数规模的增大,其效果可以与全面微调相媲美。
关于提示的初始化,大致有三种策略:
- 随机词汇词嵌入(Embedding of random vocab words):选择随机的词汇作为嵌入。
- 类标签词嵌入(Embedding of class label words):使用与分类标签相关的词汇进行嵌入。
- 随机初始化(Random init):这种方法通常效果不佳,不推荐使用。
Prefix tuning
Prefix tuning在BART和GPT-2上进行了使用,专门针对语言生成任务,NLG
Prefix Tuning通过在输入的开始处添加k个位置,并在每个注意力层连接额外的可学习权重,作为键(keys)和值(values)来实现。这些附加的权重允许模型在微调过程中学习特定任务的上下文和结构。
与Prompt tuning的区别:
Prefix tuning存在可学习的权重,使得prompt可以接收上下文信息。
Adapter tuning
在每个冻结的Transformer层之间添加新的学习(适配器)层
一般是操作与序列中每个元素
x
∈
R
d
x \in R^{d}
x∈Rd 的2层残差网络!
A
d
a
p
t
e
r
(
x
)
=
x
+
W
u
p
σ
(
W
d
o
w
n
x
)
Adapter(x)=x+W_{up}\sigma (W_{down}x)
Adapter(x)=x+Wupσ(Wdownx)
先投影到高维,再投影回低维,最后得到的向量和
x
x
x具有相同维度。
其他性质
- 如果预训练L,的权重为0,则这些Lightweight Fine-tuning就将不起作用
- 可以实现用户级微调
- 与全面微调相比,改善了OOD的问题
总结
- 探测法(Probing):探测法在冻结的语言模型之上训练一个特定任务的预测头,将语言模型视为良好的表示提取器。冻结语言模型倾向于限制该方法的表现能力。
- 微调(Fine-tuning):微调将大型语言模型参数视为下游任务的进一步训练的初始化,这比探测更具表现力,但也更昂贵,因为我们必须为每个下游任务保存整个模型。
- 轻量级微调(Lightweight fine-tuning):轻量级微调在微调和探测之间取得了平衡,只优化少量参数(模型的<1%),但它优化了模型的高杠杆部分,因此仍然非常具有表现力。 通过上述方法,可以更灵活地应对各种不同的下游任务,既实现了对特定任务的精确适配,又在一定程度上控制了计算和存储的成本,从而在实际应用中取得更好的性能和效率。