喜欢此内容的⼈还喜欢
在错误的数据上,刷到 SOTA ⼜有什么意义?
⽂ | Severus
编 | ⼩轶
⼩编注:前段时间,⼩屋介绍了吴恩达⽼师近期发起的以数据为中⼼的 AI 竞赛(参⻅
《吴恩达发起新型竞赛范式!模型固定,只调数据?!》)。吴恩达⽼师认为:⼯业界已
经具备较为成熟的算法和代码体系,现在更加缺少的是⼀套成熟的构建⼯业化数据集的⽅
法论。然⽽,正如图灵奖得主 Judea Pearl 教授所质疑的那样:“在不知道什么是质量更
好的数据的基础上提升数据质量是不太现实的”。对于这个问题,本⽂作者由关系抽取任
务说起,探讨了⼀些可能的答案——我们究竟需要怎样的数据?
前段时间,我的项⽬正在准备开源发布,补充项⽬在⼀些任务上的表现,以作为开源之后可以
宣传的点。我们项⽬的⼀⼤特点是⼗分擅⻓应对挖掘任务,因⽽我们⾃然也就想蹭波热度,在
某关系抽取评测任务上试了⼀下效果。
在此之前,我们的项⽬在⼀些其他挖掘任务上的表现⼀直是可以的,但是在那个关系抽取数据
上,我们就翻⻋了,⽆论是我们的 baseline 还是增强模型,都⽆法打出来差异化的分数。其
实简单来讲,就是:单纯使⽤标注⽅法,怎么样都⽆法提升了。
数据之殇
实际上,对于⼏乎所有的公开评测任务,我都会本能地怀疑它的数据是什么样⼦的,尤其在我
看到了榜单之后。例如细粒度实体识别任务 CLUENER。它的 baseline 评测在某些类别上,
连 BiLSTM+CRF 的结果都已经超过了⼈类(甚⾄可以说是远超)。当我看到了这个榜单,⾃
然就会本能地怀疑这个数据是有问题的。CLUENER 数据集暂且按下不表,我们继续说关系抽
取数据集。
对于让我的项⽬遭遇了滑铁卢的那个关系抽取数据集,它的主要的问题则是:⽆论我在模型上
做什么样的改变,效果的差异都是不稳定的(更换了随机种⼦之后,不同模型结构的rank也会
改变)。那我⾃然也要去看⼀看数据有什么问题了。
随机抽取了 train 和 dev 评估之后,果然印证了我的思想。在 train 和 dev 上,在单条数据
粒度上,分别存在 42% 和 37% 的数据错误,其错误包括关系错误、关系不全,以及句⼦中
不存在的关系被标注成了答案。⽽我⽆论怎么更换模型结构,⽅法也都是简简单单的标注算
法,就必然会存在标签上的冲突。对于模型来讲,尤其是“学习了⼀些知识”的预训练语⾔模型
来讲,⾃然就 confuse 了。
当然我也理解这种数据会出现,因为关系抽取数据在构造的时候,基本都是⽤已有的图谱
SPO 数据去反查⽂本,通常 S 和 O 在某⼀个句⼦⾥⾯共现了,就认为该句中存在这种关系
了。
注:SPO 指 <subject, predicate, object> 三元组,是知识图谱⽤于描述⼀条知识的基
本形式。
这种数据构造⽅法当然⼀定是有问题的。这个数据的质量⼀看也⾃然是未经review的。甚⾄
说,在学界,⼤家在打榜的绝⼤多数公开数据,可能都或多或少存在着不可忽视的噪⾳问题,
例如最近在⽐的某领域⽐赛的某⼀个数据之中,就存在这种东⻄。这让我不禁有了⼀个疑问:
当数据有不可忽视的噪⾳问题的时候,榜单上的⾼分导向的就是更好的模型吗?如果答案是否
定的,那这些⽐赛的意义在哪⾥呢?只是在消耗多余的算⼒,挤占业务的⽤卡时间吗?
▲节约⽤电,⼈⼈有责
我们需要什么样的数据
关系抽取数据中存在这样⼀个例⼦:
汪涵曾多次在天天向上中展示⾃⼰⾼超的厨艺。
这句话,数据中标出来的答案是 S:天天向上,P:主持⼈,O :汪涵 。乍⼀看好像没有问题。
但是我们仔细想⼀想:如果排除掉所有的背景知识,我们看这个句⼦会得到怎样的理解?是否
真能推断出“主持⼈”这⼀关系?
排除背景知识,只看句⼦本身:汪涵貌似是⼀个⼈,天天向上似乎是⼀个节⽬——汪涵可能参
加过天天向上。这个是我们通过中⽂的常识知识和句式知识能够推断出来的信息。
更进⼀步,即使我们给出⼀些特化信息,即“汪涵是著名主持⼈”,天天向上是综艺节⽬”。在带
有这样的先验下,我们⼜能推断出来什么信息呢?汪涵是⼀个主持⼈,但主持⼈参加综艺节⽬
未必就是主持综艺节⽬。⽐如主持⼈⻢东参加过脱⼝秀⼤会,但他只是嘉宾。所以,对于“汪
涵”和“天天向上”这两个个体,我们从这句话中还是只能推断出参加关系。
那模型怎样才能知道这个关系?看上去只有通过这个训练样本,让模型⾃⼰强⾏记住这个关系
了。(当然还有⼀种可能是:模型从别的句⼦⾥⾯学到了“汪涵主持天天向上”的知识,然后在
这个句⼦⾥⾯应⽤到了。但如果是这样,那这个训练样本的⽤处是什么呢?)
或许有的朋友会反驳说:在训练关系抽取任务的时候,就是想让模型去过拟合⼀些东⻄的。也
就是说,直接将汪涵和天天向上两个实体完全绑定起来,形成主持关系,这样在榜单上就可以
打⾼分了。然⽽,如果以这样的⽅式去拟合S和O的名字,就要保证测试集和真实使⽤场景中
⼀定会出现类似的情况。
如果过拟合这个句式⾥⾯出现的S和O⼀定是主持,⼀定会在其他场景中遇到问题。⽐如下⾯
这个例⼦:
张杰也多次在快乐⼤本营上表现了对谢娜的爱意。
这句话和“汪涵曾多次在天天向上中展示⾃⼰⾼超的厨艺”的句式⼗分相像。那张杰和快乐⼤本
营⼜是什么关系呢?实际上,数据中甚⾄可能会标注出张杰和谢娜的夫妻关系,以及谢娜是快
乐⼤本营的主持⼈。但这两条关系在这句话中都没有直接的体现。
我们再看CLUENER中的⼀个例⼦:
去年我们凭借《现代战争1》⼤获成功,其辉煌业绩让众多业界⽼⼿⼤跌眼镜。
其中,现代战争1被标注成为了游戏。
这个例⼦,我想我没有必要做过多的解释了。⼈没打过这游戏的,确实标不出来。同理,没了
解过赛博朋克2077的⼈,可能也不太会知道波兰蠢驴这个名字。
(实际上这个问题也有提到issue⾥⾯,但是权威⼤佬们也没有理会我......)
▲《现代战争1》是⼀款由 Infinity Ward 制作的⼀款热⻔射击类游戏
另外,还有在研究中⽂分词的时候经常会举的⼀个所谓疑难杂症般的例⼦:
南京市⻓江⼤桥
实际上,这句话两种切分⽅式都是合理的,都符合我们的常识认知,只不过可能有⼀个不是事
实。那么其实我认为,对于模型来讲,就不必过分纠结于这条数据会被切分成哪⼀个。
模型真正要去区分的,其实是下⾯两个句⼦:
1. 南京⻓江⼤桥位于南京市⿎楼区下关浦⼝区北之间
2. 南京市⻓江⼤桥因严重违纪违法问题被⽴案检查
举了那么多例⼦,其实是想说:我们在衡量⼀个数据好坏时,似乎应该遵循这样⼀个逻辑——
如果仅利⽤任务规则中允许我们⽤到的知识,⼈类能否有能⼒得到该样本中给出的答案?如果
能,则这条数据是⼀个好的数据;如果不能,则⼀定会对模型形成误导。所以在判定⼀条数据
的时候,我们应该去回顾这⼏乎本能做出判断背后的思考过程。如果我们不知道答案,通过思
考也得不到这个答案,为什么要让模型去得到这个答案呢?
我们在⽤数据和任务的形式去建模这个世界,并基于此去指导模型去学习。这⼀过程其实与我
们教育⼈类幼崽的⽅式、或者我们⾃⼰去理解新知识的⽅式,是类似的。毕竟,我们现在还不
具备凭空描述知识的能⼒,只能把⼈类⼀直在经历的学习过程加诸到模型身上。
在预训练的阶段,我们貌似让模型学到了部分语法知识,以及通过⼤量的事实知识让模型部分
学到了常识知识,但远远没做到让模型去记忆事实,实际上也记忆不过来,⼜怎么指望模型在
任务中直接就能搞定那些仅仅包含事实的判定呢?
题外话,由于我是做解析的,所以实际上我是没有那么⽀持领域预训练的。因为具体领域
和所谓通⽤域的区别,更多是在于专名(命名实体、术语等)的区别,但表达是相对固定
的。还是类⽐⼈类,哪怕⼀个⼈不是医⽣,他看到⾃⼰的病历的时候,除了可能看不懂疾
病、临床表现、药物,医疗程序等等的专业术语,也能⼤概能看懂这个病历的⼀些意思。
⽆论领域专业性多强,它也是“⼈话”。在做解析挖掘的时候,我们也应让模型着重去看懂
⼈话的部分,⽽不是依赖那些专业的部分。是否不需要让模型⻅过那些专业的东⻄,也能
做到效果不错?当然这个思路⽐单纯去做模型繁琐得多,产出也慢得多。
任务回归应⽤
回归到更本源的问题,关系抽取任务是为了做什么的?
其实最初关系抽取任务是为了辅助构造结构化知识。随着知识图谱越来越多,关系抽取模型已
然可以基于已有数据知道⼀些知识了。此时,我们的需求可能就变成了“通过新的事实描述⽂
本去挖掘补充新的知识”。更准确地说,我们希望:模型能够基于已有知识图谱中的信息,从
新的⽂本中挖掘出新的关系,从⽽与时俱进地补充和更新现有知识图谱。
当然这种“新的关系”不是类似于“爸爸的爸爸是爷爷”的关系。⼯业应⽤已经证明了,这种关系
写规则更⾹。需要补充的是真正的新关系,⽐如新婚,⽐如新参演电影,⽐如新主持节⽬等。
所以其实在定义任务的时候,应该询问这样⼏个问题:
这个任务想要导向什么样的模型?
这个任务做好了之后能⼲什么?
这个任务能不能做?
⽽不是直接拍脑⻔想出来了这么个任务,然后就随⼿弄⼀波数据发出来了。这样只会让学界与
⼯业界越来越剥离,只会让研究越来越没有⽤,只会让顶会做的这种种事情越来越变成消耗多
余的电⼒。
同时在数据上,也应该有上⾯所提到的思考。给出的数据,也应该符合实际会应⽤到的需求。
现在看来,部分领域任务或许能做到这个。
否则,最终也只会导向越来越⽆意义的卷。
所幸,或许,业界有去重新思考数据的趋势,例如Ng⽼师的新⽐赛。但,前路茫茫,不知这
束光,是否⻓久。
寻求报道、约稿、⽂案投放:
添加微信xixiaoyao-1,备注“商务合作”
后台回复关键词【⼊群】
加⼊卖萌屋NLP/IR/Rec与求职讨论群
后台回复关键词【顶会】
获取ACL、CIKM等各⼤顶会论⽂集!
若被制裁,中国AI会雪崩吗?
夕⼩瑶的卖萌屋
微信扫⼀扫
关注该公众号
Severus 2021-06-30 12:05
原创
夕⼩瑶的卖萌屋