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

卷友们好,我是rumor。

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

e2bfec67e9316a9d5bebee1078be1c28.png

这两种范式各有优缺点:

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

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

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

c884d11dfcdf8d3497c08865ea563509.png

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

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

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

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

VIRT

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

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

c51318ed69c2ee95b84af7fa151b8fe3.png

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

a04334eece8932f64ec2843046d3dcd0.png

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

3f92fd7b5db241ed95648e4b126b7cb4.png

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

0790e4eba8b6b2694fcf743b7fa1f9a9.png

最终整体结构如下:

cebc6a2a1098e759e2a136270b598558.png

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

1f28d67b67d846de4f36c513b9a92a5b.png

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

422b8822bb54f1da265e012d99b725ab.png

Distilled-DualEncoder

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

83f5280b9a9f469f350a59f94fc33b59.png

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

fcee4f55edc1f63f80361f9e905e5f2b.png

ERNIE-Search

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

f0bd3167bba4f78014667cf094873d36.png

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

3ff17bf096407c1474cac6cb2edb16ae.png

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

5672c10d443fc75b0a911af41cdf16ba.png

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

2306e052dadbe07ac45a37331fccf0bf.png

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

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

fdda2d75012cd619e84f758e736409bd.png

总结

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

fbf642d3d01f24fdf83e5ab0b9e4f423.png

bd4fa86bcf64f4a767a04343033d7b24.png


我是朋克又极客的AI算法小姐姐rumor

北航本硕,NLP算法工程师,谷歌开发者专家

欢迎关注我,带你学习带你肝

一起在人工智能时代旋转跳跃眨巴眼

「成年人的世界没有二选一」84121f8ee24d7726928b07722ce70e6d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值