什么是卷积神经网络

  卷积神经网络是一种特殊的、简化的深层神经网络模型,它的每个卷积层都是由多个卷积滤波器组成。它最先由lecun在LeNet[40]中提出,网络结构如下图所示。在cnn中,图像的一小部分(局部感受区域)作为层级结构的最低层的输入,信息再依次传输到不同的层,每层通过多个卷积滤波器去获得观测数据的最显著的特征。

  卷积神经网络中的每一个特征提取层(卷积层)都紧跟着一个用来求局部平均与二次提取的计算层(pooling层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。如下图所示,就是一个完整的卷积过程。

它的特殊性体现在两点:

(1)局部感受野(receptive field),cnn的神经元间的连接是非全连接的;

(2)同一层中同一个卷积滤波器的权重是共享的(即相同的)。

局部感受野和权重共享这两个特点,使cnn网络结构更类似于生物神经网络,降低了网络模型的复杂度,减少了神经网络需要训练的参数的个数。

CNN在文本上的应用

  卷积神经网络在image classify和image detect上得到诸多成功的应用,后文将再详细阐述。但除了图片外,它在文本分析上也取得一些成功的应用。

  基于CNN,可以用来做文本分类,情感分析,本体分类等。传统文本分类等任务,一般基于bag of words或者基于word的特征提取,此类方法一般需要领域知识和人工特征。利用CNN做,方法也类似,但一般都是基于raw text,CNN模型的输入可以是word series,可以是word vector,还可以是单纯的字符。比起传统方法,CNN不需要过多的人工特征。

  将word series作为输入,利用CNN做文本分类。如下图所示,该CNN很简单,共分四层,

  第一层是词向量层,doc中的每个词,都将其映射到词向量空间,假设词向量为k维,则n个词映射后,相当于生成一张n*k维的图像;

  第二层是卷积层,多个滤波器作用于词向量层,不同滤波器生成不同的feature map;

  第三层是pooling层,取每个feature map的最大值,这样操作可以处理变长文档,因为第三层输出只依赖于滤波器的个数;

  第四层是一个全连接的softmax层,输出是每个类目的概率。

  除此之外,输入层可以有两个channel,其中一个channel采用预先利用word2vec训练好的词向量,另一个channel的词向量可以通过backpropagation在训练过程中调整。这样做的结果是:在目前通用的7个分类评测任务中,有4个取得了state-of-the-art的结果,另外3个表现接近最好水平。

  附:一种简单的cnn结构,一层convolution+一层pooling。来自Yoon Kim(2014)的论文。

  首先做一些符号说明:输入是词向量Xi(长度是k),句子向量Xi:n是词向量的级联(拼接成长向量),filter是w,可看成一个滑动窗口,这里的w是向量,长度是hk(滑动窗口包含h个词)。

  利用cnn做文本分类,还可以考虑到词的顺序。利用传统的”bag-of-words + maxent/svm”方法,是没有考虑词之间的顺序的。文献中提出两种cnn模型:seq-cnn, bow-cnn,利用这两种cnn模型,均取得state-of-the-art结果。

  将doc character作为输入,利用CNN做文本分类。文献介绍了一种方法,不利用word,也不利用word vector,直接将字符系列作为模型输入,这样输入维度大大下降(相比于word),有利于训练更复杂的卷积网络。对于中文,可以将汉字的拼音系列作为输入。

参考文献

【1】Convolutional Neural Networks for Sentence Classification

【CNN】卷积神经网络的更多相关文章

  1. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

    http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...

  2. [转]Theano下用CNN(卷积神经网络)做车牌中文字符OCR

    Theano下用CNN(卷积神经网络)做车牌中文字符OCR 原文地址:http://m.blog.csdn.net/article/details?id=50989742 之前时间一直在看 Micha ...

  3. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  4. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

    https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...

  5. CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM

    http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...

  6. day-16 CNN卷积神经网络算法之Max pooling池化操作学习

    利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...

  7. cnn(卷积神经网络)比较系统的讲解

    本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之 ...

  8. Keras(四)CNN 卷积神经网络 RNN 循环神经网络 原理及实例

    CNN 卷积神经网络 卷积 池化 https://www.cnblogs.com/peng8098/p/nlp_16.html 中有介绍 以数据集MNIST构建一个卷积神经网路 from keras. ...

  9. TensorFlow——CNN卷积神经网络处理Mnist数据集

    CNN卷积神经网络处理Mnist数据集 CNN模型结构: 输入层:Mnist数据集(28*28) 第一层卷积:感受视野5*5,步长为1,卷积核:32个 第一层池化:池化视野2*2,步长为2 第二层卷积 ...

  10. tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图

    tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图 因为很多 demo 都比较复杂,专门抽出这两个函数,写的 demo. 更多教程:http://www.tensorflown ...

随机推荐

  1. eclipse安装activiti designer

    方法一:在线安装(可能因网络等原因安装失败) 打开eclipse,在Help->Install New Software后的弹出窗点击add按钮.  在弹出窗口的文本框里输入一下内容 Name: ...

  2. Linux下出现command not found的解决办法

    不管是普通用户还是ROOT用户,修改~/.bash_profile文件,在文件最后加上:export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/u ...

  3. 远程首次连接mysql速度慢的解决方法:skip-name-resolve取消DNS的反向解析(转)

    PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的 MYSQL开启了DNS的反向解析,在MY.INI(WINDOW ...

  4. jquery ajax 回调函数的值alert出来[object Object] 解决方法

    $("#activity_project").change(function(){ var pro=$("#activity_project").val(); ...

  5. 域名 ip地址 端口号

    域名默认指定一个ip地址 当用域名访问网站的时候 网站会默认给个端口号80 或者自己指定 其他的 例如数据库 也是会给端口号 例如mysql 3306 域名:80 是访问iis 网站域名:3306 是 ...

  6. numpy中的np.random.mtrand.RandomState

    1 RandomState 的应用场景概述 在训练神经网络时,苦于没有数据,此时numpy为我们提供了 “生产” 数据集的一种方式. 例如在搭建神经网络(一)中的 4.3 准备数据集 章节中就是采用n ...

  7. mysql join left join区别

    mysql默认的join是inner join,inner join 和 left join的区别看图:

  8. oracle数据库rman异地恢复

    自己想做两组rac之间的data guard,由于datafile,controlfile,甚至是archivelog都是存放在asm上的,直接复制数据有点不现实,asm磁盘总归都是要用的,所以想从a ...

  9. [转]什么是C++虚函数、虚函数的作用和使用方法

    我们知道,在同一类中是不能定义两个名字相同.参数个数和类型都相同的函数的,否则就是“重复定义”.但是在类的继承层次结构中,在不同的层次中可以出现名字相同.参数个数和类型都相同而功能不同的函数.例如在例 ...

  10. Java 8 flatMap example

    Java 8 flatMap example In Java 8, Stream can hold different data types, for examples: Stream<Stri ...