textRNN&textCNN&textRCNN


textRNN

一般取前向/反向LSTM在最后一个时间步长上隐藏状态,然后进行拼接,在经过一个softmax层(输出层使用softmax激活函数)进行一个多分类;或者取前向/反向LSTM在每一个时间步长上的隐藏状态,对每一个时间步长上的两个隐藏状态进行拼接,然后对所有时间步长上拼接后的隐藏状态取均值,再经过一个softmax层(输出层使用softmax激活函数)进行一个多分类(2分类的话使用sigmoid激活函数)。

textCNN

TextCNN中采用的是一维卷积,每个卷积核的大小为h×k">h×kh×k(h为卷积核的窗口大小,k为词向量的维度),文中采用了多种不同尺寸的卷积核,用以提取不同文本长度的特征(上图种可以看见,卷积核有h=2, 3, 4三种)。然后,作者对于卷积核的输出进行MaxPooling,目的是提取最重要的特征。将所有卷积核的输出通过MaxPooling之后拼接形成一个新向量,再将该向量输出到全连接层分类器(Dropout + Linear + Softmax)实现文本分类。

TextRCNN

该模型的主要思想如下:

  • 首先获得词向量表示e(wi)">e(wi)e(wi)
  • 其次将词向量通过双向RNN(实践中可以是LSTM或GRU)得到cl(wi)">cl(wi)cl(wi)和cr(wi)">cr(wi)cr(wi)
  • cl(wi)">cl(wi)cl(wi), e(wi)">e(wi)e(wi)以及cr(wi)">cr(wi)cr(wi)拼接得到新的向量,将其输入到全连接网络对其进行整合,激活函数为tanh
  • 再将全连接网络的输出进行MaxPooling
  • 最后将其输入一个全连接分类器中实现分类

FastText

FastText是Facebook于2016年发布的文本分类模型,其主要思想基于word2vec中的skip-gram模型(关于skip-gram模型参考我之前词向量的博客,这里也就不再赘述),在训练文本分类模型的同时,也将训练出字符级n-gram词向量。对比skip-gram模型,可以FastText的词典规模会更大,模型参数会更多。但每一个词的词向量都是子词向量的和,使得一些生僻词或未出现的单词能够从形态相近的单词中得到较好的词向量表示,从而在一定程度上能够解决OOV问题

相关