如何使大模型适配下游任务
©NLP论文解读 原创•作者 | 康德
如何使得预训练语言模型学习语言的通用表示以及如何使得预训练模型适配到不同的下游任务是当前自然语言处理领域的重要研究方向。
本文通过实验发现通过优化低维本征任务子空间(intrinsic task subspace)中的少量自由参数从而对预训练模型(PLMs)重新参数化,使得预训练模型适配不同的任务。
本征特征子空间也帮助我们理解为何通过少量的数据,预训练模型可以很容易的适配不同的任务。为了找出这样的子空间以及发现它的普遍性,借助于提示微调(prompt tuning),将不同的NLP任务的软提示分解到同样的低维非线性子空间中,然后仅仅通过微调子空间中的参数使得预训练模型适配到未看到的任务或者数据。
作者称此过程为本征提示微调(intrinsic prompt tuning,IPT)。通过对120个NLP任务进行实验,发现通过微调子空间中一个5维的向量就可以在100个未见过的训练数据集和20个新任务上达到87%和65%的提示微调,这表明本征任务子空间具有很好的泛化性,此外本征提示微调提高了提示微调的稳定性。
论文地址:
https://arxiv.org/pdf/2110.07867.pdf
Introduction
预训练语言模型在不同的自然语言任务中具有显著的性能。基于海量数据的大模型可以通过全参数微调或者有效参数微调的方式,在小规模数据上能够适配不同的下游NLP任务。
为了尝试理解PLM如何花费较小的代价来适配不同的任务,作者假设PLM适配到不同的下游任务的优化问题可以等价于在一个低维的参数空间中优化少量的自由参数,并称这个参数空间为本征任务子空间,如下图所示。
为了验证这个假设,需要找到PLMs的本征任务子空间。子空间应该包含针对不同任务可调的适配参数,因此可以通过使用多个任务训练自适应参数的低维分解来近似子空间,然后检验在找到的子空间中学习未知的任务。
因为提示微调仅仅需要微调少量的参数,以及可以实现类似fine-tuning方式的语言理解和生成任务,所以可以通过提示微调来探索共同的本征子空间。IPT分两步:寻找多任务子空间(multi-task subspace finding ,MSF),本征子空间微调(intrinsic subspace tuning,IST)。
在MSF阶段首先获得多个任务的优化软提示,然后通过将它们映射到低维子空间,然后反映射重建它们来学习自动编码器。优化的自动编码器定义了本征子空间。
在低维子空间中,只训练少量的自由参数来处理未知数据和任务,这个低维子空间是由MSF通过反映射得到的。作者发现这个本征任务子空间不仅存在而且是低维的。
Methodology
2.1 预备知识
2.2本征提示微调
下图展示了 IPT 与 fine-tuning 和 prompt tuning 的区别。
Experiment
Discussion
在本文中作者发现通过不同的下游任务来压缩适配参数,可以找到一个用来适配未看到任务的低维子空间。
作者提出了IPT,它首先通过联合压缩多个任务的自适应参数来找到一个子空间,然后仅对子空间中的未见数据和任务进行参数调优。在实验阶段还讨论了影响结果的因素和IPT的潜在实际应用。
△长按添加AI小助手
微信ID:tanxin6934
备注:姓名-学校/公司-研究方向-城市(如:小欣-斯坦福-目标检测-深圳)
即可领取目标检测与R-CNN/数据分析的应用/电商数据分析/数据分析在医疗领域的应用/NLP学员项目展示/中文NLP的介绍与实际应用/NLP系列直播课/NLP前沿模型训练营等干货学习资源。
每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总等等。
- 操作系统如何管理CPU资源?细说操作系统进程与多任务模型问题
- 异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?
- [转] 如何用kaldi训练好的模型做特定任务的在线识别
- 异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?(转)
- 异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?
- 如何在spring中配置定时任务(job)
- Activity A启动Activity B,在B中按Home回到主屏幕,按menu时呈现后台app任务列表,如何让刚退出的app的界面显示为A,而不是退出时的B
- 作为项目经理如何划分任务和安排任务
- 如何零基础用 Keras 快速搭建实用深度学习模型
- 如何在ORCAD中自建仿真模型
- 如果不用QuickFlow提供的控件来开发工作流页面,如何启动流程,提交任务呢?
- 在项目中使用定时任务,如何避免在当前任务因阻塞,还没有结束时,定时时间到了,另外一个定时任务又进入执行?
- 如何在ASP.NET页面中使用异步任务(PageAsyncTask)
- Java如何判断线程池所有任务是否执行完毕
- 车牌检测回归任务(三、目标检测模型评估)
- spark源码学习(八):spark具体是如何使用集群的资源去运行任务
- keras如何保存模型,进行加载预测
- js中如何建立model数据模型
- uC/OS-II如何使任务在就绪表中进入就绪态与退出就绪态
- 如何用IDE调试MR任务(一)(2016-01)