TEXTCNN算法原理与实践

------------------原文  https://blog.csdn.net/asialee_bird/article/details/88813385   ----------------

上图是textcnn的框架,句子中每个单词是n维词向量,输入矩阵是m*n,m为句子长度,cnn需要对输入样本进行卷积操作,对于文本数据,filter不再横向滑动,仅仅是向下移动,

1 嵌入层

2 卷积层

在图像处理时卷积核的宽度和高度是一样的,是text-cnn中,卷积核的宽度是于词向量的维度一致的,这是因为我们输入的每一行向量代表一个词,在抽取特征的过程中,词作为文本的最小粒度,而高度与cnn一样的,可以自行设置,通常取值2 3 4 5,高度类似于n-gram

3 池化层

在池化层到全连接层之前加上dropout防止过拟合。

4 全连接层

全连接层和其他模型一样的,假设有两层连接层,第一层加上relu,第二层使用softmax激活函数得到属于每个类的概率。

5 TextCNN的小变种

6 参数与超参数

1 sequence_length   对于cnn,输入与输出是固定的,可每个句子长短不一,处理方案是  需要做定长处理,比如定为n,超过截取,不足补0,

2 num_class

3 vocabulary——size

4 embedding_size  将原来语料库的词典大小降低为embedding_size

5 filter_size_arr   

 

 

 

 

 论文调参结论

1 使用预训练的Word2vec GloVec初始化效果会更好 一般不直接使用onehot

2 卷积核的大小影响较大,一般取1 --10  对于句子较长的文本,则应该选择大一些

3 卷积核的数据也有较大影响,一般取100-600  同时一般使用Dropout

4 激活函数一般选择Relu  和 tanh

5 池化层使用 1-max pooling

6 随着feature map数量增加,性能减小时,尝试使用大于0.5的Drooput

7 性能评估使用交叉验证

 

posted @ 2020-08-02 22:31  大大的海棠湾  阅读(288)  评论(0)    收藏  举报