目录
论文:Poly-Encoders: Architectures And Pre-Training Strategies For Fast And Accurate Multi-Sentence Scoring
一、论文背景
计算两个句子相似度有两种技术架构:Bi-Encoder(俗称双塔)和Cross-encoder,这两个的区别在于交互的时机,Bi-Encoder构架input_text和candidate分别训练,直到最后预测分数的时候才交互,而Cross-encoder将input_text分别和candidate拼接送入模型或者训练中多次产生交互。从上面的描述可以看到,两架构各有利弊:Bi-Encoder由于交互少,训练和预测会更快些,对线上工程来说,并发和响应时耗是有要求的,Cross-Encoder由于交互训练,模型可以学到更多特征,预测准确度上要优于Bi-Encoder,劣势就是更耗时。那么有没有一种方案够兼顾质量和速度:Poly-Encoder,本文模型提出的初衷正为此。
二、模型架构
Poly-Encoder, 论文是这么定义的:具有额外学习注意力机制的架构,代表更多全局特征,从中执行自注意力。
见图知义,Poly-encoder是在Bi-encoder上加入一些调料,主要包括:
1、query经过Encoder后并不生成单一的向量,出发点是query通常比较长,单一的向量无法完成涵盖全部语义信息,于是采用attention机制生成m个向量,多侧面去刻画query;
2、生成最后query_emb的方式是通过1中的m个向量与candidate_emb做attention,可见,Poly-encoder与candidate进行了两次交互。
三、实验结果
预测准确度上,Poly-encoder的效果是介于Bi-encoder和Cross-encoder之间,但相对于Bi-encoder,在有些数据集上出现较大辐度提升,如ConvAI2和Ubuntu v2。
从耗时上优势就比较明显了,与Cross-encoder准确度相当的条件下,预测效率相差3个量级