Dynamic Convolutional Neural Network
一、介绍
一篇14年的很经典的论文, 模型采用动态k-max pooling取出得分topk的特征值,能处理不同的句子,不依赖解析树。网络包含两种类型的层:一维的卷积层和动态k-max池化层(Dynamic k-max pooling)。
k-max pooling:
- pooling的结果不是返回一个最大值,而是返回k组最大值,这些最大值是原输入的一个子序列;
- pooling中的参数k可以是一个动态函数,具体的值依赖于网络的其他参数。
二、模型的特点
- 保留了句子中词序信息和词语之间的相对位置;
- 宽卷积的结果是传统卷积的一个扩展,某种意义上,也是n-gram的一个扩展,更加考虑句子边缘的信息;
- 模型不需要任何先验知识,并且模型考虑了句子中相隔较远的词语之间的语义信息。
三、模型结构及原理
可以发现和textCNN不同, 这里卷积是做的二维卷积.
1. 宽卷积
卷积层使用 宽卷积(Wide Convolution) 的方式。
与传统卷积操作相比,宽卷积输出Feature Map宽度更宽,因为卷积窗口并不需要覆盖所有的输入值。
感觉就是先padding吧.
2. k-max池化
k-max pooling选择序列p中的前k个最大值,这些最大值保留原来序列的词序。
k-max pooling的好处在于,既提取句子中的较重要信息(不止一个),同时保留了它们的次序信息。同时,由于应用在最后的卷积层上只需要提取出k个值,所以这种方法允许不同长度的输入。
3. 动态k-max池化
所谓动态k-max池化, 就是k值是动态变化的.
k是输入句子长度和网络深度两个参数的函数。
K l = max ( k t o p