当前位置:   article > 正文

交互模型你快跑,双塔要卷过来了

双塔模型交互

文本匹配是NLP的一个重要任务,应用场景也十分广泛,比如搜索中query和doc的匹配、问答中query和answer的匹配、甚至再泛化点来讲,也可应用到推荐、多模态图文匹配中,甚至NER、分类都可以用匹配来解。去年写过一篇文本匹配的综述,分别列举了匹配任务中的两种范式,双塔式和交互式:

1784d3f804c02209d0eee7eba1deb8e7.png

这两种范式各有优缺点:

  • 双塔(左图)的速度很快,但是由于缺少两个句子的细粒度交互,效果始终有限

  • 交互(右图)则完全相反,效果很好,但速度一言难尽

如果直接来对比,是这样的:

8d917b19843319764f03fe1082cdb1bf.png

那么有没有什么方法,既有双塔的速度,又有交互的精度呢?

一年前我写文章的时候还没有,而现在,我发现离这个目标不远了,因为我们有万能的蒸馏!

那怎么才能把交互模型的知识蒸馏到双塔呢?

没想到竟然有三篇paper都在想这件事,下面我们就按照arxiv的发表顺序,来看看各位算法大佬的做法。

VIRT

第一篇是21年12月8号中科大和美团合作的文章,他们提出了一个Virtual Interaction机制,在训练阶段,把attention的交互信息蒸馏到双塔中。

对于双塔的attention,两个句子是没有交互的(下图右missing的位置):

8fc571845e6e95c36acc278690f93a30.png

所以作者就单独把双塔的隐层拿出来做一次attention:

8ad1d31a894b46e163129afa34056384.png

再和交互模型相同位置的attention计算L2损失:

ce3120015a1acad291b9b1fef9e98c45.png

最后,为了更好地利用上一点学到的交互知识,作者在双塔模型的metric计算上又加了一个attention机制,名为VIRT-adapted Interaction。具体计算方式为:

bf9f0cae04e3192ba91a3159354ea4d4.png

最终整体结构如下:

a03455cae9c8e38d6008f4675d93a4f9.png

这样蒸馏之后,双塔模型的提升十分显著,比起双塔baseline有十个点多,甚至好几个任务都要追上交互模型了:

f50b66961fdebdb5d889f8f37f19b524.png

从消融实验来看,最终所加的adaption还是十分重要的,VIRT在前半部分让双塔学到了如何交互,所以最后一交互就抓到了重点:

439162c7fea0b76357b08e63a02fe1ac.png

Distilled-DualEncoder

这篇是哈工大和微软合作的工作,跟VIRT的时间算是前后脚,21年12月16号挂到arxiv上,不过这篇工作主要是做图像和文本匹配的。出发点和VIRT也比较相似,只不过是用KL散度来蒸馏(老实说L2、KL散度、交叉墒在蒸馏时都可以用,具体效果我实践下来差距还不小,很玄学),并且在最后没有增加额外的attention:

cd42638fcb43681813823a1b4bccd3f9.png

但作者除了在精调阶段蒸馏之外,也进行了预训练蒸馏,效果同样是比CLIP基线好了不少:

5eb339d57bec31748132fdc4d06b0fba.png

ERNIE-Search

这篇是百度22年5月18号挂在arxiv的工作,不过他们没有对每层的attention进行蒸馏,而是重点攻克最后一层。作者主要参考了ColBERT,ColBERT在最后的交互上使用了一个MaxSim机制:

55fb52c28f864d9f843c80606eab8eff.png

作者使用KL散度,分别把交互模型的attention和最终logits都蒸馏给了ColBERT(attention的蒸馏和上两个工作的计算一样):

8b9b5ad2e7df5da9f45a1aaf0923d26a.png

把知识蒸馏给ColBERT之后,作者对于速度的追求依旧不减,又把ColBERT的MaxSim分数蒸馏给了dot product:

f9d2611a82bf0b9a347e473d2e09a656.png

在训练的过程中,所有的模型都是一起训练的(教师模型并没有freeze),一共有7个损失,幸亏作者没给损失加超参数,不然这个调参量有点巨大:

76e5ce1fd69bcbacfa73e5d32eda5fda.png

其中ce=cross-encoder, li=ColBERT的late interaction, de=dual encoder

最终效果主要是在搜索和问答数据上看的:

6cb5a48add51546cdc4dce14c9d7c0f6.png

总结

上面三篇工作各有千秋,应用场景也不一样,不过在优化双塔模型的出发点上都想到了一起,就是给双塔增加更多的交互。那么除了蒸馏,还有没有别的办法呢?这个问题,就留给你吧。

f2d3a5273f2aa197e3eacb66d96256e4.png

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

19ab8f9ffdb299964cf43395b9d75c7d.png

3ee0f6109511ffd9b8b91e098c196c45.gif

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号