©PaperWeekly 原创 · 作者 | 苏剑林

单位 | 追一科技

研究方向 | NLP、神经网络

大家知道,从 SimBERT [1] 到 SimBERTv2(RoFormer-Sim),我们算是为中文文本相似度任务建立了一个还算不错的基准模型。然而,SimBERT 和 RoFormer-Sim 本质上都只是“弱监督”模型,跟“无监督”类似,我们不能指望纯弱监督的模型能达到完美符合人的认知效果。所以,为了进一步提升 RoFormer-Sim 的效果,我们尝试了使用开源的一些标注数据来辅助训练。本文就来介绍我们的探索过程。

有的读者可能想:有监督有啥好讲的?不就是直接训练么?说是这么说,但其实并没有那么“显然易得”,还是有些“雷区”的,所以本文也算是一份简单的“扫雷指南”吧。

前情回顾

笔者发现,自从 SimBERT 发布后,读者问得最多的问题大概是:

为什么“我喜欢北京”跟“我不喜欢北京”相似度这么高?它们不是意思相反吗?

尤其是 RoFormer-Sim 发布之后,类似的问题几乎一两周就出现一次。此外,不止笔者自己的科学空间交流群,别的 NLP 相关的群也时不时冒出差不多的问题,说明类似的疑惑是普遍存在的。

那么,怎么理解这件事呢?

首先,“意思相反”这个认知是不对的,从相似的角度来看,只有“相似”、“不相似”的说法,并没有“相反”的说法,原则上来看,没有两个绝对毫无关联的句子,所以理论上没有哪两个句子的相似度为 0,更不用说没有明确定义的“相反”了。而恰恰相反,我们通常认为的“反义词”,从客观上来看,它们都算是比较相似的词,比如“喜欢”和“讨厌”,它们的共性多了去了:都是动词,都是描述情感倾向,用法也差不多,所以我们怎么能说这两个词“毫不相似”甚至“相反”?我们说它是反义词,是指它在某一个极小的维度下是对立关系,要注意,只是某个维度,不是全部,所以意味着我们这种认知本身是非客观的(这么多维度相似,只有一个维度不相似,我们就说它们是“反义词”,这还不是不客观?)。

同理,按照笔者的理解,从客观角度来看,“我喜欢北京”跟“我不喜欢北京”就是很相似的,所以模型给出的相似度高是很合理的,给出相似度低才是不合理的。当然,我不是说“我喜欢北京”跟“我不喜欢北京”在任何场景下都相似,它们确实是存在对立的维度,但问题是无监督、弱监督学习出来的都是比较客观的结果,而如果我们认为“我喜欢北京”跟“我不喜欢北京”不相似,那么就说明我们主观地挑出了我们要进行比较的维度,而不是客观的全部的维度。而既然是人的主观行为,我们不应该指望无监督、弱监督的方法能学出来,最好的办法就是标注数据来有监督学习。

所以,说白了就是:

模型没错,错的是人。如果人坚持自己没错,那就请通过标注数据有监督学习的方式来告诉模型它错了。

分门别类

通过上述讨论,我们应该就能理解标数据有监督的必要性了。不是所有问题都可以通过无监督、弱监督的方式解决,如果非要想无监督、弱监督的方案,其成本可能远远大于标几条数据。

至于相似度相关的中文人工标注数据,目前收集到的有三种类型:

  1. 是非类型:这种是比较常见的类型,主要格式是“(句子 1, 句子 2, 是否相似)”,这里收集到的 ATEC、BQ、LCQMC、PAWSX 都是这种类型;

  2. NLI类型:NLI 的全称是 Natrual Language Inference(自然语言推理),样本格式是“(句子 1, 句子 2, 蕴涵/中立/矛盾)”,可以视为更为精细一点的相似度数据集,当前可以找到的中文 NLI 数据集是英文版翻译过来的,链接位于 CNSD [2];

  3. 打分类型:这算是最精细的相似度语料,格式为“(句子1, 句子2, 相似程度)”,这个相似程度一般是比 0/1 更细颗粒度的等级,目前可以找到的中文数据集是STS-B [2],也是由对应的英文数据集翻译过来的。

由于量比较大的是前 2 种,所以为了处理上的方便,我们直接设置一个阈值,将第 3 种的 STS-B 数据转化为第 1 种情形,所以可利用的就两种数据格式:1)句子对的 2 分类;2)句子对的 3 分类。

出乎意料

文章开头写到,虽然是监督训练,但也不是那么“显然易得”,这主要是因为训练方式的选择有点出乎意料。简单起见,我们先以 2 分类的训练样本为例进行说明。

假设两个句子通过编码器后得到的句向量分别为 u,v,由于在检索阶段我们通常使用它们的余弦值 为相似度进行排序,所以很自然的想法就是基于 设计损失函数,一些比较容易想到的有:

其中 是该句子对的标签。上述几个 loss 的大致意思是让正样本对的 尽量大,让负样本对的 尽量小。

然而,在笔者的实验中,这样的训练和预测都一致训练方案,结果居然都不如出自 InferSent [3]、并且被 Sentence-BERT [4] 沿用的一种看起来是训练和预测不一致的方案。具体来说,Sentence-BERT 是将 u,v,|u-v|(其中 |u-v| 是指 u-v 的每个元素都取绝对值后构成的向量)拼接起来做为特征,后面接一个全连接层做 2 分类(如果是 NLI 数据集则是 3 分类)。

▲ 训练阶段的Sentence-BERT

▲ 预测阶段的Sentence-BERT

当然,这只是训练方案,使用的时候,还是把句向量拿出来,用余弦相似度做检索。这样看来,InferSent、Sentence-BERT 使用的这种方案,事实上属于训练和预测不一致的方案,训练的时候并没有直接涉及到 ,预测的时候却可以用 来检索,并且表现还相当不错,所以不能不说出人意料。

闭门造车

对此,笔者也是百思不得其解。笔者留意到,Sentence-BERT 的论文里,还比较了不同的特征拼合方式的最终效果,显示出 u,v,|u-v| 拼接的效果是最佳的,如果只保留它们的一部分,效果都将会明显下降,如下表。

▲ 不同拼接特征的实验结果

受到这个表格的启发,笔者“闭门造车”地构思了一种解释。首先,我们知道,人是非常“挑剔”的,尤其是对于相似度任务,我们通常是认为比较严格的相似才算是相似,但是我们的训练数据通常没那么精准。一方面,标注本身可能存在噪声;另一方面,对于某些样本对,标注人员可能由于它们主题(而不是语义)相同就标记为正样本对。也就是说,标注数据通常没有我们要求的那么严格,如果直接用标注结果来学习我们的排序度量,那么反而会带来意外的偏差。

回看 u,v,|u-v| 拼接然后接个全连接的做法,它的打分函数相当于:

这里的 是对应的参数向量。其中前两项打分为 ,如果它很大,并不能说明 u,v 很接近,同理如果它很小,也不能说明 u,v 差得很远,它的作用更像是一个“主题分类”模型,用于识别 u,v 的主题是否一致;而对于第三项,我们知道 ,所以第三项是有能力判断两个向量的近似程度的,它也许代表了真正的“语义相似”。

综合起来,我们就可以认为,u,v,|u-v| 拼接然后接个全连接的做法,它既包含了判断两个句子主题是否一致的打分,也包含了两个句子语义相似的打分,它将“主题”和“语义”分离开来,增强了模型对数据的容错性,从而使得最终学习出来的向量更能体现出较为纯粹、精准的“语义”。

鱼与熊掌

通过 Sentence-BERT 的方案,利用开源的相似度数据集,我们可以学习到一个效果还不错的句向量模型,也即检索模型,利用它抽取特征并且用余弦相似度作为度量可以得到不错的结果。但问题是,SimBERT、RoFormer-Sim 从来就不是单纯的检索模型,它希望“鱼与熊掌兼得”——既具备好的检索效果,又具备生成相似句的能力。

为此,我们通过上述方式训练好一个 Sentence-BERT 后,通过 SimBERTv2 来了!融合检索和生成的 RoFormer-Sim 模型介绍的方案,把 Sentence-BERT 的检索效果蒸馏到 RoFormer-Sim 上去,从而在保留相似句生成的基础上提高检索模型的效果。此外,同尺寸模型之间的蒸馏往往还能提升一点效果,所以我们蒸馏后的 RoFormer-Sim 的检索效果,其实还比直接训练得到的 Sentence-BERT 效果要好些。

效果演示

我们把用标注数据训练好的 RoFormer-Sim 开源如下(文件名带 -ft 的权重):

https://github.com/ZhuiyiTechnology/roformer-sim

下面是无监督语义相似度哪家强?我们做了个比较全面的评测中的几个任务的测试结果(测试集):

当然,经过了监督训练,有提升是必然的,这个表格的意义参考不大。但对于用户来说,有现成的模型可用就行了,管它是怎么来的对吧。读者可能更关心的是,这个新模型有没有解决之前检索模型的“痛点”,比如能不能拉开“我喜欢北京”跟“我不喜欢北京”的差距?下面就来看一些例子:

>>> similarity(u'今天天气不错', u'今天天气很好')
0.9769838
>>> similarity(u'今天天气不错', u'今天天气不好')
0.62359834
>>> similarity(u'我喜欢北京', u'我很喜欢北京')
0.9921096
>>> similarity(u'我喜欢北京', u'我不喜欢北京')
0.5291042
>>> similarity(u'电影不错', u'电影很好')
0.96764225
>>> similarity(u'电影不错', u'电影不好')
0.6312722
>>> similarity(u'红色的苹果', u'绿色的苹果')
0.6974633
>>> similarity(u'给我推荐一款红色的车', u'给我推荐一款黑色的车')
0.7191832
>>> similarity(u'给我推荐一款红色的车', u'推荐一辆红车')
0.9866457
>>> similarity(u'给我推荐一款红色的车', u'麻烦来一辆红车')
0.9460306

从例子可以看出,经过有监督训练后,模型确实能体现出更符合普通常规认知的相似度打分,比如加了“不”字后相似度明显降低,经过对比我们发现这部分效果主要由 NLI 数据集带来的;还有,对“红”、“黑”等颜色也会更加敏感,尤其是最后三个例子,体现出它的检索排序结果更符合我们常规的意图识别场景。

本文小结

本文介绍了我们利用标注数据增强 RoFormer-Sim 的过程,并开源了相应的训练好的模型,使得中文相似度模型有了一个效果更好的开源可用开源的 baseline。

参考文献

[1] https://kexue.fm/archives/7427

[2] https://github.com/pluto-junzeng/CNSD

[3] https://github.com/pluto-junzeng/CNSD

[4] https://arxiv.org/abs/1705.02364

[5]https://arxiv.org/abs/1908.10084

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

???? 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

???? 投稿通道:

• 投稿邮箱:hr@paperweekly.site

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

△长按添加PaperWeekly小编

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

用开源的人工标注数据来增强RoFormer-Sim相关推荐

  1. 新思路!商汤开源利用无标注数据大幅提高精度的人脸识别算法

    出处"来自微信公众号:我爱计算机视觉" 新思路!商汤开源利用无标注数据大幅提高精度的人脸识别算法 这篇论文解决的问题与现实中的人脸识别应用场景密切相关,其假设已经有了少量已经标注的 ...

  2. 史上最强GAN被谷歌超越!标注数据少用90%,造假效果却更逼真

    当前生成图像最逼真的BigGAN被超越了! 出手的,是谷歌大脑和苏黎世联邦理工学院.他们提出了新一代GAN:S³GAN. 它们生成的照片,都是真假难辨. 下面这两只蝴蝶,哪只更生动? 两张风景照片,哪 ...

  3. 基于主动学习算法减少人工标注量,提升文本标注效率的方案探究

    基于主动学习算法减少人工标注量,提升文本标注效率的方案探究 阅读 451 收藏 23 2018-06-26 原文链接:yq.aliyun.com OPPO技术开放日第三期,未来的探索 · AI& ...

  4. ChatGPT爆火出圈,高质量文本标注数据成关键

    "2022年11月30日,OpenAI发布了ChatGPT--一个对话式AI,上线仅五天,注册用户数突破100万,爆火出圈,成为社会热议话题.截止今年1月末,ChatGPT的月活用户数量破亿 ...

  5. 仅靠合成数据就能实现真实人脸分析!微软这项新研究告别人工标注

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 相信吗? ...

  6. 告别人工标注!仅靠合成数据就能实现真实人脸分析!

    来源:量子位 相信吗?现在训练数据也用合成的了. 而且人脸分析任务上,准确性还不输真实数据的那种. 这是微软团队的一项最新研究,论文标题就已经说明了一切. Fake it till you make ...

  7. 人工智能背后的“人工”: 数据标注时薪缩水一半,欠薪高发

    "我感觉兼职标注会越来越容易被替代掉."来自广东河源的27岁宝妈西梅(化名)对自己数据标注兼职有一种淡淡的悲观.从2018年兼职数据标注,西梅的收入已经大不如前. 生活在贵州百鸟河 ...

  8. 无需标注数据,利用辅助性旋转损失的自监督GANs,效果堪比现有最好方法

    作者 | Ting Chen 译者 | 王红成 出品 | AI科技大本营(ID:rgznai100) 本文作者提出了一种自检督方式的生成对抗网络,通过辅助性的旋转损失来达到目的.因为通常主流方法来生成 ...

  9. 无需标注数据、效果超强的保险领域FAQ问答系统来了!

    "全面赋能千行百业"是AI的重要使命,政务.法律.金融.医疗.制造等传统行业智能化程度越来越高,在效率.成本和收益方面蕴藏着巨大的开拓空间.其中,金融业,就正在AI技术的赋能下,发 ...

最新文章

  1. 题解 P4692 【[Ynoi2016]谁的梦】
  2. 默的各种写法图片_SEO标题写法?
  3. Oralce null
  4. [na]出口选路pbr小实验视频
  5. 全栈Python 必备库
  6. 查询指定范围内数据记录(适用于sqlserver2005以上)
  7. oracle数据库pfile文件,Oracle pfile/spfile参数文件详解
  8. 西南交通大学计算机网络,西南交通大学计算机网络实验2015-2016第2学期期末试卷...
  9. html根据菜单角色配置菜单代码,CSS设置列表样式和创建导航菜单实现代码
  10. php框架 mysql拼接操作_PHP对数据库MySQL的连接操作
  11. Solidworks工程图转CAD映射配置指南
  12. 人员基础信息一体化采集设备
  13. html微信怎么转发,微信朋友圈怎么转发别人的文章(链接、视频、图片、文字)
  14. 如果能站在巨人的肩膀上
  15. 计算机系统结构:指令的动态调度-Tomasulo算法
  16. python 山脊图_Python提取DEM数据的山脊线代码
  17. 网络安全工程师(渗透运维)难学吗?
  18. 怎么把word里面的彩色图转化为灰度图,直接在word里面操作,无需转其他软件,超简单!(位图和矢量图都可以)
  19. python实现DEAMON守护进程
  20. web安全防火墙介绍

热门文章

  1. 培训第二弹 全国大学生智能汽车竞赛百度竞速组预告
  2. “逃离”互联网:蚂蚁金服原副总裁离职,重返学术界
  3. python3协程 queue_使用gevent库+queue模块实现多协程爬虫,提高爬取效率!
  4. fastdfs 测试客户端_分布式文件服务 FastDFS (第一篇)
  5. python编程*三角形图形创意图片_python循环输出三角形图案的例子
  6. delphi Tpagecontrol 动态增加页面
  7. [源码和文档分享]基于C++实现的运动会统分系统
  8. 第一行代码:以太坊(1)-创建自己的私有区块链
  9. urllib基本使用-Handler和自定义的opener()
  10. 作品第四课----agruments应用一求出函数参数的总合