这张图很直观了, 不过对新手确实需要解释一下.
- textCNN的输入是一个m×n的embedding矩阵, 图中为7×5.
- textCNN提供了6个卷积核, 尺寸分别为(2×5), (3×5), (4×5), 每种尺寸有两个.
- 输入的7×5分别经6个卷积核的卷积, 获得(4×1), (5×1), (6×1), 每种各2个, 共计6个卷积结果.
- 每个卷积结果都取结果内的max pooling, 再将所有结果拼接. 这样无论输入长度为多少, 在pooling的作用下, 输出长度都会与卷积核个数保持一致.
- 最后是全连接+softmax的二分类.
textCNN在attention出来之前, 是很接近attention想法的模型. 多个不同gram的卷积核代表了大部分可能的关注点和关注范围, 每种gram都分配2个核, 比起1个核更加人性化, 保留信息的空间更大, 虽然不能随意保留数据, 但已经很不错了. 多种核宽度可以同时保证信息稠密和稀疏两种情况.
但其缺点也很明显, 卷积核视野再大也会有个限度, 视野被限制了就只能做深层语义提取, 以期望更广泛的语义信息. 但textCNN只有一次卷积, 所以不可能做到. 所以对于长文本, textCNN效果会很羸弱.
每种尺寸的卷积核个数增加, 从2个到3个4个, 我认为意义不大. 卷积操作已经对初始数据做了一定的杂糅, 更何况其他不同尺寸的卷积核也可以作为信息提取的补充, 虽然单看某个尺寸的信息提取范围不大, 但总体来说还是可以接受的. 增加肯定有用, 但没必要.