利用CNN进行句子分类的敏感性分析
原文标题
A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification
Introduction
- 与逻辑回归、SVM相比,在文本分析中CNN应用困难的原因在于存在太多人为确定的超参。
- CNN训练缓慢——在SST-1数据集上,进行10-fold交叉验证训练需要1个小时
- 可能的超参和模型结构太多,至少需要确定:词向量表达式、过滤层尺寸、特征数、激活函数、池化策略、正则项。
- 调参的优化方法包括:随机搜索、贝叶斯优化,但这些方法需要明确开始调整的参数和调整范围。
- 本工作致力于从经验上确定一些和数据集无关的超参的最佳取值,以及所有超参最佳的取值范围。
- 本文介绍了不同的超参设置在9个文本数据集上的训练结果,准确性以AUC和平均准确率的方式呈现。
Background
- 目前使用CNN进行本文分类的输入均使用词向量或词嵌入
- 设一个句子长度为s,词向量长度为d,则一个句子对应的矩阵A∈R^{s*d}
- 对于一个filter,显然其是一个d*h的矩阵,h为region size
- 从A中选取连续的h行(即连续的h个单词),则oi=w·A[i:i+h-1],输出为d*d的矩阵,显然共有s-h+1个o
- 对应的特征矩阵为ci = f(oi+b)
- 可见特征矩阵的维度和句子的长度以及region size有关,因此在训练之前还需要进行池化
常用的池化方法:1-max pooling,而后将各个filter对应的池化结果串联,作为一个单独的特征向量。 - 而后通过soft-max,计算分类结果,同时可使用dropout进行正则化防止
- 损失函数:交叉熵绝对值,涉及的参数是filter的权重矩阵、计算feature map c的偏差矩阵,以及soft-max的权重矩阵。
Baseline Model
- bowSVM: unigram and bigram features; wvSVM: average word vector; bowwvVM: concatenates bow vectors with average word2vec representations.
- word2vec, GloVe
- tuned hyperparameters via nested cross-fold validation
Effect
词向量的影响
- One-hot 词向量+单层CNN在文本分类上取得了好成绩,但在句分类上表现较差。
- 结论:当训练数据足够时,使用embedding的效果是好的
Region size的影响
- 常规的region size最优取值是1~10
- 对于句子长度较长的情况,要相应增加
- 可以使用combine several region sizes的方法获得更好的结果
Number of feature maps的影响
- 当特征数超过600时,会发生过拟合
激活函数的影响
- ReLU、tanh、Sigmoid、SoftPlus、Cube、tanh Cube、以及No function
- 整体来看,tanh的表现要优于ReLU,,甚至Iden(无函数)都要更好
- ReLU能够加速SGD收敛
- 当有多层隐藏层时,Iden将不再合适
池化策略的影响
- 1-max pooling是最好的
正则化的影响
- Drop out+L2 范数约束
- 改变drop out rate, 固定L2 norm为常数
- 结论:没有太大影响,建议rate在0到0.5之间,非0,以及使用较大的L2限制
结论
- word2vec、GloVe都要比one-hot好
- filter region size是调参的重点之一
- feature maps number也是调参重点
- 1-max pooling和Regularization相对影响较小
- 建议使用non-static embeddings
- 当增加feature maps number时,使用更大的正则化参数
利用CNN进行句子分类的敏感性分析相关推荐
- CNN对句子分类(tensorflow)
卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面,一方面它的神经元间的连接是非全连接的, 另一方面同一层中某些神经元之间的连接的权重是共享的(即相同的).它的非全连接和权值共享的网 ...
- nlp-tutorial代码注释2-1,CNN用于句子分类简介
本部分基于paper:Convolutional Neural Networks for Sentence Classification 模型介绍 目的 模型的目的是对输入的句子进行分类.论文中的模型 ...
- 3-对链家二手房数据进行预处理,以及利用CNN进行多分类操作
使用:26-爬取链家二手房成交的房产信息[简单] (https://my.oschina.net/pansy0425/blog/3031621),对爬取到的数据进行简单的清洗,去噪,进行数据预处理,以 ...
- CNN用于句子分类时的超参数分析
本文是"A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for S ...
- CNN与句子分类之动态池化方法DCNN--模型介绍篇
本文是针对"A Convolutional Neural Network for Modelling Sentences"论文的阅读笔记和代码实现.这片论文的主要贡献在于其提出了一 ...
- 系统学习NLP(三十一)--基于CNN句子分类
这篇文章翻译自A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sen ...
- 文本分类(下) | 卷积神经网络(CNN)在文本分类上的应用
正文共3758张图,4张图,预计阅读时间18分钟. 1.简介 原先写过两篇文章,分别介绍了传统机器学习方法在文本分类上的应用以及CNN原理,然后本篇文章结合两篇论文展开,主要讲述下CNN在文本分类上的 ...
- 【论文复现】使用CNN进行文本分类
今天要写的是关于NLP领域的一个关键问题:文本分类. 相对应的论文是:Convolutional Neural Networks for Sentence Classification 参考的博客为: ...
- 深度学习-07(图像分类、常用数据集、利用CNN实现图像分类、图像分类优化)
文章目录 深度学习-07(PaddlePaddle图像分类) 图像分类概述 概述 什么是图像分类 图像分类粒度 图像分类发展历程 图像分类问题的挑战 常用数据集介绍 MNIST数据集 CIFAR10数 ...
最新文章
- 【运维学习笔记】运维入门
- 二本学生连发10篇SCI直博香港城大,被质疑「灌水」,本人回应!
- 机器人操作学习系列分享:模仿学习
- 面向对象是软件开发范式的根本性颠覆: 主体建模, 非目标导向, 松耦合, 非逻辑分解, 软件进化...
- robotium诡异的Instrumentation run failed due to 'java.lang.ClassNo
- 2.2.1 定点数的表示(无符号与有符号数、定点小数和整数、原码、反码、补码、移码)
- mysql使用索引扫描做排序_「Mysql索引原理(八)」使用索引扫描做排序
- JavaScript禁用鼠标右键菜单
- 【转】Direct3D顶点结构使用总结
- mysql为什么选innodb_为什么现在的MySQL都要使用innoDB引擎-Go语言中文社区
- vSphere 故障排除之网络篇
- 选择数据分析软件时要注意什么
- iOS利用代理实现界面跳转
- scala问题解决sbt下载过慢的问题
- 安装GLPI资产管理
- ASP网站实例教程:IIS安装配置
- NGUI-动画Tween
- 数字化改革“1612”详解
- 计算机等级良好和优秀是什么意思?
- 静态检测工具STATIC以及静态分析的必要性