CNN介绍及代码实现

栏目: 数据库 · 发布时间: 5年前

内容简介:本文简要介绍CNN的基本原理,并以句子级情感分类任务为例介绍使用CNN方法进行特征抽取建模。文章的最后,我们给出Pytorch下CNN的实现代码,供读者参考。自然语言处理中情感分类任务是对给定文本进行情感倾向分类的任务,粗略来看可以认为其是分类任务中的一类。对于情感分类任务,目前通常的做法是先对词或者短语进行表示,再通过某种组合方式把句子中词的表示组合成句子的表示。最后,利用句子的表示对句子进行情感分类。举一个对句子进行褒贬二分类的例子。

一、介绍

1.1 文章组织

本文简要介绍CNN的基本原理,并以句子级情感分类任务为例介绍使用CNN方法进行特征抽取建模。文章的最后,我们给出Pytorch下CNN的实现代码,供读者参考。

1.2 情感分类任务

自然语言处理中情感分类任务是对给定文本进行情感倾向分类的任务,粗略来看可以认为其是分类任务中的一类。对于情感分类任务,目前通常的做法是先对词或者短语进行表示,再通过某种组合方式把句子中词的表示组合成句子的表示。最后,利用句子的表示对句子进行情感分类。

举一个对句子进行褒贬二分类的例子。

句子:我爱赛尔

情感标签:褒义

1.3 什么是CNN

CNN的全称是Convolutional Neural Network, 是一种前馈神经网络。由一个或多个卷积层、池化层以及顶部的全连接层组成,在图像处理领域表现出色。本文主要讲解CNN如何在自然语言处理方面的运用。

1.4 为什么使用CNN

卷积神经网络主要用于提取卷积对象的局部特征,当卷积对象是自然语言文本时,比如一个句子,此时其局部特征是特定的关键词或关键短语,所以利用卷积神经网络作为特征提取器时相当于词袋模型,表示一个句子中是否出现过特定的关键词或关键短语。用在分类任务上,相当于提取出对于分类最有用的特征信息。

相比其他模型,卷积神经网络的参数更少。还有一个优点是CNN不存在序列依赖问题,可以并行计算。

二、CNN原理简介

以早期将CNN引入NLP的一篇工作为例(EMNLP 2014. Convolutional Neural Networks for Sentence Classification),进行讲解。

CNN介绍及代码实现

我们将上图分成4部分,分别进行介绍:

第一部分,将句子“wait for the video and do n’t rent it”向量化。利用word embedding的方法得到每个词x i 的向量表示,向量的维度为k。对于长度为n的句子,其向量表示如下(即n*k的矩阵):

CNN介绍及代码实现

这里的static channel和non-static channel分别指词向量固定(即在训练过程中不进行调节)和词向量更新(通过反向传播进行fine-tuning)。

第二部分,带有多个卷积核的卷积层以及特征映射。图中红颜色和黄颜色的虚线代表着卷积操作提取出来的特征,映射得到的输出。图示中展示了4个卷积核。下面介绍一下卷积操作的公式:

CNN介绍及代码实现

对于包含h个单词的滑动窗口,其数学符号表示为x i:i+h-1 。w表示卷积核,每次通过滑动h个单词,得到特征c i 。每个卷积核对句子进行h个单词的窗口滑动,分别得到对应的特征映射。

CNN介绍及代码实现

第三部分,最大池化。本文采用的是最大池化的方法,还可以采用平均池化。针对每个卷积核得到的特征映射向量,从中分别挑选出最大的值。这种想法的出发点是提取出每个特征映射中最重要的信息,池化过程还可以应对句子长度可变的情况。

CNN介绍及代码实现

第四部分,全连接层。将池化层得到的特征通过全连接softmax层后,能够得到每个类别的概率。

三、CNN代码实现样例

代码地址: https://github.com/Shijihao/CNN_for_classification

3.1 模型搭建

CNN介绍及代码实现

CNN介绍及代码实现

示例代码使用了两个卷积核,卷积核的滑动窗口分别为2个词和3个词。本示例的数据采用的是MR数据(Movie Review Data),该数据用于情感分析任务,利用电影评论文本进行情感极性(positive或negtive)的分类。

3.2 模型训练

CNN介绍及代码实现

3.3 模型测试

CNN介绍及代码实现

CNN介绍及代码实现

CNN介绍及代码实现

四、总结

本文介绍了卷积神经网络模型如何与NLP任务相结合的早期运用。随着近几年的不断发展,CNN模型不断完善,也出现了一系列的改进,例如可以用dilated卷积、增加网络深度等方法捕获长距离依赖特征。感兴趣的读者可参阅参考资料中的相关文献。

五、参考资料

[1]  KIM Y. Convolutional Neural Networks for Sentence Classification[C]//Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP). Association for Computational Linguistics, 2014: 1746–1751.

[2]  YU F, KOLTUN V. Multi-scale context aggregation by dilated convolutions[J]. arXiv preprint arXiv:1511.07122, 2015.

[3]  KALCHBRENNER N, ESPEHOLT L, SIMONYAN K et al. Neural Machine Translation in Linear Time[J]. CoRR, 2016, abs/1610.10099.

[4]  GEHRING J, AULI M, GRANGIER D et al. Convolutional Sequence to Sequence Learning[C]//PRECUP D, TEH Y W. Proceedings of the 34th International Conference on Machine Learning. International Convention Centre, Sydney, Australia: PMLR, 2017, 70: 1243–1252.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

一目了然

一目了然

Robert Hoekman, Jr. / 段江玲 / 机械工业出版社华章公司 / 2012-3-19 / 59.00元

可用性或易用性是软件或Web设计师的重要设计目标之一。本书深入阐述了如何设计出简单易用的基于Web的软件,以帮助读者理解、掌握显性设计的精髓。作者从软件开发初期谈起,一直到软件设计后期,分析诸多案例并论证了自己的见解或设计原则。本书在第1版的基础上进行了重大改进,尤其是在设计思想上,作者在本书中谈到“以用户为中心的设计”、“以任务为中心的设计”以及“以情景为中心的设计”的理念。这种设计理念也将更直......一起来看看 《一目了然》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具