SimCSE 对比学习方法

某厂四面技术面面试过程问到了这个,遂记录一下,补个漏

早期计算句子相似性的方法

之前写过一篇博客,记录的是比较早期的文本相似性计算方法,感兴趣可以移步 文本相似性计算。

在很多 NLP 任务中都会用到句子向量,例如文本检索、文本粗排、语义匹配等任务。现在有不少基于 Bert 的方式获取句子向量,一些比较改进的方法:例如 Bert-flow 和 Bert-whitening 等。

  • 使用预训练好的 Bert 直接获得句子向量,可以是 CLS 位的向量,也可以是不同 token 向量的平均值。
  • Bert-flow,Bert-flow 出自论文《On the Sentence Embeddings from Pre-trained Language Models》,主要是利用流模型校正 Bert 的向量。
  • Bert-whitening,用预训练 Bert 获得所有句子的向量,得到句子向量矩阵,然后通过一个线性变换把句子向量矩阵变为一个均值 0,协方差矩阵为单位阵的矩阵。

SimCSE

SimCSE: Simple Contrastive Learning of Sentence Embeddings

对比学习的思想就不过多赘述了,其好处之一就是可以利用大量未标注的数据对模型进行训练,同时拉近正样本的距离,使得负样本远离。这篇论文提出了两种SimCSE,有监督和无监督,下面仔细介绍一下这篇论文。

这篇文章重点提出了一个非常有效且simple的无监督对比学习方法来学习句子之间的相似性。

模型整体结构如图所示:包含无监督方法和有监督方法。

无监督

无监督模型,一个句子通过encoder得到sentence embedding,而其他句子得到的sentence embedding是作为负例。

正例的设置,对于同一个句子采用两个不同 Dropout Mask,得到两个不同的句向量作为正样本,通过不同的drop mask机制得到的sentence embedding。

dropout层在训练时是会随机drop一些输入的,具有一定的随机性,但是总体来说可以当做是同类样本(感觉mask一些词也是可以的)

训练目标为:

其中,sim()是余弦距离;

作者对比了 Dropout 和其他数据增强方法的效果 (评价指标是 Spearman 相关系数),结果如下表所示,其中 None 表示 SimCSE 用到的 Dropout 方法,可以看到通过 Dropout 生成正样本的效果比其他数据增强方式好。

有监督

SimCSE 也可用于有监督训练,例如可以使用自然语言推理数据集 (SNLI 和 MNLI) 进行有监督学习,自然语言推理数据集包含很多句子对,句子对有三种关系: 蕴含 (entailment), 中性 (neutral), 矛盾 (contradiction)。可以把蕴含和中性的句子对作为正样本,矛盾的句子对作为负样本进行训练。


训练目标:


下面是各种常见句子向量算法的对比,可以看到 SimCSE 的效果最好。

总结:

用了一个非常简单的方法,但是效果很好,可以广而用之,网上也有很多复现的开源代码可以学习。

感兴趣的可以参考 github

SimCSE 对比学习方法相关推荐

  1. EASE:一种融合实体信息的句子嵌入对比学习方法

    写在前面 大家好,我是刘聪NLP. 今天给大家带来一篇NAACL2022论文,一种融合实体信息的句子嵌入对比学习方法,全名为<EASE: Entity-Aware Contrastive Lea ...

  2. SimCSE 对比学习句向量

    摘要 本文介绍了简单的对比学习框架SimCSE,一种无监督方法,使用一个输入句子,在一个对比目标中预测自己,只使用标准的dropout作为噪声,效果与监督学习相当.删除dropout(数据增强方式)会 ...

  3. 自监督学习(十九):对比学习方法综述

    A SURVEY ON CONTRASTIVE SELF-SUPERVISED LEARNING Introduction Architectures Introduction 这里我们介绍一篇对比学 ...

  4. 【论文复现】SimCSE对比学习: 文本增广是什么牛马,我只需要简单Dropout两下

    文本增广是什么牛马,我只需要简单Dropout两下 Sentence Embeddings与对比学习 SimCSE 无监督Dropout 有监督对比学习 如何评判Sentence Embeddings ...

  5. NAACL 2022 | DiffCSE:基于差异的句向量对比学习方法

    ©作者 | 曾伟豪 单位 | 北京邮电大学 研究方向 | 对话摘要生成 论文标题: DiffCSE:Difference-based Contrastive Learning for Sentence ...

  6. 无关于目标or特定于目标:简单且有效的零样本立场检测对比学习方法

    ©PaperWeekly 原创 · 作者 | 梁斌.陈子潇 单位 | 哈尔滨工业大学(深圳) 研究方向 | 情感分析.立场检测 内容简介 零样本立场检测(zero-shot stance detect ...

  7. rdma_RDMA:基本原理和自举探索

    rdma The following article hopes to (i) explain the first principles behind RDMA, a technology produ ...

  8. 【EMNLP 2021】SimCSE:句子嵌入的简单对比学习 【CVPR 2021】理解对比学习损失函数及温度系数

    1. 介绍 SimCSE(Simple Contrastive Learning of Sentence Embeddings)是一种简单在没有监督训练数据的情况下训练句子向量的对比学习方法. 这个方 ...

  9. 恒源云(GPUSHARE)_[SimCSE]:对比学习,只需要 Dropout?

    文章来源 | 恒源云社区(恒源云,专注 AI 行业的共享算力平台) 原文地址 | Dropout 原文作者 | Mathor 要说2021年上半年NLP最火的论文,想必非<SimCSE: Sim ...

最新文章

  1. 解决kubectl get pods时 No resources found.问题
  2. 【快速通关】Git快速上手gitee
  3. Python之令人心烦意乱的字符编码与转码
  4. 线框模型_进行计划之前:线框和模型
  5. 2021牛客暑期多校训练营8 F-Robots(bitset优化dp)
  6. Java 8 Optional不仅用于替换空值
  7. Visual C++ 2008入门经典 第四章数组 字符串(练习题)
  8. Chapter13:IPv6
  9. c语言书籍(c语言书籍)
  10. aspCMS后台getshell
  11. oracle 复制表方法,Oracle 数据库之表的复制
  12. 基于lis3dh的简易倾角仪c源码_轻松应对并发问题,简易的火车票售票系统,Newbe.Claptrap 框架用例,第一步 — 业务分析...
  13. 图像特征提取(颜色,纹理,形状)
  14. java计算机毕业设计Web产品管理系统MyBatis+系统+LW文档+源码+调试部署
  15. java爬取新浪微博带有“展开全文”的完整微博文本
  16. CAD好用的是哪个版本?分享一个在线转换版本的方法
  17. Telnet - 访问8080端口并发送数据
  18. ubuntu:更新源操作步骤
  19. 直播预告| CVPR专场四来了!
  20. 前端地图分类(包括坐标系,GIS基础知识,2D与3D地图结构划分)

热门文章

  1. 【解读】阿里巴巴 MySQL 数据库规约
  2. lq到底是什么意思_LQ网络用语是什么意思?
  3. 蓝桥杯练习题--Fibonacci数列
  4. Android 9.0 10蓝牙音乐获取歌手、歌曲等信息
  5. 文件上传 webshell 各类型 一句话木马 图片马 制作 教程
  6. SVG进阶-sprite 雪碧图
  7. 极速狂飙 无线网BT下载使用技巧全攻略
  8. 树莓派3初始化安装(Raspberry Pi III)
  9. c new java_“邻避设施”的种类主要包括()。
  10. Xcode 真机调试 ineligible Devices的解决方法