• 文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings

    • 1. 文献内容简介
    • 2. 主要方法介绍
    • 3. 主要实验介绍
      • 1. STS Experiment
      • 2. Downsteam Experiment
    • 4. 讨论
      • 1. loss function考察
      • 2. 其他正例构造方式考察
      • 3. 消解实验
    • 5. 结论 & 思考

文献链接:https://arxiv.org/abs/2104.08821v2

1. 文献内容简介

这篇文章将对比学习引入到了sentence embedding的学习过程当中。

主要思路感觉还是接着之前的SentenceBert一脉相承的(这部分内容我之前也写过一个小博客《文献阅读:Sentence-BERT:Sentence Embeddings using Siamese BERT-Networks》进行过介绍),主体还是使用的Bert或者Roberta模型,但是不同于sentence bert的截断迁移,这里采用的方式是通过引入对比学习来直接对sentence embedding进行学习,从而达到一个更好的效果。

2. 主要方法介绍

如前所述,这里的核心方法在于引入度量学习从而可以直接对sentence embedding进行学习。

不过这样的方法带来的问题在于说数据的准备,对比学习需要在数据上准备好正负例,但是这个缺乏直接的训练数据。

比较标准的范式就是自己去通过一些简单的方法来构造一些伪正负例,比如说删词、加词、换序、双向翻译这类比较常规的操作,但是这篇文章里面提出了一种新型的正负例构造的方式,也就是标题中所说的SimCSE方法。

其思路异常的简单,就是同一条数据过两次模型,由于dropout的随机性导致两个计算结果会有一定的不一致,然后将这两个结果作为正例对,而batch当中的其他所有的结果作为负例对,从而就完成了正负例的构建,然后就可以进行计算了。

3. 主要实验介绍

1. STS Experiment

这部分实验主要就是考察sentence embedding的直接表现。考察方式和之前几篇文献的方法一致,就是考察一下STS数据集在spear correlation的性能表现,得到结果如下:

可以看到,基本就是碾压局,而且提升的点还挺多的。

2. Downsteam Experiment

另一方面,SimCSE finetune之后得到的模型在下游分类任务当中的性能表达也不错。

该文献同样在下游一些分类任务当中的结果如下:

可以看到,即使放到下游任务当中,SimCSE依然可以得到很好的性能表现。

4. 讨论

但是,虽然上述实验结果显示SimCSE方法在结果上展现了很高的优越性,但是其何以如此优秀依然是一个值得讨论的问题。

对此,文献中也进行了一定的考察。

1. loss function考察

首先,考察文献中对于loss function的定义,其具体的表达式如下:

L=−logesim(hizi,hizi′)/τ∑j=1Nesim(hizi,hjzj′)/τL = - log \frac{e^{sim(h_i^{z_i}, h_{i}^{z_i'})/\tau}}{\sum_{j=1}^N e^{sim(h_i^{z_i}, h_{j}^{z_j'})/\tau}}L=logj=1Nesim(hizi,hjzj)/τesim(hizi,hizi)/τ

这个loss function的定义事实上就我所知算是现阶段对比学习比较惯用的一个定义了,文献中对于这个公式的有效性方面进行了一定的讨论。

具体而言,上述loss函数可以展开为:

L=−1τE[f(x)T⋅f(x+)]+E[logE[ef(xT⋅f(x−)/τ)]]L = -\frac{1}{\tau} E[f(x)^T \cdot f(x^+)] + E[log E[e^{f(x^T \cdot f(x^-)/\tau)}]]L=τ1E[f(x)Tf(x+)]+E[logE[ef(xTf(x)/τ)]]

其中,前者可以用于保证alignment,即正例之间的相似性,而后者则可以用于保证uniformity,即正例与负例之间的相异性以及在整个表示空间当中embedding的分布均匀性。

而实际在结果的表现当中,文献中也给出了不同方法在alignment以及uniformity的性能表达如下:

可以看到,SimCSE在alignment以及uniformity方面是比较均衡的。

2. 其他正例构造方式考察

但是,如前所述,这个loss函数的定义事实上算是对比学习的常用定义了,并不算什么新颖的东西,该文献最新颖的技术点还是在于两次dropout的正例对的定义方式,但是,这样的构造方式是否真的较之其他的实验方法会更有效呢?

文中同样给出了不同的正例构造方式下模型在STS数据集下的性能表达,具体如下表所示:

可以看到,较之其他的整理构造方式,SimCSE同样具有更好的性能表达。

3. 消解实验

最后,文献还做了一些消解实验来看一下一些基础的因子对实验结果的影响,具体如下两表所示:

不过整体而言,上述内容显示batch size、MLM以及sentence embedding的选择方面都会对结果产生一定的影响,但是影响事实上都不是特别显著,唯一值得一提的可能就是batch size,其大小选择需要保持适中,不要太大也不要太小。

5. 结论 & 思考

这篇文献对我而言最大的意义在于提供了一种新型的表征学习的方式,以及在缺乏优质的标注数据的情况下进行自监督学习的方式,在如今数据为王的时代下,能够有效的扩展并利用好数据无疑有着巨大的意义。

因此,我也是在推荐场景下借鉴上文的思路进行了一些实验,值得一提的是,在看文献的时候事实上我就存在着一个疑问,即我不奇怪SimCSE能够学到很好的uniformity,但是对于alignment的学习我始终抱有一定的疑惑,因为事实上他的正例对是通过dropout进行构建的,本质而言都是他自己,仅在参数上进行了生成靠近,但是这无法学习到跨输入的相似性,对于两个相似的句子,只能通过全局的loss最小化的方式进行间接的学习。

因此,我事实上对于上文能够在alignment方面获取较好的效果是比较惊讶的,实际进行实验之后发现,如果直接从0开始训练,上文的方式在alignment方面确实效果不佳,尽在uniformity方面获得了较好的性能表达,但是,如果基于已经pretrain之后的模型在进行finetune,上述问题看起来似乎是可以解决的,至少在我这边的实验结果,看起来无论是本身的embedding表达还是在下游的recall以及ranker模型当中,都超越了之前的baseline,似乎还是可以的。

文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings相关推荐

  1. SimCSE详解,Simple Contrastive Learning of Sentence Embeddings

    简介 contrastive(对比)学校框架,提升句子embedding效果 无监督,句子本身和句子自己带有dropout 使用NLI数据集,entailment(蕴含)对作为正例,contradic ...

  2. 文献阅读:SNCSE: Contrastive Learning for Unsupervised Sentence Embedding with Soft Negative Samples

    文献阅读:SNCSE: Contrastive Learning for Unsupervised Sentence Embedding with Soft Negative Samples 1. 内 ...

  3. 2018-12 文献阅读:Boosting for Transfer Learning(2007)--迁移学习

    2018-12 文献阅读:Boosting for Transfer Learning(2007) 2018-12 文章的作者Wenyuan Dai&Qiang yang&Gui_Ro ...

  4. 【笔记】文献阅读[SORT]-SIMPLE ONLINE AND REALTIME TRACKING

    SORT: SIMPLE ONLINE AND REALTIME TRACKING 引言 2 文献综述 3 方法 3.1 检测 3.2 评估模型 3.3 数据关联 4 实验 4.1 指标 4.2 性能 ...

  5. 论文阅读:Graph Contrastive Learning with Augmentations

    Abstract 图结构数据上的广义.可转移和鲁棒表示学习仍然是当前图神经网络(GNNs)面临的一个挑战.与用于图像数据的卷积神经网络(CNNs)不同,对gnn的自我监督学习和预训练的探索较少.在本文 ...

  6. 【论文阅读】Simple Contrastive Graph Clustering

    Simple Contrastive Graph Clustering(简易的对比图聚类) 文章目录 Simple Contrastive Graph Clustering(简易的对比图聚类) 1. ...

  7. 【文献阅读】ResNet-Deep Residual Learning for Image Recognition--CVPR--2016

    最近准备用Resnet来解决问题,于是重读Resnet的paper <Deep Residual Learning for Image Recognition>, 这是何恺明在2016-C ...

  8. [文献阅读] Sparsity in Deep Learning: Pruning and growth for efficient inference and training in NN

    文章目录 1. 前言 2. Overview of Sparsity in Deep Learning 2.1 Generalization 2.2 performance and model sto ...

  9. 【文献阅读】Model-based Reinforcement Learning for Predictions and Control for Limit Order Books

    0 Abstract 作者使用强化学习构建了一个 agent,可以在股票市场下达买卖订单.仅使用历史观察数据构建环境模型,RL agent 通过与环境模型而不是与真实市场交互来学习交易策略,以最小化风 ...

最新文章

  1. 免费教材丨第48期:业界大牛中文教学视频《深度学习:进阶》第25-28讲
  2. Hibernate中的数据库方言(Dialect)
  3. Q2财报凸显“服务”,“巨人”百度正在转身
  4. InnoDB的行锁和表锁
  5. SAP和CRM相关的标准教材,学通了这些,就算是CRM专家了
  6. codeforces 734A-C语言解题报告
  7. 嵩天python爬虫_我自己爬-python爬虫快速入门(一)
  8. AngularJS之中级Route【二】(七)
  9. c++builder中dbgrid控件排序_如何实现APP中各种布局效果?学会这几个控件就够了...
  10. 2017.9.4 斜堆 失败总结
  11. Spring: @Import @ImportResource引入资源
  12. Android插件实战总结之TwsPluginFramework
  13. JDK11即将来临,新特性了解一下
  14. 自走棋服务器没有响应,从爆火到凉凉,多多自走棋宣布停服,加入腾讯属于无奈?...
  15. php 模拟登陆微信,PHP实现微信模拟登陆的实例介绍
  16. web3.js查询方法的调用方式汇总
  17. 【随笔】那些免费友好的遥感影像数据下载网站
  18. 搜索结果Refinement 行为总结之 multi-selection refinement
  19. #研发解决方案#数据开放实验室:再战即席查询和数据开放
  20. CSS中经典的双飞翼布局(

热门文章

  1. 打飞机--C语言版(是真打飞机!)
  2. SAP中利润中心清单输出请求处理实例
  3. 串口通信中一些常用的小工具
  4. 人事管理系统 v4.1.8(源码)
  5. 乐天行动派2018年度公益盛典成功举办 公益大脑掀起创变未来风暴
  6. 【精品盘点】2020年最受欢迎的6个知识库整理软件!
  7. 如何用python批量识别图片上的文字(一)
  8. 快速了解矢量量化Vector-Quantized(VQ)及相应代码
  9. SpringMVC_初级总结
  10. Qt编写可视化大屏电子看板系统18-柱状分组图