当我们听到卷积神经网络的时候,我们讨论的都是计算机视觉(CV),对于图像,一般都有如下的假设:图像的某个点的像素值与其周围的值相似,也就是说图像具有光滑性。
如果将句子转换成像图像那样的“像素矩阵”,那同样的就可以在sentence上做卷积操作了。
CNN for CV
当我们听到卷积神经网络的时候,我们讨论的都是计算机视觉(CV),对于图像,一般都有如下的假设:图像的某个点的像素值与其周围的值相似,也就是说图像具有光滑性。图像上的卷积操作是如何做的呢?对于二维卷积,如下图,左边表示一幅图像,右边表示一个filter,在左边图像构造一个与fiter同样大小的窗口,对应元素相乘相加得到的值为feature,然后滑动窗口的位置同样的计算方式计算所有的值。
Source: http://deeplearning.stanford.edu/wiki/index.php/Feature_extraction_using_convolution
到目前为止已经有很多通过卷积神经网络来解决图像问题的模型,最早提出CNN的是LeCun.1989-1998,LeNet。
然后就是解决ImageNet问题的AlexNet模型,还有后来的Google的GoogleNet模型等。
CNN for NLP
如果将句子转换成像图像那样的“像素矩阵”,那同样的就可以在sentence上做卷积操作了。假设每一行向量表示一个词的word embedding(词的低纬向量表示),比如word2vec,GloVe和one-hot向量。
假设10个单词的句子,每个词向量的长度是100维,那么输入的句子矩阵的大小就是10x100,可以把它称之为句子“图像”。
得到sentence矩阵之后,类似于CNN在图像上的卷积,同样在sentence矩阵上做卷积。如下图:
在训练CNN时要求所有图像数据维度都相同,如果不同可以通过图像的reshape操作达到相同大小的图片。然后句子的不可能通过reshape的方式增加或减小长度,所以这里的办法是选定一个合适的长度,短句补0,长句子剪掉后面的单词。
有了这些操作,CNN合理的应用在文本上,本文的介绍的模型是分类,其实其他模型也是可以的。