CNN

CNN Basic Model

卷积层

  • 由不同窗口大小的 Filter 构成
  • Filter 个数由自己决定,超参数。
  • 同一个 Filter 参数共享,极大减少了参数个数。
  • 因为参数共享,所以一个 Filter 只能识别同一类特征。一个 Filter 就是一类特征识别器。窗口大小其实就是识别 n-gram 信息。

池化层

  • 一般都是对每个 Filter 向量取 Max 值。这个特征跟出现位置无关,不论出现在哪里,都取最强那个。
  • 有多少个 Filter 就决定了池化层的维度;变长的输入变成定长。无论输入有多长,这里都统一了维度。

输入层改进

扩充输入层维度,引入新特征

  • word embedding matrix
  • position embedding matrix
  • BIO entity type embedding matrix
    其他模型输出作为 CNN 输入,引入新特征
  • RNN 输出作为 CNN 输入。

CNN 模型常见的 Pooling

Max Pooling Over Time

值最大代表只保留这些特征中最强的,而抛弃其它弱的此类特征。
优点:

  • MaxPooling 能减少模型参数数量,有利于减少模型过拟合问题。
  • 对于NLP任务来说,Max Pooling 有个好处:可以把变长的输入X整理成固定长度的输入。
    缺点:
  • Max Pooling 基本抛弃位置信息。但在 NLP 的应用场合中,特征出现的位置信息是很重要的(比如主语出现位置一般在句子头,宾语一般出现在句子尾等等,这些位置信息对于分类任务来说还是很重要的)。
  • 有时候有些强特征会出现多次,Pooling 只保留一个最大值,所以即使某个特征出现多次,现在也只能看到一次,就是说同一特征的强度信息丢失了。

K-Max Pooling

K-Max Pooling可以取所有特征值中得分在 Top–K 的值,并保留这些特征值原始的先后顺序。

  • K-Max Pooling可以表达同一类特征出现多次的情形,即可以表达某类特征的强度;
  • Top K 特征值的相对顺序得以保留,所以应该说其保留了部分位置信息,但是这种位置信息只是特征间的相对顺序,而非绝对位置信息。

Chunk-Max Pooling

把某个Filter对应的Convolution层的所有特征向量进行分段,切割成若干段后,在每个分段里面各自取得一个最大特征值。

  • Chunk-Max Pooling 保留了多个局部Max特征值的相对顺序信息,尽管并没有保留绝对位置信息,但是因为是先划分Chunk再分别取Max值的,所以保留了比较粗粒度的模糊的位置信息;
  • 如果多次出现强特征,则也可以捕获特征强度。
  • Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networks
  • Local Translation Prediction with Global Sentence Representation

总结

分类所需要的关键特征的位置信息很重要,那么类似Chunk-Max Pooling这种能够粗粒度保留位置信息的机制应该能够对分类性能有一定程度的提升作用。比如情感分析。

参考链接

  • https://blog.csdn.net/malefactor/article/details/51078135
  • https://blog.csdn.net/malefactor/article/details/50519566
  • https://blog.csdn.net/malefactor/article/details/50374237

你可能感兴趣的:(CNN)