当前位置: 首页 > news >正文

SentenceTransformer 之论文解读

摘要

原文标题:Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
链接:https://arxiv.org/pdf/1908.10084.pdf

尽管Bert和RoBERTa在句子对回归任务上,例如语义文本相似度(Semantic Text Similarity),取得了新的sota结果。但是,需要将两个句子都输入到模型中,造成较大的计算延时:在10,000个句子中需要相似的句子对,需要BERT计算50,000,000次,需要大概65个小时。因此,BERT的模型结构决定了,不适合用来做相似文本检索或者是无监督文本聚类。
因此,本文提出了基于孪生网络或者三元网络结构的BERT模型,可以用来计算具有语义的句子向量,该向量可以使用余弦相似度进行比较。这种方法可以在保留BERT的准确度水平的基础上,将65小时缩减到5s。
文本评估了SBERT(Sentence BERT的简称)和SRoBERTa在STS任务和迁移学习任务上的表现。

模型

SBERT通过在BERT和RoBERTa的输出之上加入池化层,获得固定长的句子向量表示。本文实验了三种池化策略:

  1. 直接使用CLS的向量;
  2. 使用所有输出向量的均值MEAN
  3. 使用所有输出向量的最大值MAX

模型结构
使用孪生网络训练BERT。具体结构如下:
基于孪生网络的SBERT网络结构
注意:孪生网络通过共享两个主模型的权重,从而得到一致的向量表示。
模型的网络结构取决于可用的训练数据。本文实验了如下的网络结构和损失函数。

分类目标函数

首先将三个向量拼起来,分别是u,v,元素差|u-v|。然后乘权重矩阵后,计算softmax得到最终的预测概率向量。
o = s o f t m a x ( W 3 n ∗ k ∗ c o n c a t ( u , v , ∣ u − v ∣ ) ) o=softmax(W^{3n*k}*concat(u,v,|u-v|)) o=softmax(W3nkconcat(u,v,uv))
其中,n为句子向量的长度,k为类别标签的个数。然后使用交叉熵损失函数对模型进行权重的计算。
c r o s s _ e n t r o p y _ l o s s = − ∑ y i ∗ ( l o g p i ) cross\_entropy\_loss=-\sum{y_i*(logp_i)} cross_entropy_loss=yi(logpi)

回归目标函数

计算两个句子向量的余弦相似度作为输出。
o = c o s _ s i m ( u , v ) = u ∗ v ∣ ∣ u ∣ ∣ ∗ ∣ ∣ v ∣ ∣ o=cos\_sim(u,v)=\frac{u*v}{||u||*||v||} o=cos_sim(u,v)=∣∣u∣∣∣∣v∣∣uv
使用均方误差作为损失函数。
m e a n _ s q u a r e _ e r r o r = − ∑ i n ( y ^ i − y i ) 2 mean\_square\_error=-\sum_i^n{(\hat{y}_i-y_i)^2} mean_square_error=in(y^iyi)2

三元目标函数

给定一个锚定句子a,一个正例句子p,一个负例句子n。三元损失函数使a和p之间的距离小于a和n之间的距离。具体的损失函数如下:
t r i p l e _ l o s s = m a x ( ∣ s a , s p ∣ − ∣ s a , s n ∣ + ϵ , 0 ) triple\_loss=max(|s_a,s_p|-|s_a,s_n|+\epsilon,0) triple_loss=max(sa,spsa,sn+ϵ,0)
其中, s x s_x sx表示句子a/p/n的句子向量。 ∣ . ∣ |.| ∣.∣表示距离函数。 ϵ \epsilon ϵ表示间隔。 ϵ \epsilon ϵ的作用为,ap之间的距离和an之间的距离只差至少在该间隔之上。本文中,距离使用欧氏距离,间隔设置为1.

消融实验

消融实验的目的是,通过去掉模型中的某个模块,观察结果的变化,从而判断该模块的作用。目的是发现其中的因果关系。
本文验证了不同的池化策略和向量拼接策略之间的差异。
在这里插入图片描述

相关文章:

SentenceTransformer 之论文解读

摘要 原文标题:Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks 链接:https://arxiv.org/pdf/1908.10084.pdf 尽管Bert和RoBERTa在句子对回归任务上,例如语义文本相似度(Semantic Text Similarity)…...

AI发展历史

一、AI的发展历史 二、AI发展的第五阶段 (一)、第一阶段 1.艾伦图灵与模仿游戏 艾伦•图灵(Alan Turing,1912~1954)是英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。二战中协助军…...

想要精通算法和SQL的成长之路 - 简化路径

想要精通算法和SQL的成长之路 - 简化路径 前言一. 简化路径 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 简化路径 原题连接 思路如下: 我们根据 "/" 去拆分字符串,得到每个子目录。这里拿到的子目录可能是空字符串,需要…...

【哈士奇赠书活动 - 41期】- 〖产品设计软技能:创业公司篇〗

文章目录 ⭐️ 赠书 - 《产品设计软技能:创业公司篇》⭐️ 内容简介⭐️ 作者简介⭐️ 编辑推荐⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《产品设计软技能:创业公司篇》 ⭐️ 内容简介 在创业公司设计产品与在成熟公司设计产品存在明显差异。《产品设计软…...

MARS: An Instance-aware, Modular and Realistic Simulator for Autonomous Driving

MARS: An Instance-aware, Modular and Realistic Simulator for Autonomous Driving(基于神经辐射场的自动驾驶仿真器)https://github.com/OPEN-AIR-SUN/marshttps://arxiv.org/pdf/2307.15058.pdfhttps://mp.weixin.qq.com/s/6Ion_DZGJwzs8JOoWMMbPw …...

关联规则挖掘(上):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…...

centos7 + citus12 + postgresql 14 安装

1 安装及编译 yum install -y centos-release-scl-rh epel-release yum update -y yum groupinstall -y Development Tools yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum install -y postg…...

MySQL、Oracle、SQL Server / MS Access 中的 NULL函数用法

一、MySQL: isnull(exper) 判断exper是否为空,是则返回1,否则返回0 ifnull(exper1,exper2)判断exper1是否为空,是则用exper2代替 nullif(exper1,exper2)如果expr1 expr2 成立,那么返回值为NULL,否则返回值…...

App Store审核被拒原因与解决方案

为了避免不必要的上线延迟及成本增加,了解App Store审核被拒的常见原因以及对应的解决方案是开发人员以及营销人员的必修课。 CSDN相关的解决方案 App Store审核被拒的12个常见原因与快速过审解决方法...

​LeetCode解法汇总121. 买卖股票的最佳时机

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给定一个数…...

【Go】go-es统计接口被刷数和ip访问来源

go-es模块统计日志中接口被刷数和ip访问来源 以下是使用go的web框架gin作为后端,展示的统计页面 背景 上面的数据来自elk日志统计。因为elk通过kibana进行展示,但是kibana有一定学习成本且不太能满足定制化的需求,所以考虑用编程的方式…...

debian 安装 pg --chatGpt

pgt: 要在Debian上安装PostgreSQL (通常缩写为PG) 数据库,您可以使用apt包管理器来执行安装操作。以下是安装PostgreSQL的步骤: 1. 打开终端。 2. 使用sudo权限以管理员身份运行以下命令,以更新包信息并安装PostgreSQL: bash …...

商城小程序代客下单程序开发演示

一款专为传统电商、实体商家开发的商城系统小程序,做私域、做留存、做社交必备功能全都有。 1、丰富的营销玩法:拼团、秒杀、定金预售、分销、社区团购、积分商城、支付有礼等主流获客玩法都有。 2、强大的会员体系:普通会员、付费会员、会…...

SpringBoot 整合 jetcache缓存

目前 jetcache 支持的本地缓存方案有两种&#xff0c;远程缓存支持两种&#xff0c;分别如下&#xff1a; 本地缓存&#xff08;Local&#xff09; LinkedHashMapCaffeine 远程缓存&#xff08;Remote&#xff09; Redis Tair 依赖导入 <dependency><groupId>…...

HTML5+CSS3+移动web 前端开发入门笔记(二)HTML标签详解

HTML标签&#xff1a;排版标签 排版标签用于对网页内容进行布局和样式的调整。下面是对常见排版标签的详细介绍&#xff1a; <h1>: 定义一级标题&#xff0c;通常用于标题栏或页面主要内容的标题。<p>: 定义段落&#xff0c;用于将文字分段展示&#xff0c;段落之…...

Maven 配置阿里云镜像

1. 查找maven setting.xml配置文件 find / -name "setting.xml" 2. 添加阿里云镜像 修改maven根目录下的conf文件夹中的setting.xml文件中的mirrors下添加mirror标签 <settings> <localRepository>E:\Maven\repository</localRepository> <…...

矢量图绘制软件EazyDraw mac中文版软件介绍

EazyDraw mac是一款功能强大且易于使用的矢量绘图软件。 EazyDraw mac软件介绍 矢量绘图工具&#xff1a;EazyDraw 提供了一套全面的矢量绘图工具&#xff0c;包括直线、曲线、多边形、文本框、图形填充等。用户可以使用这些工具创建和编辑精确的矢量图形&#xff0c;无论是简…...

Cocos Creator3.8 项目实战(四)巧用九宫格图像拉伸

一、为什么要使用九宫格图像拉伸 相信做过前端的同学都知道&#xff0c;ui &#xff08;图片&#xff09;资源对包体大小和内存都有非常直接的影响。 通常ui 资源都是图片&#xff0c;也是最占资源量的资源类型&#xff0c;游戏中的ui 资源还是人机交互的最重要的部分&#xff…...

怎么使用jenkins设置web自动打包

在Jenkins中设置Web自动打包需要完成以下步骤&#xff1a; 1.环境基础 安装Jenkins&#xff1a;首先&#xff0c;你需要在服务器上安装Jenkins。 你可以从Jenkins官网下载Jenkins的安装包&#xff0c;并按照官方指导进行安装。 2.使用jenkins设置web自动打包步骤 创建Jenk…...

完美解决 flex 实现一行三个,显示多行,左对齐

效果图 代码 <body><section class"content"><div class"item">元素</div><div class"item">元素</div><div class"item">元素</div><div class"item">元素</di…...

初识Spring

目录 1.Spring 基础 2.传统程序开发 3.IoC程序开发&#xff08;解耦&#xff09; 4.DI 4.1 IoC 和 DI 有什么区别 1.Spring 基础 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;有着活跃⽽庞⼤的社区&…...

Mybatis 使用参数时$与#的区别

之前我们介绍了mybatis中参数的使用&#xff0c;本篇我们在此基础上介绍Mybatis中使用参数时$与#的区别。 如果您对mybatis中参数的使用不太了解&#xff0c;建议您先进行了解后再阅读本篇&#xff0c;可以参考&#xff1a; Mybatis参数(parameterType)https://blog.csdn.net…...

java基本数据类型和包装类型区别

...

解锁Spring Boot的强大配置功能:@ConfigurationProperties与@PropertySources详解

解锁Spring Boot的强大配置功能&#xff1a;ConfigurationProperties与PropertySources详解 前言什么是ConfigurationProperties和PropertySourcesConfigurationProperties的使用步骤 1: 创建 Java POJO 类步骤 2: 配置类步骤 3: 配置文件步骤 4: 注入配置属性 PropertySources…...

Java和Vue字符串加密

字符串加密 AES 加密算法 在 Java 中&#xff0c;可以使用不同的加密算法来对字符串进行加密。以下是使用 AES 加密算法的示例代码&#xff0c;演示如何对一个字符串进行加密&#xff1a; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java…...

Java:java版结巴分词:jieba-analysis

文档 https://github.com/huaban/jieba-analysishttps://mvnrepository.com/artifact/com.huaban/jieba-analysis 依赖 <!-- https://mvnrepository.com/artifact/com.huaban/jieba-analysis --> <dependency><groupId>com.huaban</groupId><art…...

java生成一个符合密码学和安全性的随机秘钥

有时 我们在生成token 或者完成某种加密形式时会需要一个秘钥 但是 有些时候 项目开发并没有规定用什么秘钥 但是 秘钥都是要有一定格式规范的 我们可以通过以下代码生成一个随机秘钥 import java.security.SecureRandom; import java.util.Base64;public class TokenGenerat…...

C++ - 右值引用 和 移动拷贝

右值引用 我们先来了解什么是左值&#xff0c;什么是右值&#xff1a; 左值 和 有值 区分 首先&#xff0c;左值 和 右值 并不是完全意味着 在 "" 左边的就是 左值 &#xff1b; 在 "" 右边的就是右值。这是不一定的。只能说&#xff0c;在左边的大概率是…...

项目成员积分规则

在当下的项目/团队管理种&#xff0c;如何让成员能清晰的看到&#xff0c;自己的工作、努力在团队种属于那个段位&#xff0c;通过这个形式&#xff0c;并配合其他方式去点燃成员的进步之心。以积分的形式&#xff0c;代替绩效考核&#xff0c;一些零散的想法&#xff0c;欢迎各…...

Linux CentOS7 vim多窗口编辑

我们在用vim编辑文件时&#xff0c;有各种需求。如有时需要在多个文件之间来回操作&#xff0c;一会关闭一个文件&#xff0c;一会再打开另外一个文件&#xff0c;这样来回操作显得太笨拙。有时&#xff0c;vim编辑多行的大文件&#xff0c;来回查看、编辑前面一部分及最后一部…...

工业设计代做网站/百度信息流账户搭建

一.单继承 一个子类对父类的某个方法重写后&#xff0c;可以用super重新调用父类的这个方法 格式 super().方法()例如 class Parent:def __init__(self):print("Parent") class Son1(Parent):pass class Son2(Parent):def __init__(self):print("Son2")…...

沧州网站建设费用/深圳优化公司统高粱seo

ubuntu下使用sratoolkit将sra文件转换成fastq文件&#xff1a; 环境&#xff1a;ubuntu14.04 sratoolkit.2.5.5-ubuntu641.下载 下载地址&#xff1a; http://trace.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?cmdshow&fsoftware&msoftware&ssoftware# 2.将sra转换成…...

拉新推广怎么快速拉人/seo课程多少钱

<!--小练习&#xff0c;练习使用循环实现一个九九乘法表 第一步&#xff0c;最低要求&#xff1a;在Console中按行输出 n * m t 然后&#xff0c;尝试在网页中&#xff0c;使用table来实现一个九九乘法表 --> <!DOCTYPE html> <html><head><meta c…...

科创纵横 网站建设/山西网络推广专业

事务的定义 我们常说事务事务&#xff0c;事务在软件设计中事务很重要&#xff0c;那么到底什么是事务呢&#xff1f; 事务(Transaction)&#xff0c;一般是指要做的或所做的事情。在计算机术语中指访问并访问并有有可能更新数据库中各种数据项的一个程序执行单元。事务通常由高…...

网站整体风格设计/一个关键词要刷多久

工作之余抽点时间出来写写博文&#xff0c;希望对新接触的朋友有帮助。今天在这里和大家一同学习一下引用指针 函数是C/C程序的基本功能单元&#xff0c;其重要性不言而喻。函数设计的纤细缺点很容易致使该函数被错用&#xff0c;所以光使函数的功能正确是不敷的。本章重点论述…...

旅游公司网站开发与实现/青岛招聘seo

作者&#xff1a;JOE&#xff0c;原文链接&#xff0c;原文日期&#xff1a;2016-05-01译者&#xff1a;ckitakishi&#xff1b;校对&#xff1a;mmoaay&#xff1b;定稿&#xff1a;CMB当前&#xff0c;有许多人正在努力将 Swift 3.0 引入到基于 ARM 的系统中。通过本文你将了…...