SimCSE 对比学习句向量
摘要
本文介绍了简单的对比学习框架SimCSE,一种无监督方法,使用一个输入句子,在一个对比目标中预测自己,只使用标准的dropout作为噪声,效果与监督学习相当。删除dropout(数据增强方式)会导致表示崩溃。
本文提出了一种有监督的方法,将NLP推理数据集中的注释对纳入对比学习框架,集成对为正样本,对立对为负样本。实验表明对比学习将预先训练的嵌入的各向异性空间正则化,使其更加均匀,当有监督可用时能更好地处理。
介绍
SimCSE,一种简易对比句向量框架,可从未标注数据中产生好的句向量。
无监督的SimCSE预测输入句子本身,只有dropout作为噪声,即将同一个句子传递给预先训练的编码器两次,两次应用标准dropout,获得两个不同的嵌入作为正例。使用同一批次中其它句子作为负样本,模型预测负样本中的正样本。
有监督的SimCSE建立在近期成功使用NLI数据集进行句嵌入的基础上,将注释句对纳入对比学习,为一个3-way分类任务(蕴涵、中性和矛盾),使用蕴涵对可作为正样例。添加对应的矛盾对作为硬否定进一步提高性能。
为更好理解SimCSE,采用语义相关正对之间的对齐和整个表示空间的均匀性衡量学习到的向量的质量。
无监督SimCSE提高了均匀性,避免了dropout噪声退化对齐,提高了表示的表现力。NLI训练信号可进一步改善正对之间的对齐,产生更好的句向量。
背景
对比学习的目的是通过将语义上相近的邻居拉到一起,非邻居推开以学习有效的表示。假设一个成对的样本,其中xi和xi+ 语义相关。使用对比框架和批内负样本交叉熵目标函数;
用 h 表征 x,使用含有 N 对的最小批量 x 训练目标函数。
τ是温度超参数,sim(h1, h2)为余弦相似度。
使用BERT或RoBERTa编码输入的语句,使用对比学习(上述公式)调参。
对比学习中的一个关键问题是如何构建正样本对。视觉表示中,一种有效的解决方案是将同一图像的两种随机变换(例如,裁剪、翻转、扭曲和旋转)作为xi和xi+ 。语言表示可类似的方法,通过应用增强技术,如单词删除、重新排序和替换。但由于NLP的离散特性,数据增强在自然语言处理中具有固有的困难。
使用対齐性和均匀量表征质量。
给定正样本对的分布式表征,対齐性是计算向量对的预期距离。
均匀性衡量的是嵌入均匀分布的程度:
无监督SimCSE
无监督SimCSE很单:取一个句子集合,关键是对正样本对通过使用独立采样的dropout掩码; Transformer模型汇总包含dropout层,使用不同比率,获得编码,对于大小为N的一批数据,其目标函数为,h编码后的x;
Dropout噪音用于数据扩增:正样本对是相同句子使用不同dropout表征的向量
有监督SimCSE
增加dropout噪音可保持正样本对较好的対齐性。
使用NLI数据集预测句子间的关系:有继承性、中性或对立关系。
训练详情
使用BERT或RoBERTa预训练模型的CLS作为句向量,从英文维基百科随机抽取10^6个句子样本做无监督训练,
结论
本文提出了一个简单的对比学习框架SimCSE,提高了语义文本相似任务中句向量的表征。可使用NLI数据集预测输入句子本身的无监督和有监督方法。
无监督的对比目标,可在NLP中广泛应用,为文本输入的数据增强提供了新视角,可以扩展到其他连续表示,集成到语言模型预训练中。
参考:
原文:https://arxiv.org/abs/2104.08821v3
NLP论文阅读:最新对比学习方法 SimCSE_哔哩哔哩_bilibili
GitHub - princeton-nlp/SimCSE: EMNLP'2021: SimCSE: Simple Contrastive Learning of Sentence Embeddings https://arxiv.org/abs/2104.08821
simcse实践使用_programerchen的博客-CSDN博客
SimCSE 对比学习句向量相关推荐
- 【论文复现】SimCSE对比学习: 文本增广是什么牛马,我只需要简单Dropout两下
文本增广是什么牛马,我只需要简单Dropout两下 Sentence Embeddings与对比学习 SimCSE 无监督Dropout 有监督对比学习 如何评判Sentence Embeddings ...
- 恒源云(GPUSHARE)_[SimCSE]:对比学习,只需要 Dropout?
文章来源 | 恒源云社区(恒源云,专注 AI 行业的共享算力平台) 原文地址 | Dropout 原文作者 | Mathor 要说2021年上半年NLP最火的论文,想必非<SimCSE: Sim ...
- 就知道调bert,都不知道加个对比学习吗?
说到句向量,大家除了第一反应是用bert的CLS作为句向量,还有就是用word2vec学到每个词的向量,然后把句子中所有的词向量做pooling作为句子的向量.有篇论文SimCSE提到可以引入对比学习 ...
- CoSENT:比Sentence-BERT更有效的句向量方案
©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 学习句向量的方案大致上可以分为无监督和有监督两大类,其中有监督句向量比较主流的方案是 Face ...
- Ernie-SimCSE对比学习在内容反作弊上应用
作者 | ANTI 导读 AI技术在不同行业和业务被广泛的应用,本文介绍了反作弊团队在与spammer对抗愈演愈烈的趋势下,不断探索前沿技术,将百度NLP预训练模型结合对比学习用于解决spam内容中知 ...
- 谈推荐场景下的对比学习
前言 最近对比学习(Contrastive Learning, CL)火得一塌糊涂,被Bengio 和 LeCun 这二位巨头在 ICLR 2020 上点名是 AI 的未来.作为普通打工人,对比学习能 ...
- 【自然语言处理】【对比学习】SimCSE:基于对比学习的句向量表示
相关博客: [自然语言处理][对比学习]SimCSE:基于对比学习的句向量表示 [自然语言处理]BERT-Whitening [自然语言处理][Pytorch]从头实现SimCSE [自然语言处理][ ...
- bert 句向量 的 各向异性问题 及与 对比学习 的联系
本文主要介绍了 为什么基于bert产出的句向量,在语义相似相关的任务上表现较差的原因及相关解释(各向异性,表示退化,锥形空间),另外介绍了simcse 中 论述的 对比学习 与 各向异性 的联系. 主 ...
- SimCSE:用于句子嵌入的对比学习
目录 引言 对比学习Contrastive Learning SimCSE思想 无监督下的SimCSE 有监督下的SimCSE 连接各向异性Connection to Anisotropy 分析 引言 ...
最新文章
- python字典get计数_python字典中的get方法与setdefault方法
- django默认数据库sqlite3改为mysql
- nodejs接收表单写入mysql_NodeJS提交表单存数据库(转)
- 庖丁解牛|图解 MySQL 8.0 优化器查询转换篇
- 动态头像 Android 实现,Android仿京东金融首页头像效果
- ng service(服务)
- php在windows安装,php在windows环境下的安装
- # 研究杂感 × VOSviewer(第五辑)
- C/C++大数运算库介绍及安装
- 中科探海的海底掩埋物三维实时成像声呐
- Pixelmator for Mac(图像编辑器)
- 蓄水池采样算法的python实现_蓄水池抽样算法(Reservoir Sampling)
- 漫画:什么是蓝绿部署?
- 学c语言的第一篇博客~
- win10怎么更改账户名称_如何更改电脑系统账户名称?让你的名称看起来高大上,快来学习吧...
- 梯形【2018.11.26】
- PHP - 版本选择 - 线程安全与非线程安全 - 学习/实践
- 史上最全Linux命令总结
- 汇编学习教程:定义不同的段
- 盘点流程核心详细说明