0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

结合句子间差异的无监督句子嵌入对比学习方法-DiffCSE

深度学习自然语言处理 来源:NLP工作站 作者:刘聪NLP 2022-05-05 11:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

写在前面

今天分享给大家一篇NAACL2022论文,结合句子间差异的无监督句子嵌入对比学习方法-DiffCSE,全名《DiffCSE: Difference-based Contrastive Learning for Sentence Embeddings》。该篇论文主要是在SimCSE上进行优化,通过ELECTRA模型的生成伪造样本和RTD(Replaced Token Detection)任务,来学习原始句子与伪造句子之间的差异,以提高句向量表征模型的效果。

paper:https://arxiv.org/pdf/2204.10298.pdf
github:https://github.com/voidism/DiffCSE

介绍

句向量表征技术目前已经通过对比学习获取了很好的效果。而对比学习的宗旨就是拉近相似数据,推开不相似数据,有效地学习数据表征。SimCSE方法采用dropout技术,对原始文本进行数据增强,构造出正样本,进行后续对比学习训练,取得了较好的效果;并且在其实验中表明”dropout masks机制来构建正样本,比基于同义词或掩码语言模型的删除或替换等更复杂的增强效果要好得多。“。这一现象也说明,「直接增强(删除或替换)往往改变句子本身语义」

paper:https://aclanthology.org/2021.emnlp-main.552.pdf
github:https://github.com/princeton-nlp/SimCSE
论文解读:https://zhuanlan.zhihu.com/p/452761704

Dangovski等人发现,在图像上,采用不变对比学习和可变对比学习相互结合的方法可以提高图像表征的效果。而采用不敏感的图像转换(如,灰度变换)进行数据增强再对比损失来改善视觉表征学习,称为「不变对比学习」。而「可变对比学习」,则是采用敏感的图像转换(如,旋转变换)进行数据增强的对比学习。如下图所示,做左侧为不变对比学习,右侧为可变对比学习。对于NLP来说,「dropout方法」进行数据增强为不敏感变化,采用「词语删除或替换等」方法进行数据增强为敏感变化。

0a73af38-cbbd-11ec-bce3-dac502259ad0.png

paper:https://arxiv.org/pdf/2111.00899.pdf

作者借鉴Dangovski等人在图像上的做法,提出来「DiffCSE方法」,通过使用基于dropout masks机制的增强作为不敏感转换学习对比学习损失和基于MLM语言模型进行词语替换的方法作为敏感转换学习「原始句子与编辑句子」之间的差异,共同优化句向量表征。

模型

模型如下图所示,

0a944d06-cbbd-11ec-bce3-dac502259ad0.png

左侧为一个标准的SimCSE模型,右侧为一个带条件的句子差异预测模型。给定一个句子,SimCSE模型通过dropout机制构造一个正例,使用BERT编码器f,获取句向量,SimCSE模型的训练目标为:

其中,为训练输入batch大小,为余弦相似度,为温度参数.

右侧实际上是ELECTRA模型,包含生成器和判别器。给定一个长度为T的句子,,生成一个随机掩码序列,其中。使用MLM预训练语言模型作为生成器G,通过掩码序列来生成句子中被掩掉的token,获取生成序列。然后使用判别器D进行替换token检测,也就是预测哪些token是被替换的。其训练目标为:

针对一个batch的训练目标为。

最终将两个loss通过动态权重将其结合,

为了使判别器D的损失可以传播的编码器f中,将句向量拼接到判别器D的输入中,辅助进行RTD任务,这样做可以鼓励编码器f使信息量足够大,从而使判别器D能够区分和之间的微小差别。

当训练DiffCSE模型时,固定生成器G参数,只有句子编码器f和鉴别器D得到优化。训练结束后,丢弃鉴别器D,只使用句子编码器f提取句子嵌入对下游任务进行评价。

结果&分析

在句子相似度任务以及分类任务上的效果,如下表1和表2所示,相比与SimCSE模型均有提高,

0aa24fdc-cbbd-11ec-bce3-dac502259ad0.png

0ac4e8e4-cbbd-11ec-bce3-dac502259ad0.png

为了验证DiffCSE模型具体是哪个部分有效,进行以下消融实验。

Removing Contrastive Loss

如表3所示,当去除对比学习损失,仅采用RTD损失时,在句子相似度任务上,下降30%,在分类任务上下降2%。

0af3bdd6-cbbd-11ec-bce3-dac502259ad0.png

Next Sentence vs. Same Sentence

如表3所示,当将同句话预测任务,变成预测下句话任务时,在句子相似度任务和分类任务上,具有不同程度的下降。

Other Conditional Pretraining Tasks

DiffCSE模型采用MLM模型和LM模型分别作为生成器时,效果如表3所示,在句子相似度任务和分类任务上,具有不同程度的下降。句子相似度任务上下降的较为明显。

Augmentation Methods: Insert/Delete/Replace

将MLM模型生成伪造句换成随机插入、随机删除或随机替换的效果,如表示所4,MLM模型的效果综合来说较为优秀。

0b2021e6-cbbd-11ec-bce3-dac502259ad0.png

Pooler Choice

在SimCSE模型中,采用pooler层(一个带有tanh激活函数的全连接层)作为句子向量输出。该论文实验发现,采用带有BN的两层pooler效果更为突出,如表5所示;并发现,BN在SimCSE模型上依然有效。

0b423128-cbbd-11ec-bce3-dac502259ad0.png

代码如下:

classProjectionMLP(nn.Module):
def__init__(self,config):
super().__init__()
in_dim=config.hidden_size
hidden_dim=config.hidden_size*2
out_dim=config.hidden_size
affine=False
list_layers=[nn.Linear(in_dim,hidden_dim,bias=False),
nn.BatchNorm1d(hidden_dim),
nn.ReLU(inplace=True)]
list_layers+=[nn.Linear(hidden_dim,out_dim,bias=False),
nn.BatchNorm1d(out_dim,affine=affine)]
self.net=nn.Sequential(*list_layers)

defforward(self,x):
returnself.net(x)

Size of the Generator

在DiffCSE模型中,尝试了不同大小的生成器G,如下表所示,DistilBERTbase模型效果最优。并且发现与原始ELECTRA模型的结论不太一致。原始ELECTRA认为生成器的大小在判别器的1/4到1/2之间效果是最好的,过强的生成器会增大判别器的难度。而DiffCSE模型由于融入了句向量,导致判别器更容易判别出token是否被替换,所以生成器的生成能力需要适当提高。

0b4ebb78-cbbd-11ec-bce3-dac502259ad0.png

Masking Ratio

对于掩码概率,经实验发现,在掩码概率为30%时,模型效果最优。

0b5df624-cbbd-11ec-bce3-dac502259ad0.png

Coefficient λ

针对两个损失之间的权重值,经实验发现,对比学习损失为RTD损失200倍时,模型效果最优。

0b710796-cbbd-11ec-bce3-dac502259ad0.png

总结

个人觉得这篇论文的主要思路还是通过加入其他任务,来增强句向量表征任务,整体来说挺好的。但是该方法如何使用到监督学习数据上,值得思考,欢迎留言讨论。

审核编辑 :李倩
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7314

    浏览量

    93983
  • 生成器
    +关注

    关注

    7

    文章

    322

    浏览量

    22505
  • 向量
    +关注

    关注

    0

    文章

    55

    浏览量

    11980

原文标题:DiffCSE:结合句子间差异的无监督句子嵌入对比学习方法

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【EMC标准分析】消费电子与汽车电子ESD测试标准差异对比

    【EMC标准分析】消费电子与汽车电子ESD测试标准差异对比
    的头像 发表于 09-09 17:32 807次阅读
    【EMC标准分析】消费电子与汽车电子ESD测试标准<b class='flag-5'>差异</b><b class='flag-5'>对比</b>

    【EMC标准分析】GB_T 18655最新2025版与2018版的标准差异对比

    【EMC标准分析】GB_T 18655最新2025版与2018版的标准差异对比
    的头像 发表于 08-14 17:45 7197次阅读
    【EMC标准分析】GB_T 18655最新2025版与2018版的标准<b class='flag-5'>差异</b><b class='flag-5'>对比</b>

    有铅VS铅:PCBA加工工艺的6大核心差异,工程师必看

    发现,许多客户对PCBA加工中有铅工艺与铅工艺的选择存在疑问。本文将结合行业标准与我们的生产经验,深入解析二者的核心差异。 PCBA加工有铅工艺与铅工艺的六大
    的头像 发表于 08-08 09:25 454次阅读

    ARM入门学习方法分享

    。 以下是一些入门学习方法的分享: 一、 理解基本概念:首先,了解ARM是什么以及它的基本概念是很重要的。ARM(Advanced RISC Machines)指的是一种精简指令集计算机(RISC
    发表于 07-23 10:21

    英语单词学习页面+单词朗读实现 -- 【1】页面实现 ##HarmonyOS SDK AI##

    ​先看一下页面效果 ​ 整体页面是一个比较简洁的页面,其中有两个特色功能 对于例句中,能够实现将当前的单词从句子中进行识别并突出显示 对于单词和句子,可以进行朗读,这个朗读使用的是Core
    发表于 06-29 23:24

    机器学习异常检测实战:用Isolation Forest快速构建标签异常检测系统

    本文转自:DeepHubIMBA监督异常检测作为机器学习领域的重要分支,专门用于在缺乏标记数据的环境中识别异常事件。本文深入探讨异常检测技术的理论基础与实践应用,通过IsolationForest
    的头像 发表于 06-24 11:40 1202次阅读
    机器<b class='flag-5'>学习</b>异常检测实战:用Isolation Forest快速构建<b class='flag-5'>无</b>标签异常检测系统

    第一章 W55MH32 高性能以太网单片机的学习方法概述

    本章介绍W55MH32的学习方法,建议先了解硬件资源,按基础篇、入门篇循序渐进学习。参考两份手册,提供例程资料,还给出官网、github 等学习资料查找渠道。让我们一起踏上W55MH32高性能以太网单片机的
    的头像 发表于 05-26 09:07 531次阅读
    第一章 W55MH32 高性能以太网单片机的<b class='flag-5'>学习方法</b>概述

    源晶振vs有源晶振:参数差异如何影响系统设计

    在电子系统设计中,晶振是至关重要的组件,为系统提供稳定的时钟信号。晶振主要分为源晶振和有源晶振两大类,它们在参数上存在明显差异,这些差异对系统设计有着不同的影响。本文将详细对比两者的
    的头像 发表于 05-22 16:14 840次阅读
    <b class='flag-5'>无</b>源晶振vs有源晶振:参数<b class='flag-5'>差异</b>如何影响系统设计

    使用MATLAB进行监督学习

    监督学习是一种根据未标注数据进行推断的机器学习方法监督学习旨在识别数据中隐藏的模式和关系,无需任何
    的头像 发表于 05-16 14:48 1178次阅读
    使用MATLAB进行<b class='flag-5'>无</b><b class='flag-5'>监督学习</b>

    嵌入式适合自学吗?

    学习者可能会因为缺乏专业的指导而走很多弯路。例如,在学习STM32时,可能会因为不了解正确的学习方法和顺序,而花费大量时间在一些不必要的内容上。 2)难以解决实际问题:在嵌入式开发中
    发表于 04-27 09:54

    18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现

    本来转自:DeepHubIMBA本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。为确保内容
    的头像 发表于 04-23 13:22 1311次阅读
    18个常用的强化<b class='flag-5'>学习</b>算法整理:从基础<b class='flag-5'>方法</b>到高级模型的理论技术与代码实现

    一种刷直流电机霍耳信号与定子绕组关系自学习方法

    的关系。提出了一种刷直流电机霍耳信号与定子绕组关系自学习方法,该方法通过不同的绕组通电组合将电机转子依次转到6个不同的位置并记录对应的霍耳信号,然后得出霍耳信号与定子绕组的对应关系。所提出的
    发表于 03-25 15:15

    DeepSeek与Kimi揭示o1秘密,思维链学习方法显成效

    据消息,OpenAI近日发布了一项重要研究报告。报告指出,DeepSeek和Kimi两家机构通过独立研究,成功利用思维链学习方法,在数学解题与编程挑战中显著提升了模型的综合表现。 Kimi的研究员
    的头像 发表于 02-18 15:13 691次阅读

    传统机器学习方法和应用指导

    用于开发生物学数据的机器学习方法。尽管深度学习(一般指神经网络算法)是一个强大的工具,目前也非常流行,但它的应用领域仍然有限。与深度学习相比,传统方法在给定问题上的开发和测试速度更快。
    的头像 发表于 12-30 09:16 1982次阅读
    传统机器<b class='flag-5'>学习方法</b>和应用指导

    嵌入式系统开发中的测试方法 嵌入式系统开发与AI结合应用

    嵌入式系统开发中的测试方法 嵌入式系统开发是一个复杂的过程,涉及到硬件和软件的紧密结合。测试是确保系统可靠性和性能的关键步骤。以下是一些常用的测试
    的头像 发表于 12-09 10:22 2039次阅读