TextCNN
什么是卷积
如上图所示,这其实是一个动图,黄色的3*3的方格在不断滑动,其就是一个图像过滤器的图示,但是这个是针对于图像的。如果说对文本进行过滤器处理的话,过滤器是不能横向滑动的,因为你不能把一个字或者说一个单词从中间分开来进行训练。图像可以一个图像经过处理之后你应该还会认识这个图片,但是当文字从中间分开之后,相当于单词的一半或者说是一个偏旁,这个时候你有可能就不会理解这个文字想要表达什么意思了。
以下是博客作业给出的一个图像滤波器处理的一个例子。是使用其相邻值对每个像素求平均值,这样会得到一个模糊的图像。方格中为1的就乘以1,为0的就乘以0,这样可以将5*5的像素合并为一个像素值,得出一个较为模糊的图像。
经过滤波器处理之后你是完全可以知道这个图片代表什么的,不同的一点就是模糊了一点而已。
下面介绍一个利用卷积检测边缘的例子,图示如下所示,其计算和上面那个计算方法是一样的,其思想是取像素及其邻居之间的差异来检测边缘。
什么是卷积神经网络(CNN)
CNN基本上只是几层卷积,其中非线性激活函数 如ReLU或tanh应用于结果。在传统的前馈神经网络中,我们将每个输入神经元连接到下一层中的每个输出神经元。这也称为完全连接层或仿射层。在CNN中我们不这样做。相反,我们在输入层上使用卷积(这个在上面讲到过)来计算输出。这导致局部连接,其中输入的每个区域连接到输出中的神经元。 每一层都应用不同的过滤器,通常是数百或数千,如上所示,并结合其结果。还有一些叫做池(子采样)层的东西。在训练阶段,CNN会根据您要执行的任务自动学习其过滤器的值。例如,在图像分类中,CNN可以学习从第一层中的原始像素检测边缘,然后使用边缘检测第二层中的简单形状,然后使用这些形状来阻止更高级别的特征,例如面部形状在较高层。最后一层是使用这些高级功能的分类器。
这个计算有两个方面值得关注:位置不变性和组合性。假设您想要对图像中是否有大象进行分类。因为你在整个图像上滑动你的过滤器,你真的不关心那里的大象发生。实际上,池化还可以为您提供平移,旋转和缩放的不变性。第二个关键方面是(本地)组合性。每个过滤器组成将较低级别功能的本地补丁转换为更高级别的表示。这就是CNN在计算机视觉领域如此强大的原因。直观地说,您可以从像素,边缘形状和形状中更复杂的对象构建边缘。
TextCNN简介
是CNN的一种变形,CNN(2011)主要运用于图片分类,而TextCNN主要用于文本分类(2014),其对于字的表示方式为:使用一个k维向量来表示在句子中的词。
代替图像像素,大多数NLP任务的输入是表示为矩阵的句子或文档。矩阵的每一行对应一个标记,通常是一个单词,但它可以是一个字符。也就是说,每行是表示单词的向量。通常,这些向量是word嵌入 (低维表示),如word2vec或GloVe,但它们也可以是将单词索引为词汇表的单热向量。对于使用100维嵌入的10个单词的句子,我们将使用10×100矩阵作为输入。这是我们的“形象”。
这里对上面那段话做一些解释,在文本输入之前,要先根据这些句子中包含的字做一个词典,每个词对应一个序号,假如一个句子有十个单词,那么就将这些单词转换为数字,作为矩阵数据到CNN中,这就类似于图片CNN处理,因为图片本来就是有一个个像素值组成的,输入到CNN中的本来就是像素值,处理图像也比处理文本更加的方便一些。
在视觉中,我们的滤镜会滑过图像的局部色块,但在NLP中,我们通常使用在矩阵的整行上滑动的滤镜(单词)。因此,我们的滤波器的“宽度”通常与输入矩阵的宽度相同。高度或区域大小可以变化,但是通常一次滑动超过2-5个单词的窗口。将上述所有内容放在一起,NLP的卷积神经网络可能看起来像这样
在之前什么是卷积的介绍中的第一张图片我们可以看到,过滤器是上下左右滑动的,从而来提取特征值,最终获得特征矩阵,但是文本的话稍有不同,他不能左右滑动,只能上下滑动,原因很简单,不能将一个单词分开来进行训练,如果非要这样的话,卷积之后获得的数据将会没有什么意义,所以过滤器在进行文本处理的时候只能上下滑动,下面来看一下这个图片。
用于句子分类的卷积神经网络(CNN)架构的例证。这里我们描述了三个滤波器区域大小:2,3和4,每个都有2个滤波器。每个滤波器对句子矩阵执行卷积并生成(可变长度)特征映射。然后在每个地图上执行1最大合并,即,记录来自每个特征地图的最大数量。因此,从所有六个图生成单变量特征向量,并且这六个特征被连接以形成倒数第二层的特征向量。最后的softmax图层然后接收该特征向量作为输入并使用它来对句子进行分类; 这里我们假设二元分类,因此描述了两种可能的输出状态。
过滤器生成的特征向量是由上下滑动产生的,具体的过程可以参照下面这张图片。
参考