介绍
NLP任务都存在着一个常见的问题:我的神经网络有没有学到某个性质? 所以我们需要构造出一种方法,来告诉我们模型是否真的学到了某些性质。
例如对于ELMo,我们想知道它是否学到了POS tag信息,所以我们需要设计一种探测任务(probe task)。
如上图所示,我们将句子输入到ELMo中,得到每个单词的上下文表示。然后用probe函数(一般是MLP或者linear)进行分类,得到每个单词的POS tag。
注意到这里的ELMo是不进行fine-tune的,也就是固定住不变的,模型参数只有probe参数。
但是我们能否说,POS tag效果好,那么ELMo学的就好呢?其实是不行的,因为有三点因素可能影响到最终的tag准确率:
- ELMo真的学到了POS tag信息。
- probe函数设计的比较复杂,可以很好的拟合出POS tag分布。
- POS tag任务的监督信息加的比较多。
所以本文主要研究了如下三个问题:
- 高的探测准确率是否意味着表示真的学到了某种性质?
- 探测方法对结果有着什么样的影响?
- 上面提到的三点影响因素对探测结论是否有影响?
下面我们一一关注这三个问题。
问题1
首先答案是否定的,探测任务上准确率越高,并不能代表着表示学到了你想要的性质。
还是用ELMo和POS tag举例子,上面这个模型用1000隐层维度的MLP作为probe函数,最终取得了97.3的高准确率。但是我们不能说EMLo能够很好的学到了POS tag信息,因为可能是MLP很好的拟合出了POS tag分布。
所以我们提出了控制任务(control task)的概念,也就是用同样的模型去预测一个随机任务。例如对于POS tag任务,PTB数据集里一共有45个tag,我们给每个单词重新随机分配一个tag,然后用探测模型预测句子的随机tag。这样其实有个小问题,就是消除了单词的一词多义问题,一个单词在所有语境下tag都是一样的了。
测试下来结果如上图所示。可以看到MLP和linear对POS tag结果基本没有影响,都非常的高。但是对control任务也就是随机tag影响很大,MLP并没有降低很多(92.8),但是linear降低了很多(71.2)。于是我们将这个差值叫做selectivity。如果selectivity越大,说明probe函数影响越小,可能不是probe函数拟合出来的结果。如果selectivity越小,说明不管是gold的label还是随机的label,准确率都很高,这就可能是probe函数拟合出来的结果了,而不是表示学出来的。
问题2
显然linear的学习能力明显不如MLP,那么不同的参数设置对最终结果是否有影响呢?
上图举了两个例子,分别是dropout和隐层维度对结果的影响。可以看出简单的正则化对selectivity影响不是很大,但是隐层维度影响特别大。
具体的参数影响如上图所示,最终选取了使得准确率比较高,selectivity相对大的参数配置。
问题3
答案也是肯定的。
比如上面这个例子,一般认为ELMo第1层POS tag效果是要好于第2层的,probe测试下来也是这样。但是可以发现,第2层的selectivity更大,说明其实第2层才更好的学到了POS tag信息。那为什么第1层效果更好呢?可能是因为它更靠近单词层,所以保留了更多单词的信息。这也说明了selectivity方法可能也不是完美的,可能通过聚类预测POS tag,第2层效果会更好。
结论
具体的实验细节和分析就不说了,大体就是这么个思想。这篇主要就是说明了,光靠准确率并不能说明一个encoder的表示学到了某种性质,而可能是模型拟合的结果。所以他们提出了control task,同时预测一个随机输出,如果准确率差距较大,则验证了表示学到了性质。当然这个方法还有一些问题,比如probe函数的挑选,还有文中依存句法分析的control task的设计是有瑕疵的。