TextCNN

使用卷积进行文本分类:

在这里插入图片描述
在这里插入图片描述
对句子进行Embedding,并进行padding,使得句子长度一致。

网络架构

第一层:Embedding

第一层为输入层。输入层是一个 n ∗ k n *k nk 的矩阵,其中 n n n为一个句子中的单词数, k k k是每个词对应的词向量的维度。也就是说,输入层的每一行就是一个单词所对应的 k k k维的词向量。另外,这里为了使向量长度一致对原句子进行了padding操作。我们这里使用 x i x_i xi表示句子中第 i i i 个单词的 k k k维词嵌入。

每个词向量可以是预先在其他语料库中训练好的,也可以作为未知的参数由网络训练得到。这两种方法各有优势,预先训练的词嵌入可以利用其他语料库得到更多的先验知识,而由当前网络训练的词向量能够更好地抓住与当前任务相关联的特征。因此,图中的输入层实际采用了双通道的形式,即有两个 n ∗ k n*k nk的输入矩阵,其中一个用预训练好的词嵌入表达,并且在训练过程中不再发生变化;另外一个也由同样的方式初始化,但是会作为参数,随着网络的训练过程发生改变。

第二层 卷积层与池化层

在这里插入图片描述
在这里插入图片描述

第三层:全连接层 + softmax

得到文本句子的向量表示之后,后面的网络结构就和具体的任务相关了。本例中展示的是一个文本分类的场景,因此最后接入了一个全连接层,并使用Softmax激活函数输出每个类别的概率。

TextCNN中的参数

在这里插入图片描述
这里将一下调参的问题,主要方法来自论文[2]。在最简单的仅一层卷积的TextCNN结构中,下面的超参数都对模型表现有影响:

  1. 输入词向量表征:词向量表征的选取(如选word2vec还是GloVe)
  2. 卷积核大小:一个合理的值范围在1~10。若语料中的句子较长,可以考虑使用更大的卷积核。另外,可以在寻找到了最佳的单个filter的大小后,尝试在该filter的尺寸值附近寻找其他合适值来进行组合。实践证明这样的组合效果往往比单个最佳filter表现更出色
  3. feature map特征图个数:主要考虑的是当增加特征图个数时,训练时间也会加长,因此需要权衡好。当特征图数量增加到将性能降低时,可以加强正则化效果,如将dropout率提高过0.5
  4. 激活函数:ReLU和tanh是最佳候选者
  5. 池化策略:1-max pooling表现最佳
  6. 正则化项(dropout/L2):相对于其他超参数来说,影响较小点

参考:
https://zhuanlan.zhihu.com/p/77634533
参考论文:
[1] Convolutional Neural Networks for Sentence Classification
[2] A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值