预训练模型中的可插拔式知识融入-利用Adapter结构

本文探讨了如何使用Adapter结构在预训练模型中高效地融入知识,对比了不同方法如Fine-tune、PALs和K-Adapter。K-Adapter通过并行的Adapter层学习不同类型的知识,减少了参数更新量,且在多项任务中表现优于其他方法。
摘要由CSDN通过智能技术生成

这些天冲浪 🏄 了一下 Arxiv,粗翻了一下二月之后 public 的 NLP 文章(有很大一部分是准备投 ICML 的)。
也拜读了 张驰原 dalao 的新作《Exploring the Memorization-Generalization Continuum in Deep Learning》. (实验真的做的很漂亮,但感觉有点 data-special 不知道能不能推广到 NLP)

今天来讨论一下段楠老师和周明老师的这篇《K-Adapter: Infusing Knowledge into Pre-Trained Models with Adapters》

Adapter

为了讲清楚这篇文章,我们先来看下什么是 Adapter

Parameter-Efficient Transfer Learning for NLP. ICML 2019.

Motivation

在这个 large pre-trained 模型盛行的时代,Fine-tune 可谓是再正常不过的操作。
但实际上 Fine-tune 是一个代价很大的操作,虽然它一般能带来很好的效果。
试想一下,虽然我们用了 Adam 来随机采样一些 train data 来估计全局的梯度,用了很小的 lr.
但实际上在每一个 batch 中,对于庞大的预训练模型的每一个参数我们都需要更新.
每一个 epoch, 还得存储所有被更新的参数, 完全没有复用性, 这是很低效的。
对于低资源的移动端或者高用户特异性的服务提供商 Pass, 这个问题尤为突出。

除了这一点之外:

  1. Cloud Service (Pass)
  2. 使用 Multi-task 来 fine-tune 时, 如果增加新的任务,则需要重新训练过所有之前的子任务(需要相应的数据).
  3. 而使用 连续学习则会在 re-training 的时候遗忘之前学到的知识.
  4. 希望能在尽可能减少参数的情况下, 提高性能,接近 Multi-task 的结果.

Detail

image

于是一个很直观的想法, 能不能把最后的 task-special layer 放到模型中间,然后冻住预训练模型参数.

  1. 每一个 Transformer 结构都有两个 Adapter 模块, 嵌在 LN 之前. 12 × 2
  2. 预训练的 Bert 参数固定(Attention, FFN, 除了 Layer Normalization 参数不固定)
  3. 每个 Adapter 由两个 FFN, 一个非线性函数组成, 和一个残差连接组成.
  4. 残差连接用于保证参数随机初始化时,模型输出与预训练模型输出一致.
  5. 这样一个 Adapter 模型需要 (dm+m) + (dm+d)参数
  6. 而因为 LN 输入发生了较大的变化,在这里对 LN 的参数也进行 fine-tune, 实际上这部分参数量很小( y = x − E [ x ] V a r [ x ] + ϵ ∗ γ + β y=\frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] &#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值