其他分享
首页 > 其他分享> > 如何理解NLP中的图像?一文知悉TextCNN文本分类

如何理解NLP中的图像?一文知悉TextCNN文本分类

作者:互联网

关注微信公众号:NLP分享汇。【喜欢的扫波关注,每天都在更新自己之前的积累】

文章链接:https://mp.weixin.qq.com/s/h_ezSv94ixC0oQQk2Ek9PA


什么是深度神经网络?

深度神经网络被大多数较优模型所青睐。「深」实际上就是「多层」,通过堆叠前馈层(feed-forward layers)抽取特征。前馈层被定义为:y = σ(Wx + b),σ是激活函数,W和b都是可训练参数。前馈层由于激活功能而功能强大,从而使原本为线性的操作变为非线性。然而,在使用前馈层时存在一些问题:首先,前馈层或多层神经网络的操作仅是模板匹配,而没有考虑数据的特定结构。此外,传统多层神经网络的完全连接机制导致参数数量激增,从而导致泛化问题。

 

卷积神经网络

上图所示CNNs通常包含卷积层(convolutional layers)、池化层(pooling layers)和前馈层(feed-forward layers)。卷基层应用卷积核去执行卷积操作,如公式1所示:

m和n分别为结果矩阵的行和列、f表示输入矩阵、h表示卷积核。池化层对卷积层的结果执行下采样(down-sampling)以获得更高级别的特征,而前馈层将它们映射到概率分布中以预测类分数。滑动窗口(sliding window)特征使卷积层能够捕获局部特征,而池化层可以产生分层特征。这两种机制使CNN具有本地感知能力和全局感知能力,从而有助于捕获数据的某些特定内部结构。参数共享机制减轻了参数爆炸问题和过拟合问题,因为可训练参数的减少导致模型复杂度降低,从而提高了泛化能力。

 

自然语言处理中的卷积神经网络:TextCNN

下图即为TextCNN的模型结构图:

如何理解NLP中的“图像”?

NLP面对的常常是一个被表达为矩阵的文档或句子。常常每一行表达一个特征或句子,即每一行是一个单词所代表的向量。通常会使用词嵌入(word-embeddings)的方法,例如Word2vec或GloVe。也可以使用one-hot的方法,该方法是标注了单词在词典中的位置。如果一个文本中有10单词,每个单词用100维向量表示,利用上述方法会生成10X100的向量。这就是在NLP中的“图像”。

在机器视觉上,我们的卷积核会在图像的局部区域上滑动,但是在NLP中,我们通常使用的过滤器会滑过整个矩阵(单词)。因此,过滤器的“宽度(width)”通常与输入矩阵的宽度相同。高度,或区域大小(region size),可能会有所不同,但是滑动窗口一次在2-5个字是典型的。

上图展示了CNN在文本分类的使用,使用了2种过滤器(卷积核),每个过滤器有3种高度(区域大小),即有6种卷积结构(左起第2列),所以会产生6种卷积后的结果(左起第3列),经过最大池化层(后面还会提到池化层),每个卷积的结果将变为1个值(左起第4列),最终生成一个向量(左起第5列),最终经过分类器得到一个二分类结果(最后一列)。

卷积神经网络另一个突出的特征就是池化层,它经常被放在卷积层之后,池化层是对上一层卷积层的子采样,例如采集池化层过滤器覆盖区域下最大的值——称为最大池化。不必对整个矩阵进行池化,也可以通过窗口进行滑动。NLP中经典的做法是将池化层应用于整个卷积输出的结果,最终就直接得到一个数字——即这个尺寸下此句子的特征,如上面的例子。

 

我们为什么要用池化层呢?

卷积神经网络中的通道(Channels)

通道就是从不同“角度”看待你的输入,在图像里面,RGB格式的图像就有3个通道(红,绿,蓝)。同样的,NLP中也有不同的通道,例如可以把通道分为不同的词嵌入方法(word2vec,GloVe等),不同语种的表达,或者同一个意思不同方式的表达。


为什么是一维卷积?

标签:NLP,池化层,知悉,卷积,矩阵,前馈,TextCNN,神经网络
来源: https://blog.csdn.net/u014577702/article/details/117002768