NLP's Clever Hans Moment has Arrived

Date: 2019/10/12 Categories: Review Tags: NLP


原文来自The Gradient

博客首先提到了一些论文, 比如Probing Neural Network Comprehension of Natural Language Arguments, 关于Bert能够利用一些浅层的特征, 比如否定词连词, 而不是学习到语言和推理能力.

之后提到了ML历史上存在的一些Clever Hans例子, 比如识别图片中坦克, 但因为两类样本明暗的区别, 分类器实际识别的是明暗程度.

作者认为统计学习方法, 比如神经网络很容易利用浅层特征去在大多数(简单的)样本中判断正确, 但丧失了真实的泛化能力. 因此研究者应该对接近人类的表现持怀疑态度.

作者提到了一些分析模型的方法

  1. Probing, 在神经网络每一层的输出上训练单层分类器, 来指导此层学习到的表征是什么
  2. Adversarial dataset, 构建让模型判断错误的输入

作者提倡

  1. 在论文审核中, 更倾向于接受新数据集而不是新模型, 因为现在的每个任务一个标准数据集的做法容易导致overfit此数据集
  2. Dataset ablation: 类似于模型的ablation分析, 需要分析数据集的哪一部分真的起作用,几种方法包括:
    1. 只输入部分输入, 判断是否不需要完整的输入就可以解决
    2. 打乱输入顺序, 判断任务对输入的顺序是否敏感, BoW模型是否已经可以解决
    3. 给定随机label, 如果用随机label和训练label得到的模型得分类似, 表明模型没有学到任何东西
    4. 随机替换短语/词, 如果得到的模型效果没什么下降, 说明数据集中包含了简单的统计信息可以直接得到答案, 比如句子长度/用词分布等

新的数据集在使用前应该经过beta阶段, 使用者应该做以上这些ablation分析来确定数据集的正确性

问答例子: 在阅读理解模型中, 随机的在篇章后面加入句子导致答案变化, 可能说明了模型学到的是给定第一句中有某些关键词, 就直接提取最后一句作为答案

模型的创建者不应该只分析总的得分, 而是构建一些错误得到模型判断错误的原因, 类似软件测试中的fuzzing, 通过攻击用例找到代码的弱点, 一个例子是在得到模型分数后也提供一个在语义等价集合上保持分数的百分比