今天轻松一点,看个简单高效的trick。也是咱们在昨天的DCCL: 推荐系统的端+云联动学习挖的坑。 目前,NLP中主流的方式是预训练+微调,当然,有大宗师级别的资源强者可以玩GPT-3这样子的大模型号称可以摆脱微调,但毕竟王谢堂前燕,难入寻常百姓家。大模型难以实用。 OverallNLP的迁移学习有两种,第一种是feature-based的transfer,主要代表是word2vec,即将训练好的embedding复用到其他模型中。第二种则是微调,即将预训练的整个模型都搬运过来,然后在具体的下游目标上进行调整,主要代表就是Bert。 Bert以及相关的类似模型在微调的时候比较耗时间,如果只微调较少的参数,导致效果不好。微调较多的参数,又会耗时。所以如果在资源较少的设备上,大模型的微调形同虚设。 AdapterAdapter提供了一个非常高效的技巧,那就是在微调的时候,不改变已有的参数,而是新加一些参数,调整这部分参数从而达到微调的效果。 怎么样新加参数呢?如下图所示,左图是正常的Transformer的block,可以看到,在Multi-head attention和2层FFN层后都加了一个adapter。而adapter的结构如右图所示。 adapter结构中,有这样几个特点:
实验结果如下图所示,可以看到,用了adapter后,可以在调整小部分参数的时候,就能达到较好的效果。 参考文献
|
|