谈谈对CNN在NLP中可行性的理解

谈谈对CNN在NLP中可行性的理解

谈到CNN,人们的直观感受还是其在图像处理领域取得的巨大成就,虽然近几年越来越多的论文使用到CNN与RNN的模型来探索卷积网络在自然语言处理中的应用,但始终还是无法取代CNN在图像中的地位,或是RNN之于NLP的地位。所以想谈谈自己对于CNN在NLP中可行性的一点个人理解。

CNN到底在干什么

提起CNN的作用,或者是原理,所有博客,教程等等,都会使用一个词:特征提取!那么,特征到底是个什么玩意儿?对于传统机器学习,无论分类还是拟合,都是靠着特征的组合进行学习与训练的,打个不太恰当的比方,就拟合而言,最终拟合出的曲线看作是各个特征的函数结果的话,那么特征就是各个自变量,而拟合的结果就是因变量。到这里还是比较好理解的,那么图像的特征是什么?语言文本的特征又是什么呢?一张照片摆在你面前,或者一段文字摆在书桌上,什么是他们的特征,又怎么去提取这些特征呢?

特征

先从我们人类的角度来理解下,当我们去看一幅图画,一张照片时,我们所关注的,其实是颜色的变化,或者线条的形状等等,如果有画商给你一张纯白的崭新的A4纸,告诉你这是毕加索的名画,你肯定不会相信,因为你什么画面都没有看到。也就是说,你什么特征都没有提取到!举个例子,最近非常火的一张图片:

谈谈对CNN在NLP中可行性的理解

如果图片变成这样,你依旧认得出来:
谈谈对CNN在NLP中可行性的理解

甚至变成这样,你还是认得出来:
谈谈对CNN在NLP中可行性的理解

虽然没有了那么多细节,但是只凭这些颜色线条,你就能知道这张图在代表什么。而这些让你能够认出图片本质的玩意儿,就是图像的特征。现在我们来说说计算机,众所周知的,计算机是处理数字的,无论是图片还是文字,终究逃不过一串数字表征。而通过对比图片相邻的像素点,计算机就能够对在它的世界里“看到”与我们相同的景象了。

对于NLP来说,人们靠什么去理解读懂一篇文章?用词,断句,标点等等,这些其实都可以看做是文本的特征,比如“这篇博客很有用。”和“这篇博客很有用!”,仅仅符号之差,意义就大不相同。或者说“这篇博客挺有用”和“这篇博客很有用”,一字之差,情感也有所差异。我们知道图像可以用 RGB 三色值来进行数字化的表示,文字也同样可以通过词向量等方式将文字利用数字组合进行特征表示。

提取

特征提取的方法不止CNN一种,我们也不能说CNN是最为可靠的一种,但是至少现在看来,CNN算是绝对高效的。为什么说他高效,就在于其卷积核共享权重值的方法。无论是图像还是文本,卷积核口每次都只关注于其中的一小部分特征,对于图像可能就只是一条边界线,对于文本可能就只是一个四字成语,但是将这些小特征重新的加权组合起来,就能够用一组全新的数据重新对原目标进行表示。解释下filter,作为一个电子信息工程专业出身,半道出家的码农来说,滤波器这个词实在是再熟悉不过。信号中的滤波器在做什么?扔掉没用的,只看有用的,细看有用的。对于一个混有多频的信号,我可以只看一个频段的部分,其余的无论多么复杂,都与我无关。对于我只关心的部分,我还可以进行相应的放大进行细看。从这个角度来看,就会对CNN的filter有一层更深的理解。

就好像上面的三幅画一样,CNN其实在做的是一种”虚化“的工作,将图像的边边角角虚化为寥寥几笔的简笔画,将繁杂的文字精简为大意,而这些保留下来的线条,词句,就是新的图像表示或者句子表示,能够作为下一步分类或者生成的基础。

CNN为什么可以用在NLP

上面已经说过,无论多么美丽的图画,无论多么华丽的辞藻,到了计算机那边,统统成为了无法直观理解的数字组合。如何使用尽量少的数字,同时又尽可能避免信息的丢失,这就是不同模型在尽力所做的事情。CNN希望使用权重共享的卷积核,捕捉重复性更强的特征信息,也就是说,它在找寻更为通用的特征。偷一张论文里的图片来说,

谈谈对CNN在NLP中可行性的理解

卷积核在句子中进行卷积,比如红色的来说,每次我只看两个词组合的效果,于是我得到了”wait for“,”for the”…”rent it”7中双词组合,从中我选取最有可能的那一个,即maxpooling的操作,不同的滤波器得到不同的结果最终进行加权组合,从而能够得到一个新的句子表示。从这个角度来看,这个过程就是N-Gram模型的思想!说白了,CNN就是在找相邻N个词的相关性,找出出现频率高的N元词。而这个N,就体现在卷积核的宽度。与RNN对比来看,RNN更侧重的是序列模型,也就是从头到尾读下来,没加入一个新的词汇,重新更新句子的表示。而CNN侧重于以小见大,在细节处做文章(文本的用词组合等等),最后将不同的小细节挑选完重新组合起来,进行完整句子的表示。

从这个角度上来看,CNN的思想与树结构模型有些相似。树结构自下而上,将语法树中同级的子节点进行整合,只不过它更多的还要参考语法结构,相较于CNN又多了一些需要考虑的部分。CNN这种卷积加池化的模式,使得特征的空间性消失,对于文本来说,特征的空间性就是对应的语序,当语序意义不再存在,CNN就像是把所有关键词,更确切的说是常用词提取出来,在通过训练出来的网络把这些常用词安排成整个句子,最终得到的就是新的句子表示向量。而这与我们所说的文本信息是相悖的,也就是为什么CNN在NLP中无法做到在图像中那种统治地位。