使用CNN进行句子分类(Convolutional Neural Networks for Sentence Classification)

本文主要是介绍使用CNN进行句子分类(Convolutional Neural Networks for Sentence Classification),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Yoon Kim在论文(2014 EMNLP) Convolutional Neural Networks for Sentence Classification提出TextCNN。
文章地址:https://arxiv.org/pdf/1408.5882.pdf

以下是翻译内容

摘要:
一个简单的CNN需要很少的超参和静态的vector就能够获得很好的结果,如果将静态的vector改为针对任务的vector,效果又会进一步提升。
本文的目的是对CNN的结果进行很少的改动就能够使其在静态和task-specific的vector上都能够使用。这里讨论的CNN,在7个任务中有4个比以往的结果表现的要好,包括情感分析和问题分类。

近些年来,深度学习模型在图像和语音识别的任务中已经取得了惊人的成就,随着自然语言处理的发展,越来越多人使用深度学习方法,运用神经语言模型来学习词向量的表示。词向量,由稀疏的one-hot模式,通过一层隐藏层映射到了低维向量空间。这本质上是在提取特征,用以在单词维度上编码语义特征。在稠密向量标识中,语义相近的向量同样在空间上也会很相近(欧式距离或者是cosine距离)。

CNN使用卷积层来处理局部特征,原本是为了计算机图像而发明。紧接着,CNN模型在NLP任务上也被证明是有效的,包括语义分析和搜索问题检索、句子见面和其他传统的NLP任务。在现阶段的任务中,我们训练一个简单的CNN模型,在无监督的神经语言模型训练出的词向量上加一层卷积层,这些词向量是由 Mikolov etal. (2013)在100w的谷歌新闻上训练,目前是可以公开获取到的。我们初始保持这些词向量不变,仅仅学习这个模型的其他参数。仅仅调了几个超参之后,这个简单的模型在几个基准上都取得了非常出色的成绩。这表明,提前训练出的向量是一种通用的特征提取器,可以在各种分类任务中使用。

2.模型

2.1正则化

那就是给倒数第二层,z = [ˆc1, . . . , cˆm] (注意,这里我们有m个过滤器), 而非使用y = w · z + b,对于前向反馈网络,dropout使用

y = w · (z ◦ r) + b,其中◦ 代表的是点积,而r属于Rm,是一个“掩藏”向量,它是一个概率p为1的伯努利随机变量(没整明白)。

梯度只会由那些没有被掩藏的单元反馈。在测试阶段,学到的权重向量要乘以p,例如twˆ = pw, wˆ 被用来(不加dropout)对那些未出现的句子打分。我们额外加上了l2范式限制,在梯度下降步骤之后,对于那些||w||2 > s ,我们令||w||2 = s 

 

3.数据集和实验步骤

我们在几个基准上测试了我们的模型,结果如表格1所示。

表格1:每个数据集的统计数据

c:目标类目的个数

l:句子的平均长度

N:数据集的大小

|V|:词汇的大小

|Vpre|:有多少词语出现在预训练的词向量集合中

Test:测试集的大小(CV意味着没有固定的大小,使用10折交叉验证)

MR:Movies reviews,影评,每个影评只有1句,目标是区分正向情感和负向情感。

SST-1:Stanford Sentiment Treebank,MR的升级,提供了train/dev/test三个部分,并且被Socher et al. (2013).4微调成了5种标签(非常正向,正向,中立,负向,非常负向)。

SST-2:和SST-1一致,但是去除了中立标签,只留下了正向、负向2种标签。

Subj: Subjectivity dataset,判断一个句子是主观的还是客观的 (Pang and Lee, 2004).

TREC:TREC question dataset,判断问题是属于人类、地点、数字信息或者是其他(一共6种分类),(Li and Roth, 2002).5

CR: Customer reviews,数据集是用户对多个产品的评价,目标是预测正向、负向评价。

MPQA: MPQA dataset (Wiebe et al., 2005).7,对数据集上评价两极化的检测。

上述数据集地址:

3 https://www.cs.cornell.edu/people/pabo/movie-review-data/

4 http://nlp.stanford.edu/sentiment/   (Data is actually provided at the phrase-level and hence we train the model on both phrases and sentences but only score on sentences at test time, as in Socher et al. (2013), Kalchbrenner et al. (2014), and Le and Mikolov (2014). Thus the training set is an order of magnitude larger than listed in table 1.)

5 http://cogcomp.cs.illinois.edu/Data/QA/QC/

6 http://www.cs.uic.edu/∼liub/FBS/sentiment-analysis.html

7 http://www.cs.pitt.edu/mpqa/

3.3模型变种

• CNN-rand:基准模型,所有单词随机初始化,在训练中可变。

• CNN-static:模型使用word2vec预训练好的向量,之前未预先训练好的向量则随机初始化。所有向量在训练过程中均保持不变,只训练其他参数。

• CNN-non-static:基本同上,唯一的区别是提前训练好的向量是可被微调的。

• CNN-multichannel:该模型有2组词向量,每组词向量都可以看作是一个通道,都会使用所有的过滤器,但是只有一个通道可以反馈梯度。因而,这个模型就是对一组向量进行微调,同时保持另一组向量不变。两组向量都是由word2vec预训练好的。

为了避免随机因素对实验的干扰,我们消除了实验中可能存在的随机性,比如训练数据的划分、未知词语的初始化,CNN参数的初始化,保证在每个数据集中,这些模型的这几个因素都保持一致。

4.结果与讨论

表格2:Results of our CNN models against other methods.

RAE: Recursive Autoencoders with pre-trained word vectors from Wikipedia (Socher et al., 2011).

MV-RNN: Matrix-Vector Recursive Neural Network with parse trees (Socher et al., 2012).

RNTN: Recursive Neural Tensor Network with tensor-based feature function and parse trees (Socher et al., 2013).

DCNN: Dynamic Convolutional Neural Network with k-max pooling (Kalchbrenner et al., 2014).

Paragraph-Vec: Logistic regression on top of paragraph vectors (Le and Mikolov, 2014).

CCAE: Combinatorial Category Autoencoders with combinatorial category grammar operators (Hermann and Blunsom, 2013).

Sent-Parser: Sentiment analysis-specific parser (Dong et al., 2014).

NBSVM, MNB: Naive Bayes SVM and Multinomial Naive Bayes with uni-bigrams from Wang and Manning (2012).

G-Dropout, F-Dropout: Gaussian Dropout and Fast Dropout from Wang and Manning (2013).

Tree-CRF: Dependency tree with Conditional Random Fields (Nakagawa et al., 2010).

CRF-PR: Conditional Random Fields with Posterior Regularization (Yang and Cardie, 2014).

SVMS: SVM with uni-bi-trigrams, wh word, head word, POS, parser, hypernyms, and 60 hand-coded rules as features from Silva et al. (2011).

 

我们模型与其他模型的结果如表格2所示,我们的基准模型(CNN-rand,所有词语随机初始化)表现的并不好。尽管我们已经预计到提前训练好的向量在表现上会有所提升,但是提升的幅度完全超乎我们的预料。仅仅是一个用固定向量的简单模型(CNN-static)的表现也非常的好,结果与那些使用了更复杂的池化机制(Kalchbrenner et al., 2014)或者是要提前计算语法树(Socher et al., 2013).的复杂的深度学习模型的表现不相上下。结果证实了那些提前训练的向量是有用,普遍的特征提取器,可以被用于其他的数据集。微调那些提前训练好的向量可以进一步提升效果。

4.1多通道模型vs单通道模型

我们初始希望的是多通道模型可以预防过拟合(通过学到的向量和初始向量不会偏离的太远确定),因而可以比单通道模型的效果更好,尤其是对小数据集而言。然后结果却和我们预期的不完全一致,因此,有必要对微调过程进行正则化。举例而言,不必对可变的部分使用一个额外的通道,可以只有一个通道,但是要增加可以在训练中可以被修改的维度。

4.2静态和动态的表现

和可变的单通道模型一样,多通道模型可以对可变通道的部分进行微调,使其对正在处理的数据集更加具有针对性。举个例子,在word2vec中,和good最相似的词是bad,这可能是由于good和bad在语法上基本是等价的,但是在可变单通道的模型中,使用了SST-2数据集微调之后的词向量,就不再是这么一回事了。按理来说,在表示情感的时候,good和nice更为相近,而不是great,这一点在学好的向量中也有所体现。

对于那些没有在预训练的集合中出现的词语,我们随机初始化过后,微调允许他们去学习更有意义的表示:网络学习到感叹号和激烈的情感表达有关,而句号则更内敛。

4.3进一步观察

我们的报告还包括一些进一步的实验和观察:

Kalchbrenner et al. (2014) 报告中得到很差结果的CNN和我们文中所说的单通道的CNN本质上是一样的结构,例如,他们的r Max-TDNN (Time Delay Neural Network),也是对词语的随机初始化,在SST-1数据集上仅获得了37.4%,而我们的模型则获得了45.%.我们将这一差别归功于我们的CNN有更大的容量(多种过滤器宽度和特征map)

dropout被证明是一种良好的正则化手段,我们可以使用一个比预期更大的网络来进行训练,而仅仅只需要用dropout来正则化它。dropout在所有数据集上,对比那些没有用dropout的模型都提升了2%-4%.

在随机初始化那些没有出现在word2vec中的单词时,每个维度都从U[−a, a]中抽样使我们的表现获得了小幅提升。其中,a是使得随机初始化的向量和预先训练好的向量有一只的方差。之后,使用更复杂的方式来和减小预训练的向量分布之间的差距,这是否能使结果获得进一步的提升也是个有趣的问题。

我们使用Collobert et al. (2011)使用Wikipedia,8训练出来的词向量进行了一些简单的实验,发现word2vec表现更优一点。我们不清楚这是由于Mikolov et al. (2013)’s 的结构引起的还是由于谷歌新闻数据集有1亿单词。

Adadelta (Zeiler, 2012) 和 Adagrad (Duchi et al., 2011)表现差不多,但是需要多几次迭代 

5.结论

在现阶段的工作中,我们描述了一些列基于word2vec使用CNN网络的实验。除了少量的超餐之外,一个只有一层卷积层的简单的CNN表现的已经非常好了。我们的结果只是更进一步证明了预训练好的词向量在NLP的深度学习中,是一个很重要的组成成分。

这篇关于使用CNN进行句子分类(Convolutional Neural Networks for Sentence Classification)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/453750

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]