读TextCnn文章

TextCnn,顾名思义,就是将卷积神经网络应用在文本领域!

 

1.模型示意图

  • 输入是一个n*k的矩阵,n表示一个句子切分后的序列,k表示每个词的词向量的维度 ,即
  • input -> hidden layer 通过权重矩阵h*k大小的W,W就是CNN中的filter,k是固定的,在词序列方向进行滑动,求卷积;然后加一个bias后做非线性激活,即
  • 对于序列长度为n,filter大小为h*k,不断滑动,可以得到n-h+1 个卷积值 。这个比较好理解
  • 然后采用max_pooling进行操作,捕获最重要的特征!
  • 将下去就到全连接层了

通过这个图更加好理解

 

2.模型的一些细节

  • textCnn 用了多个大小不同的filter
  • 对于输入层的词向量,采用两种不同的方式进行对待, 第一种是训练过程中维持不变,另外一种是通过bp进行更新,这样会得到ci 的两种结果
  • 正则化:实际上就是cnn中的dropout,以一定的概率剔除隐藏层的神经元
  • 另外,对W的2范式做了约束,当 ||w|| > s 时,就让  ||w|| > s ,防止 ||w|| 过大

 

 

3. 试验参数设置

  • 数据集包含MR,SST-1,SST-2 等共计7个文本数据
  • filter 的 h 为3,4,5 ,分别有100个filter,共计 300个filter
  • dropout 设置为0.5
  • ||w|| > s ,中的s 设置为3
  • batchsize 设置为50
  • 采用SGD进行梯度下降
  • 这些数据是基于SST-2的 验证集(dev)得到的
  • 如果数据集中没有专门的验证集,那么就把从训练集中抽出10%作为验证集
  • 几种模型:
    • CNN-rand:词向量随机初始化,并且随着训练进行更新

    • CNN-static:采用word2vec预训练的词向量,训练过程中不更新

    • CNN-non-static:采用word2vec预训练的词向量,训练过程中更新

    • CNN-multichannel:CNN-static+CNN-non-static

 

4.一些结论

  • 建议采用预训练的词向量,预训练词向量可以跨数据集使用,如果在此基础上,采用non-static模式,做fine tune,能捕获特定数据集的特征,performance 也更好,如果词,预训练的词向量没有覆盖到,通过fine tune,可以捕获有意义的表征
  • 建议采用multichannel模式,当初设计的本意是防止过拟合,试验结果显示表现更好,特别是在小数据集上

 

 

 

refer:

https://arxiv.org/pdf/1408.5882.pdf  Convolutional Neural Networks for Sentence Classification

https://arxiv.org/pdf/1510.03820.pdf 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、付费专栏及课程。

余额充值