一、概述
title:Decoder Tuning: Efficient Language Understanding as Decoding
论文地址:https://arxiv.org/abs/2212.08408
代码:GitHub - thunlp/DecT
二、Motivation
- 现在有很多模型只提供API,没法直接训练,并且是按请求次数计费的,成本也比较高。
- 之前大模型微调方法主要是冻结原始模型,在输入层进行tuning,但是该方法缺乏梯度信号,训练比较难,训练过程需要请求上千次api,带来的计算和时间成本都比较高。
三、方法
1 PipeLine of DecT
在黑盒模型的输出端进行tuning,提升其在下游任务的表现
pipeline解读:
- 输入:构建人工temple,引入MASK,拼接原始文本作为输入,有点类似prompt design方法。
- ProtoNet模型(本地知识):训练一个ProtoNet模型,其训练特征来自MASK对应的隐藏层的特征。
- 模型带来的先验知识:直接拿原始PTM预测的label的分数。
- 输出:将ProtoNet模型结果和PTM API的预测score(topk类别PLM模型预测结果)融合作为输出。
2 输入输出以及融合方法
- Dec()为可训练的模型,sk为PLM预测的logit,l为融合权重
3 PLM原始模型权重标定方法
- 原始PLM预测的结果高频词预测概率高,这里对其概率重新进行了标定。
4 ProtoNet模型选择原因
- Prototypical方法在few-shot和prompt-based tuning方法效果比较好,所以选择该模型作为对mask特征进行tuiling的模型。
四、Conclusion
- 相当于在一个黑盒的PLMs情况下,只提供api接口,做了一个高效适配下游任务的方法(主要是分类任务)
- few-shot效果又快又好,比所有baseline都好,并且速度提升200倍
五、limitation
- 提供了一个黑盒PTMs的下游任务训练方法,但是当数据量扩大后,比fine-tuning方法效果还是差不少,特别是在一些比较难的任务上。
- 只在分类任务上做了尝试,没有测试自由形式的文本生成任务。
六、基础实验结果
1 实验baseline设置
- prompt方法:是指使用模板包装的示例直接执行零样本分类。
- 上下文学习(ICL):测试样本之前进一步连接了一些示例。
- BBT(Sun等人,2022b)使用进化算法优化soft prompt方法。
- BBTv2(Sun等人,2022a)进一步将深度提示插入中间层,以获得更好的性能。
- RLPrompt(Deng等人,2022年)是另一种最新的算法,通过强化学习优化离散提示。
- PromptBoosting(Hou等人,2022年)是一项应用boosting算法应用到prompt ensembling。
- backbone:roberta-large
2 zero-shot和few-shot实验结果
- 大部分zero-shot和few-shot效果都比之前的模型好,只有在MNLI数据集上,ICL的1-shot方法表现好一些,但是ICL由于输入长度限制,不可能输入非常多的样本。
3 与fine-tuning全量tuning对比
- 在一些难的任务上,训练数据在256个的时候,就搞不过fine-tuning了
七、消融实验结果
1 Protonet模型参数的影响(1、4、6是啥意思?)
- 发现s,r都有的时候,特别是1的时候,提升比较大。
2 选MLP还是ProtoNet作为模型呢?
- ProtoNet在1-shot的时候,比MLP好的非常多,说明ProtoNet模型的few-shot能力还是比较强的
3 融合权重l的影响
- 说明l=1的时候,效果最好?
4 不同模板Template的影响
- 随便一个Template,DecT本文方法比Prompt方法都要高不少,说明本文方法的有效性。