1. TextCNN[1]
$xi \in R^k
对于一个窗口大小为
1 个卷积核对
然后,文章对特征向量
上述的过程描述的是一个卷积核对
对于窗口大小为 3 的卷积核, 我们在一次卷积过后获得一个
同样的道理,窗口为 4 的卷积核所提取的特征为一个
最后我们将这三个向量拼接起来形成一个
2. 对 TextCNN 的分析 [3]
文章 [3] 对 CNN 用于文本分类时的超参进行分析,这些超参包括: 词向量的选择,Filter 的大小, 卷积核的数量, 激活函数的选择, Pooling 策略, 正则化方法。
Word Embedding
文章比较了三种情况: Word2vec, Glove, Word2vec + Glove, 而实际上,三者的性能相差无几, 具体的依旧要看任务数据集,并没有定论,因此在实际的开发中,分别采用不同的预训练词向量来帮助我们更好的选择。
Filter Size
不同的数据集有其适合的 Filter Size, 文章建议区域大小为 1-10 内进行线性搜索, 但如果数据集中的句子长度较大 (100+), 那么可以考虑设置较大的 Filter Size。
不同 size 的 Filter 进行结合会对结果产生影响,当把与最优 Filter size 相近的 Filter 结合时会提升效果,但如果与较远的 Filter 结合会损害性能。因此,文章建议最初采用一个 Filter , 调节 size 来找到最优的 Filter size, 然后探索最优 Filter size 的周围的各种 size 的组合。
卷积核数量
对于不同的数据集而言,卷积核的设置也有所不同,最好不要超过 600,超过 600 可能会导致过拟合, 推荐范围为 100-600。同时,卷积核数量增多,训练时间会变长,因此需要对训练效率做一个权衡。
激活函数
尽量多尝试激活函数, 实验表明,Relu, tanh 表现较佳。
Pooling 策略
实验分析得出, 1-max pooling 始终优于其他池化策略,这可能是因为在分类任务中,上下文的位置并不重要,且句子中的 n-granms 信息可能要比整个句子更具预测性。
正则化方法
实验表明,在输出层加上 L2 正则化并没有改善性能,dropout 是有用的,虽然作用不明显,这可能是因为参数量很少,难以过拟合的原因所致。文章建议不要轻易的去掉正则化项,可以将 dropout 设置为一个较小值 (0-0.5),推荐 0.5 , 对于 L2, 使用一个相对较大的约束。 当我们增加卷积核数量时,可能会导致过拟合,此时就要考虑添加适当的正则项了。
3. TextRNN
以双向 LSTM 或 GRU 来获取句子的信息表征, 以最后一时刻的 h 作为句子特征输入到 softmax 中进行预测, 很简单的模型,就不详细介绍了。
4. TextRCNN [4]
说实话,这篇论文写的真乱,一个很简单的思想,看起来比 Transformer 还复杂,真的是有点醉, 不推荐看原论文,写的真的很冗余。
文章的思想很简单:
- 首先,对于单词
, 获得其词向量表示 - 然后, 采用双向 GRU 来获取每个词的上下文向量表示
- 为了更好的表示词的信息,文章将原始词向量
, 上下文表示 结合起来,形成词的新的向量表示,这里作者采用一个全连接网络来聚合这些信息:
采用最大池化来获取句子的最终表示:
最后,采用一个 softmax 来做分类:
5. HAN [5]
问题定义
HAN 主要针对 document-level 的分类, 假定 document 中有 L 个句子:${s1, … s_L}
Word Encoder
对于一个句子
Word Attention
考虑到在每个句子中,各个词对句子信息的贡献不同,因此此处引入一个注意力机制来提取语义信息,更好的获得句子的表示。
Sentence Encoder
一个 document 中有 L 个句子,我们需要对这 L 个句子的信息进行整合,但很明显,句子之间的信息是由关联的,因此文章采用双向 GRU 对句子信息进行综合来获得每个句子新的表示:
Sentence Attention
考虑到在一个 document 中,各个句子的重要程度并不同,因此采用一个 Attention 来对句子信息进行整合最终形成 document 的最终信息:
Document Classification
DPCNN
最后
虽然文本分类是最简单的任务,但其在企业中应用最为广泛,十分适合初学者入门学习。
Reference
[1] TextCNN: Convolutional Neural Networks for Sentence Classification
[3] A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification
[4] Recurrent Convolutional Neural Network for Text Classification
[5] Hierarchical Attention Networks for Document Classification
[n] Large Scale Multi-label Text Classification With Deep Learning
Related Issues not found
Please contact @earyantLe to initialize the comment