textcnn一般用于文本分类。
1、TextCNN的网络结构
(1)embedding层,嵌入层
嵌入层使用word2vec或者glove(无监督)训练好的词向量,一般不用one-hot,训练好的向量有语义信息,节省空间。使用训练好的词向量可以利用他们学习到的知识,更快的收敛。维度为N x M, N是句子长度,M是向量维度。bse
(2)卷积层
通过一层卷积层,使用不同size的filter,提取不同的n-gram特征。假如其中一个filter size大小为d x M,卷积后的向量维度为(N-d+1)x 1。filter 一般1-10。
(3)pooling层
不同尺寸得到的卷积核(feature map)大小不一样,所以需要进行池化使维度相同。对卷积层的输出进行池化(max pooling,min pooling, avg pooling),一般选最大池化。
(4)全连接层 + softmax进行分类
为了防止过拟合,使用L2和dropout正则化
2、使用多个kernel size filter的原因:
不同size的kernel可以获取不同范围内的词的信息,类似于n-gram。
3、使用多个相同size的filter的原因:
卷积神经网络中学习的是卷积核的参数,每个filter都有自己的关注点,这个多个卷积核就能学习到多个不同的信息。
4、为什么选用最大池化
核心观点是,max-pooling相比于average-pooling能够提取到差异化特征。比如两个特征,[3,3,3]和[2,3,4]他们的average-pooling都是[3],但是max-pooling分别是[3]和[4],max-pooling在寻找特征中的极端值,正是这种极端值,才是区分不同类别的关键