CNN 是卷积神经网络,通常用于图像领域,并且在图像分类取得非常好的效果。2014 年 Yoon Kim 在论文《Convolutional Neural Networks for Sentence Classification》中将 CNN 的思想应用到文本处理中,后续很多把 ConvNet 用在 NLP 任务上的工作都是基于这篇论文进行的。

1. CNN 文本分类模型

本文主要是对原始论文《Convolutional Neural Networks for Sentence Classification》内容的整理,首先了解 CNN 文本分类模型整体结构,下图是论文中的模型图。

CNN 文本分类模型

可以看到模型比较简单,主要分为四个部分:输入层、卷积层、最大池化层、全连接层。

1.1 输入层

给定一个句子,输入层接收的输入是一个句子单词词向量矩阵 XX 是一个 (n×k) 的矩阵,n 表示句子中单词数量,k 表示词向量维度。可以看到 X 的每一行对应了一个单词的词向量,而单词的词向量按照它们在句子中的顺序进行排列。

1.2 卷积层

在得到输入的词向量矩阵 X 之后,需要对 X 进行卷积操作。卷积核是一个 (h×k) 的矩阵,注意卷积核的列数是固定的 (为 k),与词向量维度一样。卷积核不断地向下移动,得到卷积后的值。

卷积核

因为卷积核的列数与词向量矩阵 X 是一样的,所以经过卷积后的 feature map 也只有一列。有多个卷积核会生成多列向量,如下图所示,下图为 4 个卷积核卷积后的输出。

卷积后的输出

1.3 最大池化层

在卷积层中,多个不同的卷积核会生成多列向量 (feature map),最大池化会取出每一列中的最大值,最终形成一个一维向量。

1.4 全连接层

最后一层是全连接层,全连接层使用了 Dropout 防止过拟合,然后利用 Softmax 进行分类。

2. 模型的其他细节

2.1 使用多个不同尺寸的卷积核

刚刚我们了解到这个模型的卷积核列数必须为 k,但是其高度 (行数) 是可以变的,在使用的过程中可以采用不同高度的卷积核进行卷积操作,如下图所示。

采用不同尺寸的卷积核

2.2 模型的变种

作者在论文中还提出了模型的 4 种变种

  • CNN-rand,单词的词向量是随机初始化的,并且在训练的过程中不断地更新。
  • CNN-static,使用已经训练好的词向量,例如 Word2Vec,并且在后续训练中保持词向量不变。
  • CNN-non-static,与 CNN-static 类似,都是使用已经训练好的词向量,但是在后续的训练中还会继续微调词向量。
  • CNN-multichannel,使用两套词向量,均是用 Word2Vec 进行初始化,其中一套词向量在训练中保持不变,另一套会在训练中微调。输入的句子可以获取两种不同的词向量。可以理解为类似图像中的 RGB 通道,在这里两个通道分别表示两种词向量。

下图是 4 种模型的结果,可以看到 CNN-static 比 CNN-rand 效果更好,说明使用预训练的词向量比较有效;另外 CNN-non-static 比 CNN-static 效果要好,说明微调会使词向量更加适合当前任务。在实验中 CNN-multichannel 通常在小数据集效果更好。

4 种 CNN 模型的效果

3. CNN 文本分类总结

CNN 用于 NLP 任务中与 N-Gram 有相似之处,我们定义卷积核的高度为 3,则相当于使用卷积核在句子中进行一个 3-Gram 的操作,同时 CNN 具有很高的效率,比传统 N-Gram 要快很多。

CNN 中的卷积核宽度要与词向量的维度一样大,并且卷积核是在句子中单词的方向上进行移动的。

参考文献

1.论文:Convolutional Neural Networks for Sentence Classification

https://aclweb.org/anthology/D14-1181

2.Understanding Convolutional Neural Networks for NLP

http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/

cnn输入层_基于 CNN 的文本分类算法相关推荐

  1. cnn输入层_一文掌握CNN卷积神经网络

    学习目录 阿力阿哩哩:深度学习 | 学习目录​zhuanlan.zhihu.com 我们在4.2节讲到了神经网络已经逐步成为人类智能生活的璀璨明珠,并介绍了全连接神经网络的整个训练过程,整个流程紧凑而 ...

  2. 连通域最小外接矩形算法原理_基于分割的文本检测算法之PSENet/PAN/DBNet

    1. 文本检测难点 文本内包含文本,艺术字体,任意方向 ,曲线文字 ,多语言,其他环境因素等是文本检测中的难点 2. 分割 问题1: 语义分割模型是对pixel进行分类,所以理论上讲,可以检测不规则的 ...

  3. 基于支持向量机的文本分类算法研究(三)—— 核函数文本分类性能评价指标(stitp项目)

    3 核函数评价指标 核函数评价指标,即准确率(P).召回率®和 F1 值,通过这几个数值,可以直观的反映核函数的性能,也使得支持向量机核函数评价科学化.准确化.本次实验函数从特征值 1000循环五十次 ...

  4. 基于支持向量机的文本分类算法研究(一) —— 支持向量机及核函数背景(stitp项目)

    1 前言 上世纪90年代,Vapnik率先提出了用于分类的支持向量机方法(也称支持向量分类算法),接下的几年中,又提出了用于回归的支持向量机方法(也称支持向量回归算法).支持向量机(SVM)是在统计学 ...

  5. cnn输入层_多尺度CNN特征图的分析与应用

    本文适用于那些参与CNN架构设计的工程师和研究人员,他们厌倦了盲目尝试和错误,可以从CNN主干中选择哪些特征图以改善其模型的性能,而宁愿从早期开始设计过程的步骤,以使特征图的空间比例轮廓与训练数据集中 ...

  6. cnn输入层_完全使用忆阻器实现CNN,清华大学微电子所新研究登上Nature

    不久之前,清华大学微电子所等机构在 Nature 上发表文章,展示了他们完全基于硬件的卷积神经网络(CNN)实现.他们构建的基于忆阻器的五层 CNN 在 MNIST 手写数字识别任务中实现了 96.1 ...

  7. 基于神经网络的文本分类算法

    文章目录 1.文件介绍 2.核心算法 cnn算法 3.操作步骤 1.预处理数据 2.生成数据集 3.执行训练 4.执行预测 5.框架安装方法 6.代码测试 模型:infer_model 模型:infe ...

  8. 基于支持向量机的文本分类算法研究(二) —— 支持向量核函数介绍(stitp项目)

    2 支持向量机核函数 支持向量机的理论基础(凸二次规划)决定了它最终求得的为全局最优值而不是局部最优值,也保证了它对未知样本的良好泛化能力.支持向量机是建立在统计学习理论基础之上的新一代机器学习算法, ...

  9. python中文文本分析_基于CNN的中文文本分类算法(可应用于垃圾邮件过滤、情感分析等场景)...

    基于cnn的中文文本分类算法 简介 参考IMPLEMENTING A CNN FOR TEXT CLASSIFICATION IN TENSORFLOW实现的一个简单的卷积神经网络,用于中文文本分类任 ...

  10. 从零开始构建基于textcnn的文本分类模型(上),word2vec向量训练,预训练词向量模型加载,pytorch Dataset、collete_fn、Dataloader转换数据集并行加载

    伴随着bert.transformer模型的提出,文本预训练模型应用于各项NLP任务.文本分类任务是最基础的NLP任务,本文回顾最先采用CNN用于文本分类之一的textcnn模型,意在巩固分词.词向量 ...

最新文章

  1. zerodivisionerror什么意思python-Python 中的 else详解
  2. Device Tree(三):代码分析【转】
  3. VMWare 安装 Eclipse
  4. 推荐系统知识梳理——协同过滤
  5. Smarty模板引擎技术二
  6. python 构造函数_Python和其他编程语言的代码对比
  7. UVA 557 Burger
  8. java生成字符_java中随机生成字符串的方法(三种)
  9. Linux下clock计时函数学习
  10. word 2007为不同页插入不同页眉页脚
  11. 射频电路设计中的热量分析
  12. Java NIO 详解
  13. mysql 一张表连两次_MySQL查询两次和双表联查哪个效率高
  14. 《嵌入式 – GD32开发实战指南》第9章 呼吸灯
  15. unity导出fbx模型_三维制作内容,maya模型贴图文件导入untiy,烘焙灯光贴图
  16. 50个最新TypeScript面试题合集 – TypeScript开发教程
  17. 用VBA做的excel仿方方格子的批量合并单元格的宏
  18. STM32 IAP升级(bootLoader)
  19. 【JavaScript】关于[object Object]
  20. 不忘初心,牢记使命!

热门文章

  1. 【路径规划】基于matlab麻雀算法求解机器人栅格地图最短路径规划问题【含Matlab源码 1582期】
  2. 【TWVRP】基于matlab节约算法求解带时间窗的电动车路径规划问题【含Matlab源码 1169期】
  3. 【物理应用】基于matlab波数谱计算【含Matlab源码 508期】
  4. uni 登录token方法_uniapp如何检验用户是否登录
  5. Mybatis 传参问题
  6. 孙正义宣布回购55亿美元股票,软银股价创10年最大单日涨幅...
  7. 传统HTML页面实现模块化加载
  8. 【python】面向对象编程
  9. 为什么AI需要的是角色扮演,而不是象棋和围棋?
  10. Dagger2 知识梳理(3) 使用 dependencies 和 @SubComponent 完成依赖注入