任务详情
情感分类是NLP中非常常见的一个任务,它要求根据一段文字描述,判断它所表达的情绪,是正面的还是负面的,比如对影评情绪的分类,IMDB数据集正是如此,它包含2.5万个正面情绪的影评,2.5万个负面情绪的影评。下面将介绍几种不同的方法及结果对比。
方案对比
全连接神经网络
训练之前,对数据的预处理尤为关键,电影评论都是文字信息,必须对其进行转换。比如Token化数据,使用W2V替换成词向量等等。
文本的长度长短不一,需要对所有样本截取相同的长度,并对长度不够的做填充。对于神经网络,第一层需要做Embedding,Token后的数据不使用与训练,Embedding层训练得到的权重矩阵即为词向量。
不预加载权重
网络模型如下:
- Input 层
- Embedding 层
- 有32个神经元的全连接层
- 输出层
使用预加载权重
与上面模型不同,Embedding权重是词向量矩阵,可以使用预训练的词向量矩阵替换Embedding权重。当训练数据量较少时,Embedding网络训练得到的向量矩阵往往不太准确,使用预训练向量矩阵可能会好些。模型其他部分与上面模型一致。
- Input 层
- Embedding 层 (权重加载预训练的词向量矩阵)
- 有32个神经元的全连接层
- 输出层
RNN网络
RNN网络具有记忆功能,使用于处理时间序列的数据,但在传递过程中容易产生梯度消失问题。网络模型与上文类似:
- Input 层
- Embedding 层
- RNN层
- 输出层
LSTM网络
相比于RNN存在梯度消失的问题,LSTM增加了记忆门、遗忘门和输出门,可以很好的处理长程依赖,解决了梯度消失问题。模型如下:
- Input 层
- Embedding 层
- LSTM层
- 输出层
双向LSTM网络
单向LSTM网络中,当前时间存储的状态包含了前面序列的信息,但没有利用到之后序列的信息,双向LSTM网络解决了这一问题。模型如下:
- Input 层
- Embedding 层
- BiLSTM层
- 输出层
结果对比及结论
模型 | 参数量 | 准确率 | 训练时间(分钟) |
---|---|---|---|
NN | 130W | 0.8646 | 0.18 |
NN(加载词向量) | 130W | 0.6745 | 0.11 |
RNN | 50W | 0.8086 | 1.44 |
LSTM | 51W | 0.8502 | 5.69 |
BiLSTM | 52W | 0.8673 | 10.99 |
对比不同模型训练结果可以得出以下结论:
- 使用全连接神经网络效果最好,模型简单往往不容易过拟合
- 特定情况下,使用预训练的词向量不一定能达到最好效果,比如预训练词向量用于法律文档分类中效果然而不如不加载。
- RNN模型训练时间慢,准确率也不高,实际应用中也较少
- LSTM以及BiLSTM效果远好于RNN网络,与NN效果差不多,但是训练时间太长。
参考书籍
《Python深度学习》