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

©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,由于在检索阶段我们通常使用它们的余弦值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
multi-sdr-gps-sim是一个开源项目,它提供了一种使用软件定义无线电(SDR)来模拟GPS信号的方法。该项目可以模拟多个卫星发射多个GPS信号,允许用户测试GPS接收器的性能。 下面是multi-sdr-gps-sim项目的用法介绍: 1. 硬件要求 首先,你需要一台装有SDR设备的计算机。SDR设备可以是USRP、HackRF或LimeSDR等。此外,你还需要一个GPS天线,用于接收GPS信号。 2. 安装依赖项 在安装multi-sdr-gps-sim之前,你需要安装一些依赖项,包括Python 2.7、numpy、scipy、matplotlib、pyproj和rtlsdr。 3. 下载multi-sdr-gps-sim 你可以从multi-sdr-gps-sim的GitHub仓库下载该项目的源代码。 4. 配置multi-sdr-gps-sim 在使用multi-sdr-gps-sim之前,你需要配置一些参数,包括GPS信号的频率、码和数据速率,SDR设备的采样率和天线的位置等。你可以通过修改配置文件来完成这些配置。 5. 运行multi-sdr-gps-sim 在配置好multi-sdr-gps-sim之后,你可以运行该程序来模拟GPS信号。你可以使用以下命令运行multi-sdr-gps-sim: ``` python multi_sdr_gps_sim.py config_file.ini ``` 其中,`config_file.ini`是你的配置文件的文件名。 6. 测试GPS接收器 在成功模拟GPS信号后,你可以使用GPS接收器来测试其性能。你可以将SDR设备和天线连接到GPS接收器上,然后打开GPS接收器以接收模拟的GPS信号。 总的来说,multi-sdr-gps-sim是一个非常有用的工具,可以帮助用户测试GPS接收器的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值