语言人工智能指南

前缀调优

前缀调整是一种参数有效的方法,通过训练一小组连续向量来适应冻结的语言模型,这些连续向量会预先添加到每一层的输入中。

阅读时间:2分钟最后更新

概述

它允许您为新任务定制巨型模型,同时更新不到 1% 的参数。

深入探讨

斯坦福大学研究人员李和梁于 2021 年提出的前缀调整可以在不影响其权重的情况下调整预训练的变压器。它不是微调所有参数,而是在每个注意力层的键和值前面添加一系列可训练的“虚拟标记”(前缀)。冻结模型会像处理真实上下文一样处理此前缀,将其行为引导至目标任务。由于仅学习前缀向量,因此您可以为每个任务存储一个微小的前缀,而不是完整的模型副本。这使得许多任务的服务成本降低,并避免了完全微调带来的存储爆炸。它在表格到文本和摘要等生成任务上表现尤其出色,通常与高数据设置中的完全微调相匹配。

技术洞察

与仅在输入嵌入层添加向量的提示调整不同,前缀调整将可训练的键/值向量注入每个转换器层的自注意力中。为了稳定训练,前缀通常由小型前馈网络(重新参数化技巧)生成,而不是直接优化;该网络在训练后被丢弃,只留下学习到的前缀矩阵。只有这些前缀参数接收梯度——整个骨干网保持冻结状态。

战略影响

速度与规模

语言工作流程可以在不牺牲一致性的情况下更快地移动。

交通与覆盖范围

它扩展了跨语言和沟通方式的访问。

更清晰的判决

团队可以花更多时间进行判断,而自动化则可以处理重复。

前缀调优的未来

前缀调整有助于启动参数高效微调 (PEFT) 波,并且仍然是 Hugging Face PEFT 等库中的构建块。随着基本模型增长到数千亿个参数,像前缀这样的轻量级适配器对于多租户服务和设备上的个性化越来越有吸引力。预计将继续采用混合方法,将前缀与 LoRA 风格的低等级更新相混合,并在控制风格、角色和安全行为方面得到越来越多的使用,而无需重新训练整个模型。

现实世界的实施

通过在 WebNLG 数据集上训练一个小前缀,调整一个冻结的 GPT-2 主干以进行表到文本的生成

从单个共享模型提供数十种特定于客户的摘要样式,每个样式都作为可交换的前缀文件

在不重新训练基本权重的情况下控制聊天机器人的语言模型的语气或角色

低数据域适应,例如法律或医学文本生成,完全微调会过度拟合

风险与防护栏

幻觉的事实可以悄悄地进入报告、支持流程或研究成果。

及时的敏感性可能会在类似的请求中产生不一致的结果。

如果访问控制薄弱,敏感文本数据可能会暴露。

实施路线图

1

在推出之前定义输出格式、语气和质量标准。

2

当准确性很重要时,请使用可信来源进行地面响应。

3

为高风险输出保留人工审查检查点。

4

跟踪故障模式并定期重新训练提示或工作流程。

不断探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Prefix Tuning quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

开始测验

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一个指南

拒绝采样微调

常见问题

什么是前缀调整?

前缀调整是一种参数有效的方法,通过训练一小组连续向量来适应冻结的语言模型,这些连续向量会预先添加到每一层的输入中。它允许您为新任务定制巨型模型,同时更新不到 1% 的参数。

前缀调优实际上训练什么?

前缀调整冻结主干网络并仅学习一小组连续前缀向量,从而保持参数高效。

前缀向量注入到哪里?

前缀调整在每个转换器层的自注意力(而不仅仅是输入)处预先考虑可训练的键/值向量。

谁引入了前缀调整以及大约何时引入的?

前缀调整由斯坦福大学的Xiang Lisa Li和Percy Liang于2021年提出。

为什么前缀调整对于服务许多任务很有吸引力?

由于只有小前缀是特定于任务的,因此您可以为每个任务存储一个小文件,而不是复制整个模型。

经常使用什么技巧来稳定前缀训练?

为了稳定性,一个小的 MLP 在训练期间生成前缀,然后被丢弃,只留下学习到的前缀矩阵。