本文发布在arxiv 2018。
卷积神经网络已成功应用于各种NLP任务。然而,CNN是否对不同的语言模式进行不同建模(如否定,语气强度和复合句子)以帮助决策并不清楚。在本文中,通过应用可视化技术来观察模型如何捕获不同的语言特征以及这些特征如何影响模型的性能。文章还尝试识别模型错误及其来源。先前的研究主要采用saliency scores,saliency heat maps 方式进行可视化,这种方式通过计算saliency scores相对于词嵌入的一阶导数来衡量tokens对最终决策的贡献程度,但由于saliency scores是在所有特征图的基础上计算得到,这种方法不能得到如步长、卷积核大小之类的参数对模型的影响。本文提出一种简单的方法:利用过滤器对词嵌入应用卷积生成的特征映射,单词和短语由其在不同特征图图中的卷积值表示,为了用单个向量表示短语或句子,使用特征映图中的最大卷积值来代替。如下图:
文章中对saliency score和convolution values方法进行了比较,可以看出效果差不多,每个单词在CNN中不同filter中关注的程度近似相同,但本文的方法比较简单。
'
文章中还对不同的网络参数进行了可视化:
用单卷积层,卷积核大小为1,步长100的CNN在 Stanford Sentiment Treebank (STT),The Subjectivity Dataset进行了以下几个维度的可视化分析:
1.Dominant Groups of Tokens
对于情感分析人物,副词和形容词对最终决策影响最大,在具体主客观人物中,代词影响最大。
2.Contrast and Negation
可视化中可以看到正反语句的权重有明显不同
3.Intensity
语气强弱程度的不同可视化结果。
4.Compositionality
最有趣的是最后一部分的错误分析,从CNN错分的语句中总结出错分的特点,用于指导CNN的改进。
从错分的原因中看,最大的错误来源于隐喻,人能正确识别,但CNN无法正常识别,才说明CNN做NLP对词义的理解比较表层。其次就是 CNN捕捉句子中长时间依赖的为题,增加kernel Size能改善CNN性能,但是大的卷积核也会导致模型失效。第三种错误就一词多义导致的错误,CNN还很难对一词多以 进行理解。第四大类的错误原因就是token不平衡导致。总体说来,CNN工作只是做比较浅层的语义分析,还不能想人一样深入语句内部提取词义,这些都是CNN用于NLP领域值得探究的地方。