Adapter: 高效NLP迁移学习
今天轻松一点,看个简单高效的trick。也是咱们在昨天的DCCL: 推荐系统的端+云联动学习挖的坑。
目前,NLP中主流的方式是预训练+微调,当然,有大宗师级别的资源强者可以玩GPT-3这样子的大模型号称可以摆脱微调,但毕竟王谢堂前燕,难入寻常百姓家。大模型难以实用。
Overall
NLP的迁移学习有两种,第一种是feature-based的transfer,主要代表是word2vec,即将训练好的embedding复用到其他模型中。第二种则是微调,即将预训练的整个模型都搬运过来,然后在具体的下游目标上进行调整,主要代表就是Bert。
Bert以及相关的类似模型在微调的时候比较耗时间,如果只微调较少的参数,导致效果不好。微调较多的参数,又会耗时。所以如果在资源较少的设备上,大模型的微调形同虚设。
Adapter
Adapter提供了一个非常高效的技巧,那就是在微调的时候,不改变已有的参数,而是新加一些参数,调整这部分参数从而达到微调的效果。
怎么样新加参数呢?如下图所示,左图是正常的Transformer的block,可以看到,在Multi-head attention和2层FFN层后都加了一个adapter。而adapter的结构如右图所示。
adapter结构中,有这样几个特点:
残差连接,这样,在刚开始的时候,用较小的参数初始化这个adapter,使得它的输出接近identity输出,可以保证在刚开始的时候模型依旧表现很好。这点其实跟ResNet加深层次的思路一样。 down-project & up-project,这个是为了减少adapter的参数量。
实验结果
如下图所示,可以看到,用了adapter后,可以在调整小部分参数的时候,就能达到较好的效果。
参考文献
[1]. Houlsby, N., Giurgiu, A., Jastrzebski, S., Morrone, B., De Laroussilhe, Q., Gesmundo, A., ... & Gelly, S. (2019, May). Parameter-efficient transfer learning for NLP. In International Conference on Machine Learning (pp. 2790-2799). PMLR.
赞 (0)