Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Abstract
BERT不适合语义相似性搜索和非监督任务(聚类)
Sentence-BERT由预训练BERT网络加上siamese和三元组网络结构产生有语义意义的句子embedding,使用cos相似性进行比较。
SBERT在语义文本相似性(STS)和迁移学习任务上评估,在所有句子embedding方法上达到最优。
Intro
BERT使用一个cross-enncoder: 两个句子传入transformer网络中,然后预测目标值。
但这种设置不适合各种各样的pair回归任务。
解决聚类和语义搜索的通常方法就是将每一个句子映射到一个向量空间中,这样语义相似的句子就会靠在一起。
SBERT的siamese网络架构使每个输入语句产生固定大小的向量。
然后使用比如余弦相似性、曼哈顿/欧式距离就可以找到语义相近的语句。
SBERT能用于语义相似性搜索和聚类。
在N1数据上微调SBERT,产生的语句embedding超越其他现有的语句嵌入方法
SBERT可用于论点相似性数据集、从wiki文章不同段落区分语句的三元组数据集等数据集上的具体任务。
Model
SBER在BERT/BoBERT最后设置了一个pooling得到固定大小的语句embedding。
实验在以下结构和目标函数下进行:
分类目标函数:
softmax损失,连接两个语句的embedding以及他们的差(消融分析证明这部分差很重要),和可训练的权重。回归目标:
计算两个embedding的余弦相似度,使用均方误差作目标函数三元组目标:
三个句子a,p,n,p,n分别表示与a同类和不同类的语句。
加入裕度alpha,使得语p至少比n距离a更近alpha.
可使用的欧式距离,设置alpha = 1.
3路损失的softmax-分类器的目标函数来微调SBERT.
batchsize16,adam优化器,学习率2e-5, 在10%的训练数据上实行线性学习率的预热,默认池化方式为MEAN.
Conlusion
BERT将语句映射到向量空间中的方法,不适用于和通用的相似性度量方法(如余弦相似性)一起使用。
SBERT在siamese或三元网络架构中微调了BERT,获得了现有语句嵌入方法的最好效果。
SBERT计算效率大大提升,可5秒实现1w语句的聚类。