Insight & target problem

全fine-tuing耗时间
Adaptor还是效果不好,而且要tuing的参数更多

Solution

对于自回归模型,加入前缀后的模型输入表示:
image.png
对于编解码器结构的模型,加入前缀后的模型输入表示:
image.png
本文构造一个矩阵 21.11.26 Prefix-Tuning: Optimizing Continuous Prompts for Generation [ACL2021] - 图321.11.26 Prefix-Tuning: Optimizing Continuous Prompts for Generation [ACL2021] - 图4 )去存储前缀参数,该前缀是自由参数。
image.png
目标函数依旧是公式(2),但是语言模型的参数是固定的,只更新前缀参数。
除此之外,作者发现直接更新前缀参数会出现不稳定的情况,甚至模型表现还有轻微的下降,因此作者对前缀参数矩阵进行重参数化:
image.png
其中 21.11.26 Prefix-Tuning: Optimizing Continuous Prompts for Generation [ACL2021] - 图7 在第二维的维数要比21.11.26 Prefix-Tuning: Optimizing Continuous Prompts for Generation [ACL2021] - 图8小,然后经过一个扩大维数的MLP,一旦训练完成,这些重参数化的参数就可以丢弃,只保留21.11.26 Prefix-Tuning: Optimizing Continuous Prompts for Generation [ACL2021] - 图9

Highlight

微调的参数更少了
效果还不错

  1. 低资源很不错
  2. 跨领域也不错

在摘要上表现的比较差

  1. 摘要更长
  2. 摘要数据更多

最后探讨了优点:

  1. 对于工业界来说,对每一个用户都tuing一个模型不可能,但是单独tuing一个prompt是可以的
  2. 对于不同用户进入企业云端GPU的时候,不同用户可以只要PrePend Prompt,然后可以打包在一个Batch里送进GPU,Adaptor就不行,因为每一个用户的模型不同
  3. Prompt最大可能的保留了模型的pretrain后的样子,使得模型的泛化性更强

    Others

对比:Deep Continuous Prompt:一般直觉的做法是在词嵌入层,把离散的token变成可训练的virtual token,这样可训练的参数虽然最少,但是效果肯定没有在每一层都加入可微调的参数更好。所以这篇是在每层都加入了可训练的参数,优化的时候就是优化所有层的前缀。
每一层都加的效果显著好于只在输入层

对比2:Prefix好于Infix,即 prefix X Y好于X infix Y (因为编码X的时候也有受Prefix影响)

对比3:prefix的长度有影响,有一个位置最好