人工智能A7论坛 >> Tensorflow和深度学习笔记_论坛版 >> 8.RNN在文本和图像中的应用

8.5 CNN、RNN融合用于文本分类

CNNRNN可以融合起来,用于文本向量的训练 。这部分有两个思路。

 

思路一:分别用了CNNRNN去训练文本向量,用普通的ANN分类


论文 Sequential Short-Text Classification with Recurrent and Convolutional Neural Networks》中,作者不是直接CNN或者RNN去做分类模型,而是使用了CNNRNN去训练了文本的向量,最后反而是使用普通的ANN作为分类器,这里就主要说一说作者的产生文本向量的过程 
首先看看CNN模型是如何产生文本向量的。 
对于长度为lsentence,每个单词都是m维的词向量,对于一个filter,其操作如下: 
 
上图是filtershape3*m,在卷积层,能够得到C1 C2 ... C(l-2),然后对这个进行max-pooling操作,最终得到一个数值
使用nfilter重复上面的操作,我们能够得到一个n维的向量s,这个就是我们得到的文本向量。 
然后看看RNN模型是如何产生文本向量的。 
文中作者使用的是RNN的变体LSTM,其结构如下: 
 
上面的x1-xl也是m维度的向量,而h1-hl是维度为n的一维向量,最后面的Pooling层代用的是max-pooling或者mean-pooling 得到文本向量之后就可以送入2层的ANN神经网络分类器里面去进行分类训练了,训练过程就不提及了

 

 

思路二:CNNRNN的混合分类模型 
论文(A C-LSTM Neural Network for Text Classification)提到了一种新的模型,也就是将CNNRNN混合使用作为文本的分类器,论文是2015年的,观点比较新鲜。 
模型如下: 
 
前面的卷积层和前面的文章提到的是一样的,也就是对于每个filter,从sentenceembedding矩阵进行卷积操作之后,得到feature map,然后重点来了,从feature map 层到window feature sequence层,把相同颜色的放在一个序列里面,然后依次排列下来,其实很好看到,在window feature sequence层的每个序列,其实和原始sentence的序列是对应的,保持了原有的相对顺序,只不过是中间进行了卷积的操作。

window feature sequence层的序列向量是下一层的LSTM的网络的输入input该模型最终的输出结果是LSTM层的最后一个隐层单元输出h ( last hidden unit of LSTM)然后就是训练LSTM的问题了。