Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
代码
BERT 的构造使其不适合语义相似性搜索以及聚类等无监督任务。
别人很完善的总结

介绍

这篇论文介绍了 Sentence-BERT (SBERT),它是对预训练 BERT 网络的一种修改,它使用连体siamese三元组网络triplet network 结构来推导语义上有意义的句子嵌入,可以使用余弦相似度进行比较。这将工作量从 BERT / RoBERTa 的 65 小时减少到 SBERT 的大约 5 秒,同时保持 BERT 的准确性。

解决聚类和语义搜索的一种常用方法是将每个句子映射到一个向量空间,以使语义相似的句子接近。研究人员已经开始将单个句子输入到 BERT 中,并推导出固定大小的句子嵌入。最常用的方法是平均 BERT 输出层(称为 BERT 嵌入)或使用第一个令牌的输出。但是这种常见做法会产生相当糟糕的句子嵌入,甚至比平均 GloVe 嵌入更糟糕。

连体网络架构使得可以导出输入句子的固定大小的向量。使用余弦相似度或曼哈顿/欧几里得距离等相似度度量,可以找到语义相似的句子。

BERT (Devlin et al., 2018) 是一个预训练的 Transformer 网络,由一个特殊的 [SEP] 标记分隔。应用了 12 层(基础模型)或 24 层(大型模型)的多头注意力,并将输出传递给一个简单的回归函数以得出最终标签。

模型

SBERT 在 BERT / RoBERTa 的输出中添加了一个池化操作,以获得一个固定大小的句子嵌入。
尝试了三种池化策略:
使用 CLS-token 的输出
计算所有输出向量的平均值(MEAN-策略)
以及计算输出向量随时间变化的最大值(MAX-策略)
默认配置为 MEAN

为了微调 BERT ,用连体和三元网络来更新权重,以使生成的句子嵌入在语义上有意义,并且可以和余弦相似度进行比较。
并且尝试了
Classification Objective Function.
将句子向量u uu、v vv、∣ u − v ∣ |u-v|∣u−v∣拼接起来并乘以训练得到的权重w
n表示句子向量的维度,k表示标签的个数。

请添加图片描述
Regression Objective Function.
计算两个句子嵌入 u 和 v 之间的余弦相似度,误差函数是均方误差。
请添加图片描述

Triplet Objective Function
损失函数:请添加图片描述

模型:
使用SNLI和Multi-Genre NLI数据集训练SBERT
且在每一个 epoch 用 3-way softmax 分类器目标函数对 SBERT 进行微调。
用了 16 的batch size,学习率为 2e-5 的 Adam 优化器,以及超过 10% 的训练数据的线性学习率预热。默认池化策略是 MEAN

结论

BERT 将句子映射到一个向量空间,该向量空间不适合与余弦相似度等常见相似性度量一起使用。七个 STS 任务的性能低于平均 GloVe 嵌入的性能。
为了克服这个缺点,作者提出了 Sentence-BERT (SBERT)。 SBERT 在连体/三元网络架构中微调 BERT。我们在各种通用基准上评估了质量,与最先进的句子嵌入方法相比,它有显着的改进。用 RoBERTa 替换 BERT 似乎在在论文的实验中无效

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值