Sentence-Bert论文笔记

Introduction

Sentence-BERT网络结构主要是用来解决bert模型在语义相似度搜索任务的不足。简单通俗地讲,就是借鉴孪生网络模型的框架,将不同的句子输入到两个bert模型中(但这两个bert模型是参数共享的,也可以理解为是同一个bert模型),获取到每个句子的句子表征向量;而最终获得的句子表征向量,可以用于语义相似度计算,也可以用于无监督的聚类任务。对于同样的10000个句子,我们想要找出最相似的句子对,只需要计算10000次,需要大约5秒就可计算完全。

Model

Bert常规做法是将匹配任务转换成二分类任务(相似/不相似)。输入的两个文本拼接成一个序列(中间用一个特殊的符号“SEP”分割),经过12层(base-model)或24层(large-model)的multi-head Transformer模块编码后,将输出层的字向量取平均或者取第一个token位置“CLS”的特征作为句向量,经softmax完成最终分类。

而Sentence-Bert作者在文中定义了三种通过bert模型求句子向量的策略,分别是CLS向量平均池化最大池化

CLS向量策略,就是将bert模型中,开始标记【cls】向量,作为整句话的句向量。

平均池化策略,就是将句子通过bert模型得到的句子中所有的字向量进行求均值操作,最终将均值向量作为整句话的句向量。

最大值池化策略,就是将句子通过bert模型得到的句子中所有的字向量进行求最大值操作,最终将最大值向量作为整句话的句向量。

并且作者在对bert模型进行微调时,设置了三个目标函数,用于不同任务的训练优化;

(1)Classification Objective Function

首先获得两句话的句子向量 u 和 v ,并将u 、 v和二者按位求差向量 |u−v| 进行拼接,再将拼接好的向量乘上一个可训练的权重 Wt∈R3n∗k :

o=softmax(Wt(u,v,|u−v|))

其中, n 为句子向量维度, k 为类别数。

(2)Regression Objective Function

目标函数是直接对两句话的句子向量 u 和 v计算余弦相似度。

(3)Triplet Objective Function

在这个目标函数下,将模型框架进行修改,将原来的两个输入,变成三个句子输入。给定一个锚定句 a ,一个肯定句 p 和一个否定句 n ,模型通过使 与a与p 的距离小于 与a与n 的距离,来优化模型。使其目标函数o最小,即

o=max(||sa−sp||−||sa−sn||+ϵ,0)

其中, 和sa,sp和sn 表示句子 和a,p和n 的向量, ||·|| 表示距离度量, ϵ 表示边距。在论文中,距离度量为欧式距离,边距大小为1。

总结

总的来说,SBert直接使用Bert的原始权重进行初始化,在具体数据集上微调,训练过程和传统Siamse Network差异不大。但是这种训练方式能让Bert更好的捕捉句子之间的关系,生成更优质的句向量。在评估测试阶段,SBert直接使用余弦相似度来比较两个句向量之间的相似度,极大提升了推理速度。此外,在Pool方法中,平均池化的效果要比另两种方法更好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杞墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值