CNN文本分类
1.这里的输入层显示有两个channel,其实我们可以看作是一个,因此后文中说到这个两个channel分别是static和non-static
,即使用的词向量是否随着训练发生变化.non-static就是词向量随着模型训练变化,这样的好处是词向量可以根据数据集做适当
调整,当数据集较小时不推荐此操作,否则容易产生过拟合现象.static就是直接使用word2vec训练好的词向量即可,此外,由图可
知,输入层是将一个句子所有单词的词向量进行拼接成一个矩阵,每一行代表一个词.每个句子固定20个词,如果不够的补padding.
2.卷积层,每个卷积核的大小为filter_size * embedding_size.filter_size代表卷积核纵向上包含单词的个数,即认为相邻
几个词之间有词序关系,代码里使用的是{3,4,5}.embedding_size就是词向量的维数,每个卷积核计算完成之后我们就得到了1个
列向量,代表这该卷积核从句子中提取出来的特征.有多少和卷积核就能提取出多少种特征,即图中在纵深方向上channel的数量
3.池化层.文中提到pooling操作就是将卷积得到的列向量的最大值提取出来.这样pooling操作之后我们会获得一个num_filters
维的行向量,即将每个卷积核的最大值连接起来,这样做还有一个好处就是,如果我们之前没有对句子进行padding操作,那么句子的
长度是不同的,卷积之后得到的列向量维度也是不同的,可以通过poolding来消除句子之间长度不同的差异.
4.全连接层,为了将pooling层输出的向量转化为我们想要的预测结果,加上一个softmax层即可针对电影评价的分类任务,就是将其
转化为正面,负面两个结果,文中还提到了过拟合的问题,因为实验种所使用的数据集相对较小,很容易就会发生过拟合现象,在实验过
程种也会发现当迭代3000多轮的时候准确率就会接近1.所以这里引如dropout来减少过拟合现象,此外还可以考虑L2正则化等方法实
现防止过拟合的功能.