Sentence Bert(SBert)

提出背景

在文本相似性任务(Semantic Textual Similarity, STS)中,使用Bert进行句子语义信息计算有以下两个问题:

  • 需要将两个句子拼接输入网络,此时如果对1w个句子进行两两之间的相似度判别时,需要计算5000w次,花费65小时,计算耗时巨大

image

  • Bert主要使用两种方式进行语义信息提取:
    • 使用clsToken对应的向量作为句子的平均语义信息
    • 使用每个Token的平均向量作为句子的平均语义信息
    • 实验结果表明,使用原始Bert进行向量表示在文本相似度任务中效果并不好

image

image




模型结构

SBert的结构包含孪生网络(Siamese Network)和三胞胎网络(Triplet Network)。孪生网络分为双塔,两个塔模型完全相同且共享参数,两个句子通过两个模型计算得到相似度后,再进行梯度反向传播,原论文中,分为两种STS子任务——分类和回归:

image

  • 分类:判断两个句子是否相似,将两个句子以及两个句子的绝对差拼接在一起,输入一个Softmax分类器。至于为什么要采用这种拼接方式,原论文采用的基于实验的经验式方法讨论,在结果上该方案效果最好

image

  • 回归:输出两个句子的余弦相似度,损失函数使用最小均方误差(MSE),输出的值范围在[-1, 1]。文章将SBert与基础的Bert以及Spearman这种Non-Parametric的方法进行对比:

image

  • 对于Pooling层,文章也进行了讨论,分为三种Pooling方式:
    • CLS:使用clsToken作为最终的句子向量进行Pooling
    • MEAN:使用所有Token的平均值作为最终的句子向量进行Pooling
    • MAX:使用所有Token的最大值作为最终的句子向量进行Pooling
    • 文章中的实验证明,使用MEAN的方法进行Pooling效果最好

image

  • 此外,文章中也提出了一种三胞胎模型,任务为给定句子a,一个正向的句子p,一个负向的句子n,使用Euclidean Distance进行距离评估,模型需要使得pa的接近程度需要在一定阈值的程度上大于na的接近程度,文章中将该阈值设为1

image

image




参考资料

posted @ 2025-07-01 09:36  Luna-Evelyn  阅读(62)  评论(0)    收藏  举报