Sentence-BERT:句子级语义向量表示方法
Sentence-BERT提出动机
解决传统BERT在大规模语义相似度计算场景下运行效率低的问题。
BERT在句子对相似度计算上取得了很好的效果,然而它要求以句子对的形式进行输入。在这种方式下,如果我们想要计算10,000个句子中最相似的两个句子,那么需要构建大约5,000,0000个句子对组合进行推理计算,时间复杂度很高,不适用于上线场景中。而Sentence-BERT是通过将单个句子编码成对应的语义向量,然后通过余弦相似度来评价两个句子的相似度。在这种情况下,如果采用Sentence-BERT,我们可以分别计算每个句子(10,000)的语义向量,然后只需要实时进行向量之间的余弦相似度计算即可快速得到最终结果。即通过采用Sentence-BERT,我们可以利用BERT强大的语义编码能力,同时又不至于受句子组合数过多的限制。
Sentence-BERT实现方法
微调架构
在训练过程中,针对不同的任务设计了三种优化函数:softmax交叉熵分类函数、均方误差回归函数(基于余弦相似度)和hinge loss目标函数(基于欧几里得距离)。
推理架构
相容实验
相容实验表明,训练时引入|u-v|向量是很重要的。
总结
Sentence-BERT本质上是采用孪生网络架构预训练后的BERT模型,其本身在句子语义向量表示上比原生BERT(直接用BERT生成句向量)表现更好。但是在有监督情况下,sentence-BERT方法还是略弱于使用句子对方式微调BERT的结果。
参考文献
[1] Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
- 点赞
- 收藏
- 关注作者
评论(0)