原文标题

A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification

Introduction

  1. 与逻辑回归、SVM相比,在文本分析中CNN应用困难的原因在于存在太多人为确定的超参。
  2. CNN训练缓慢——在SST-1数据集上,进行10-fold交叉验证训练需要1个小时
  3. 可能的超参和模型结构太多,至少需要确定:词向量表达式、过滤层尺寸、特征数、激活函数、池化策略、正则项。
  4. 调参的优化方法包括:随机搜索、贝叶斯优化,但这些方法需要明确开始调整的参数和调整范围。
  5. 本工作致力于从经验上确定一些和数据集无关的超参的最佳取值,以及所有超参最佳的取值范围。
  6. 本文介绍了不同的超参设置在9个文本数据集上的训练结果,准确性以AUC和平均准确率的方式呈现。

Background

  1. 目前使用CNN进行本文分类的输入均使用词向量或词嵌入
  2. 设一个句子长度为s,词向量长度为d,则一个句子对应的矩阵A∈R^{s*d}
  3. 对于一个filter,显然其是一个d*h的矩阵,h为region size
  4. 从A中选取连续的h行(即连续的h个单词),则oi=w·A[i:i+h-1],输出为d*d的矩阵,显然共有s-h+1个o
  5. 对应的特征矩阵为ci = f(oi+b)
  6. 可见特征矩阵的维度和句子的长度以及region size有关,因此在训练之前还需要进行池化
    常用的池化方法:1-max pooling,而后将各个filter对应的池化结果串联,作为一个单独的特征向量。
  7. 而后通过soft-max,计算分类结果,同时可使用dropout进行正则化防止
  8. 损失函数:交叉熵绝对值,涉及的参数是filter的权重矩阵、计算feature map c的偏差矩阵,以及soft-max的权重矩阵。

Baseline Model

  1. bowSVM: unigram and bigram features; wvSVM: average word vector; bowwvVM: concatenates bow vectors with average word2vec representations.
  2. word2vec, GloVe
  3. tuned hyperparameters via nested cross-fold validation

Effect

词向量的影响

  1. One-hot 词向量+单层CNN在文本分类上取得了好成绩,但在句分类上表现较差。
  2. 结论:当训练数据足够时,使用embedding的效果是好的

Region size的影响

  1. 常规的region size最优取值是1~10
  2. 对于句子长度较长的情况,要相应增加
  3. 可以使用combine several region sizes的方法获得更好的结果

Number of feature maps的影响

  1. 当特征数超过600时,会发生过拟合

激活函数的影响

  1. ReLU、tanh、Sigmoid、SoftPlus、Cube、tanh Cube、以及No function
  2. 整体来看,tanh的表现要优于ReLU,,甚至Iden(无函数)都要更好
  3. ReLU能够加速SGD收敛
  4. 当有多层隐藏层时,Iden将不再合适

池化策略的影响

  1. 1-max pooling是最好的

正则化的影响

  1. Drop out+L2 范数约束
  2. 改变drop out rate, 固定L2 norm为常数
  3. 结论:没有太大影响,建议rate在0到0.5之间,非0,以及使用较大的L2限制

结论

  1. word2vec、GloVe都要比one-hot好
  2. filter region size是调参的重点之一
  3. feature maps number也是调参重点
  4. 1-max pooling和Regularization相对影响较小
  5. 建议使用non-static embeddings
  6. 当增加feature maps number时,使用更大的正则化参数

利用CNN进行句子分类的敏感性分析相关推荐

  1. CNN对句子分类(tensorflow)

    卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面,一方面它的神经元间的连接是非全连接的, 另一方面同一层中某些神经元之间的连接的权重是共享的(即相同的).它的非全连接和权值共享的网 ...

  2. nlp-tutorial代码注释2-1,CNN用于句子分类简介

    本部分基于paper:Convolutional Neural Networks for Sentence Classification 模型介绍 目的 模型的目的是对输入的句子进行分类.论文中的模型 ...

  3. 3-对链家二手房数据进行预处理,以及利用CNN进行多分类操作

    使用:26-爬取链家二手房成交的房产信息[简单] (https://my.oschina.net/pansy0425/blog/3031621),对爬取到的数据进行简单的清洗,去噪,进行数据预处理,以 ...

  4. CNN用于句子分类时的超参数分析

    本文是"A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for S ...

  5. CNN与句子分类之动态池化方法DCNN--模型介绍篇

    本文是针对"A Convolutional Neural Network for Modelling Sentences"论文的阅读笔记和代码实现.这片论文的主要贡献在于其提出了一 ...

  6. 系统学习NLP(三十一)--基于CNN句子分类

    这篇文章翻译自A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sen ...

  7. 文本分类(下) | 卷积神经网络(CNN)在文本分类上的应用

    正文共3758张图,4张图,预计阅读时间18分钟. 1.简介 原先写过两篇文章,分别介绍了传统机器学习方法在文本分类上的应用以及CNN原理,然后本篇文章结合两篇论文展开,主要讲述下CNN在文本分类上的 ...

  8. 【论文复现】使用CNN进行文本分类

    今天要写的是关于NLP领域的一个关键问题:文本分类. 相对应的论文是:Convolutional Neural Networks for Sentence Classification 参考的博客为: ...

  9. 深度学习-07(图像分类、常用数据集、利用CNN实现图像分类、图像分类优化)

    文章目录 深度学习-07(PaddlePaddle图像分类) 图像分类概述 概述 什么是图像分类 图像分类粒度 图像分类发展历程 图像分类问题的挑战 常用数据集介绍 MNIST数据集 CIFAR10数 ...

最新文章

  1. 【运维学习笔记】运维入门
  2. 二本学生连发10篇SCI直博香港城大,被质疑「灌水」,本人回应!
  3. 机器人操作学习系列分享:模仿学习
  4. 面向对象是软件开发范式的根本性颠覆: 主体建模, 非目标导向, 松耦合, 非逻辑分解, 软件进化...
  5. robotium诡异的Instrumentation run failed due to 'java.lang.ClassNo
  6. 2.2.1 定点数的表示(无符号与有符号数、定点小数和整数、原码、反码、补码、移码)
  7. mysql使用索引扫描做排序_「Mysql索引原理(八)」使用索引扫描做排序
  8. JavaScript禁用鼠标右键菜单
  9. 【转】Direct3D顶点结构使用总结
  10. mysql为什么选innodb_为什么现在的MySQL都要使用innoDB引擎-Go语言中文社区
  11. vSphere 故障排除之网络篇
  12. 选择数据分析软件时要注意什么
  13. iOS利用代理实现界面跳转
  14. scala问题解决sbt下载过慢的问题
  15. 安装GLPI资产管理
  16. ASP网站实例教程:IIS安装配置
  17. NGUI-动画Tween
  18. 数字化改革“1612”详解
  19. 计算机等级良好和优秀是什么意思?
  20. 静态检测工具STATIC以及静态分析的必要性

热门文章

  1. NVl和NVL2的语法使用详解
  2. 前端可视化项目全国疫情地图
  3. 【python】opencv教程CV2模块——图片处理,HSV、色调、亮度调节
  4. ubuntu 下怎么查看内存条状况
  5. Docker入门的亿点点学习
  6. 2021-09-14指标计算
  7. linux静默安装oracle11g数据库教程
  8. 嵌入式ARM设计编程(四) ARM启动过程控制
  9. 指针实现入栈、出栈、取栈顶元素
  10. Python3之多线程