【CNN】卷积神经网络
什么是卷积神经网络
卷积神经网络是一种特殊的、简化的深层神经网络模型,它的每个卷积层都是由多个卷积滤波器组成。它最先由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】卷积神经网络的更多相关文章
- Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...
- [转]Theano下用CNN(卷积神经网络)做车牌中文字符OCR
Theano下用CNN(卷积神经网络)做车牌中文字符OCR 原文地址:http://m.blog.csdn.net/article/details?id=50989742 之前时间一直在看 Micha ...
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文, ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM
http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...
- day-16 CNN卷积神经网络算法之Max pooling池化操作学习
利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...
- cnn(卷积神经网络)比较系统的讲解
本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之 ...
- Keras(四)CNN 卷积神经网络 RNN 循环神经网络 原理及实例
CNN 卷积神经网络 卷积 池化 https://www.cnblogs.com/peng8098/p/nlp_16.html 中有介绍 以数据集MNIST构建一个卷积神经网路 from keras. ...
- TensorFlow——CNN卷积神经网络处理Mnist数据集
CNN卷积神经网络处理Mnist数据集 CNN模型结构: 输入层:Mnist数据集(28*28) 第一层卷积:感受视野5*5,步长为1,卷积核:32个 第一层池化:池化视野2*2,步长为2 第二层卷积 ...
- tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图
tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图 因为很多 demo 都比较复杂,专门抽出这两个函数,写的 demo. 更多教程:http://www.tensorflown ...
随机推荐
- IT公司管理发展经验
2012-11-14 内容存档在evernote,笔记名"IT公司管理发展经验"
- 【ASP.NET】ASP.NET中权限验证使用OnAuthorization实现
在项目开发中,通常我们都会涉及到用户登录才能访问的网页,比如购物网站,我们浏览商品,添加购物车(以前开发的时候在这里就需要登录用户,但是现在有了缓存的实现,这里可以将商品加入缓存,等到结账的时候再登录 ...
- 【jquery】$(document).ready() 与window.onload的区别
Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1)执行时间 wind ...
- MongoDB学习笔记(6)--find
MongoDB 查询文档 MongoDB 查询文档使用 find() 方法. find() 方法以非结构化的方式来显示所有文档. 语法 MongoDB 查询数据的语法格式如下: db.collecti ...
- SharePoint 2013创建WCF REST Service
SharePoint 2013为开发者提供了丰富的REST API,方便了我们在客户端操作List中的数据.当然我们也可以在SharePoint 2013中创建自定义的REST Service,比如通 ...
- Android颜色值(RGB)所支持的四种常见形式
Android中颜色值是通过红(Red).绿(Green).蓝(Blue)三原色,以及一个透明度(Alpha)值来表示的,颜色值总是以井号(#)开头,接下来就是Alpha-Red-Green-Blue ...
- grafana + influxdb + telegraf
grafana + influxdb + telegraf , 构建性能监控平台http://www.cnblogs.com/Scissors/p/5977670.html https://docs. ...
- xcode6 怎样下载ios7模拟器
1. 怎样下载ios7模拟器 点击xcode.选择"Preferences".选择"downloads",就能够看见IOS 7.1,只是下载有点慢. 2. 怎样 ...
- pyqt5开发环境安装
1.下载所需软件. Anaconda下载地址:https://repo.continuum.io/archive/ PyQt5下载地址:https://sourceforge.net/projects ...
- sql server获取时间格式
在本文中,GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate() 用DateName()就可以获得相应的年.月.日,然后再把它们连接起来就可以了: ...