• 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博客

  • 相关阅读:
    酷宇宙观点:万物金融化,定义下一个金融服务时代
    通过 Python 脚本支持 OC 代码重构实践(一):模块调用关系分析
    用 Flutter 轻松做个红包封面
    4.求1000以内的所有完数
    设计模式之命令模式
    Go的接口,闭包,异常捕获
    STM32模拟IIC与IIC四种实现数字光强采集模块GY30(标准库与HAL库)
    【SpringBoot】生成二维码、在图片中嵌入二维码
    建造者模式
    NePTuNe 论文笔记
  • 原文地址:https://blog.csdn.net/MarkAustralia/article/details/127090417