A C-LSTM Neural Network for Text Classification
在处理即具有局部特征又具有时序特征的问题上, CNN与RNN结合往往能发挥更好的效果。在最近做的温度预测的项目上感觉也具有这样类似的特性,所以看了几篇C-RNN应用的论文,略作总结。
常见的文本分类模型包括 Fasttext, TextCNN, LSTM, Bi-LSTM (+Attention), 可以归为CNN和RNN两大类方法,这篇论文结合了两种方法的优势,通过CNN捕获局部短语特征,然后输入到LSTM获取句子整体的语义信息。
1. Introduction
- 传统模型: Bag-of-words; 容易导致维度灾难
- Composition based method: 基于词向量生成句向量;丢失word order信息
最新文本的分布式表示的两大类方法:
- sequence-based models, 考虑连续词之间的信息
- tree structured models,把每个词作为语法分析树的节点,从叶子到根的递归获得句子的表示
CNN: 提取N-grams特征,可以获得短距离和较长距离范围内的关系
RNN: 任意序列的长时依赖关系的捕捉
本文工作:结合了CNN和RNN的端到端模型,将一层CNN的输出作为LSMT的输入,CNN基于词向量提取higher-level的N-grams的表征,再用LSTM学习higher-level的序列信息。
实验:
- 情感分类
- 问题分类
- 结果表示比单独的LSTM和CNN好,并且LSTM可以从高级的表示学习长期依赖的信息。
2. Related Work
略
3. C-LSTM Model
3.1 N-gram Feature Extraction through Convolution
一维卷积Conv1D
常规卷积操作,看过TextCNN的应该都很清楚。
文中n个相同规格的滤波器产生n个同规格的feature map, 使用ReLU做激活,没有池化层,因为LSTM需要序列输入,而池化不连续的特征选择可能会破坏这样的序列性
3.2 LSTM
常规LSTM操作,将CNN的结果按照序列输入到LSTM中,略过
4. Learning C-LSTM for Text Classification
将LSTM的最后一个隐层输出作为文本表示,并添加softmax层,采用交叉熵作为损失函数进行模型训练,优化器为RMSprop
采用padding的方式在尾部补齐句子,word2vec作为预训练词向量
dropout和L2作为归一化手段
5. Experiment
略