文献地址:
https://arxiv.org/pdf/1908.10084.pdf
主要内容:该论文主要是通过Siamese模型通过两个bert输出句子对的相似度,和bert原生的句子对匹配task来说,速度大大提升(以证实)。(准确率文中没有拿原生的方法对比,而是用bert直接输出的向量求余弦来的对比的(该方法效果极差),所以还不知道准确率是否比bert原生的方法好)
摘要
bert 或robert已经有了句子对匹配任务的实现方法,具体的是通过将两个句子拼接在一起,中间用token“【SEP】”隔开,bert输出层中的【CLS】token可以直接表示两个句子对之间的相对信息(可以是相似度,也可以是问答,或者是否是下一句话)。
但是拼接起来的序列通常长度较长,这就导致了需要的参数非常多,运算速度很慢。
所以本文会使用一种“孪生网络 + bert + 余弦相似度” 的方式加快改善相似度计算的过程,大大加快了预测的过程。
简介
bert不适用于大批量语义相似度比较,速度太慢。
本文发明的方法大大加速。
模型
第一种模型的求两个句子关系的分类,得到两个句子的bert输出后,做一个pool,然后拼接(u,v,|u-v|),然后softmax得到概率,损失函数是交叉熵。
第二种模型是求两个句子的相似度,把bert输入的pool之后求余弦。此时的损失函数是mse( mean(similaruty - label)^ 2)。
预测相似度
用来STS( common Semantic Textual Similarity )的数据集验证相似度,尝试了余弦、负欧氏距离、负曼哈顿距离作为相似度,结果差不多。
直接使用未fine-tune的bert模型的输出向量去求两句话的余弦或者欧氏距离效果是很差的。
而fine-tune之后的sbert效果提升很多
速度大大提高
结论
bert直接输出的向量不能用来求相似度,经过孪生模型的微调后可以