大数据文摘出品
来源:thegradient
编译:张睿毅、武帅、钱天培
一个军方训练的神经网络声称可以分类图像中的坦克,但实际上,它只是学会了识别不同的亮度,因为一种类型的坦克仅出现在明亮的图片中,而另一种类型仅出现在较暗的图片中。
一个游戏AI在学会了在第一关的最后故意死去,而不是在更难的第二关的开局死去,因为这样可以得到更高的分数。
AI通过某种让人啼笑皆非的奇怪方式尝试骗过人类,并达到自己的目的,这样的案例之前文摘菌总结过一大批。
模型通过学习“错误”的信息来解决任务的问题已经存在很长时间了,并被称之为“聪明汉斯效应(Clever Hans effect)”。
该效应说的是,一匹名为汉斯的马看似能完成一些简单的智力任务,但实际上只是依赖于人们给出的无意识线索。
“聪明汉斯效应(Clever Hans effect)”在图像检测领域早已有之,但最近,在一篇最新论文中,来自台湾国立成功大学的Niven和Kao指出,这一现象也正在NLP领域大受关注。脱去它的影响后,BERT也许没有我们想得那么神奇。
先附上论文链接,再一起看看这个论证过程:https://www.aclweb.org/anthology/P19-1459/
Niven和Kao采用了一个论证理解数据集。随机选择的准确率为50%;之前表现最好的模型的准确率为71%;然后他们选择了BERT,仅仅微调后,便达到了惊人的77%的准确率。
如此看来,BERT似乎确实名不虚传。
但是,作者对这一看似很成功的“微调”产生了怀疑,并尝试对此进行论证。
NLP迎来“聪明的汉斯”时刻
论证理解是一项相当困难的任务,需要世界知识和常识推理。虽然BERT毫无疑问是目前为止最好的语言模型之一,其迁移学习正是“NLP的Imagenet时刻”,但鲜有证据表明,语言模型已经习得高级自然语言理解这一技能。
给定一个论点和一个原因,我们需要找出使得该推理成立的论据。
举个例子,假设论点是“谷歌不存在垄断”,原因是“人们可以选择不使用谷歌”。这一推理成立背后需要一个论据,即“其他搜索引擎并没有导向谷歌”。但是如果说“其他搜索引擎都导向了谷歌”,那么论点就不能成立了。
作者也对BERT模型进行了三项分析。
首先,他们在可能的答案(即论点)中计算了一元文法(unigrams)和二元文法(bigrams),并观察到像not,is,or之类的单个一元文法相较于随机概率而言,能够更好地预测出正确的论点。这表明这些线索是有用的,并且也可能为模型所利用。
接着,为了检查模型是否确实利用了这些线索,作者只给模型提供了部分输入,这使得模型不可能推出正确答案。例如,如果没有给出论点或原因,就不可能推断出“其他搜索引擎没有重定向到谷歌”或“其他搜索引擎全都重定向到了谷歌”这两个论据哪一个是正确的。然而,模型并不理会这一不可能性,并以71%的准确率识别出了正确的论点。
在试验完其他两项类似的任务之后(仅论点和论据;仅原因和论据),作者总结到,数据集中包含着统计线索,而BERT的良好表现完全归功于对这些线索的利用。
为了说明这一点,在他们的第三个实验中,作者构建了一个数据集,其中的线索不再提供信息,发现BERT性能下降到随机概率水平。
相信大多数人会同意,一个基于大量的如not,is,do之类的一元文法做出预测的模型是不可能真正理解论证的。
因而,作者声明他们的SOTA结果毫无意义。
这让人联想到最近两个臭名昭著的案例。一个是图像分类器,声称能够区分罪犯的面孔和守法公民的面孔,但实际上只是在检测微笑;另一个是所谓的“性取向检测器”,实则是在检测眼镜,胡须和眼影。
如果NLP跟随计算机视觉的脚步,似乎也注定要重蹈它的覆辙。
回到论文中,作者指出,最近大量的工作显示NLP数据集中的“聪明汉斯效应”。
要明确的是,这也不是说像BERT这样的大型模型或深度学习都是无用的。但是,对于深度学习模型在高级自然语言理解任务中表现出的近乎人类表现的报告,我们应该持怀疑态度。
模型表现超好?别急着开心,试试能不能骗过它!
发现聪明汉斯效应案例的论文越来越多,这为NLP研究提出了重要的新议题。最明显的一个议题就是,如何预防这种影响。
当数据集中的模式与手头任务的目标一致时,那么能够识别、记住并概括这些模式的模型就是可取的。 如果不是的话,那模型就很可能在不理解任务的情况下依然表现良好。
为了防止聪明汉斯效应,我们需要更好的数据集,并且对模型进行严格的鲁棒性分析。
提出一个模型、并对其进行改进可以让你在开发过程中获得即时的满足感。此外,在公共数据集上的SOTA也可以确保论文被接收。
然而,创建数据集所获得的的满足感更加滞后且不确定。据说,ACL会议评审人员对提出获取SOTA的新模型的论文的默认立场是“接受”,而引入新数据集的论文则很可能因为“本文只引入新数据集”而拒绝。他们认为,创建数据集的人没有做真正的科学研究。
移除模型的一部分(ablation)并观察其对性能的影响是验证某部件是否有用的常用方法。 如果性能没有下降,那么该部件就是无用的,应该被消除。
这也应该成为执行数据集消除任务的常见做法,例如:
- 仅提供不完整的输入(如前文所述):这将验证是否需要完整输。如果不需要,则说明数据集包含着一些可以采取捷径的线索。
- 打乱输入:这可以验证单词(或句子)顺序的重要性。 如果分数没有太大变化,那说明模型并没有理解输入的顺序信息。
- 分配随机标签:如果10%的实例被随机重新标记,性能会下降多少呢?所有实例重新标记呢?如果分数没有太大变化,那么模型可能没有学到任何有趣的东西。
- 随机替换内容词:如果所有名词短语或动词短语都被随机名词短语和动词替换,性能会下降多少?如果不多,则数据集可能提供了预料之外的非内容提示,例如句子长度或功能词的分布。
再举个例子。如果在输入中添加一个不相关的句子会导致问答模型给出不同的答案(见下图),就说明该模型并不能真正理解问题。
除了创建更好的数据集外,模型的创建者也应该有“建造它,破坏它”(Build It,Break It)的心态。模型不仅要在特定数据集上获得高分,也要有足够的鲁棒性。
如果你的模型表现优良,先别急着开心!尝试改变你的输入,看看你是否能能够骗过你的模型。
如果你挖空心思也无法骗过你的模型,大概这时你才创造出了一个真正的好模型!
相关报道:
https://thegradient.pub/nlps-clever-hans-moment-has-arrived/?nsukey=zGUM%2BitIg2PGgczL9OmBgiXDHkdeWy4hJYQG33fkllynu9PqhCkmZecP%2Bjrltr7xEB14BaM3FGFlyRWfJj9geFWr9cIsH%2FXosh%2B1kWc8%2BYCti2mUogfGmD8YTXENuU9X2slPjqbQOkYURwZHDx%2FnRv68UyeFpeWbEu6YIyOjk2eonxejiqu8sWZT%2B8FWxdUSAEOqQ%2Bwr6iGpCV8y3AgrAA%3D%3D
【本文是51CTO专栏机构大数据文摘的原创译文,微信公众号“大数据文摘( id: BigDataDigest)”】