【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 ...
随机推荐
- java 记录一下socket的server与client
package com.test.server; import java.io.IOException; import java.net.ServerSocket; import org.apache ...
- Redis学习之路(004)- 报错及问题
在i配置编译的过程中,遇到一下问题: 1. /redis_test: error while loading shared libraries: libhiredis.so.0.13: cannot ...
- idea上activiti插件的安装及使用
最近做的东西需要用到activiti,做个笔记 首先下载activti插件- actiBPM File - settings-plugins-Browse-Repositories 搜索 actiBP ...
- ActiveX IE保护模式下的低权限操作路径及Windows操作系统特殊路径
参考理解IE保护模式:https://blog.csdn.net/xt_xiaotian/article/details/5336809 文件帮助类: public class FileHelp { ...
- thinkphp日志分析
#!/usr/bin/perl -w use strict; use warnings; use Tie::File; #### # Thinkphp日志分析 # 日志基本格式:{$now} &quo ...
- shell value too great for base
今天同步文件的时候发现了这个问题: 原因是: tar_file_month=`date +%m` rsync -auzq --exclude=))"]" 当月是8月,tar_fil ...
- HTML <video> 标签
http://www.w3school.com.cn/tags/tag_video.asp <%@ Page Language="VB" AutoEventWireup=&q ...
- High-speed Charting Control--MFC绘制图表(折线图、饼图、柱形图)控件
原文地址:https://www.codeproject.com/articles/14075/high-speed-charting-control 本文翻译在CodeProject上的介绍(主要还 ...
- ekho安装及测试(中文文字转语音)
1. 官网下载源码包 地址:http://www.eguidedog.net/ekho.php 2. 安装 xz -d ekho-7.5.tar.xz tar -xvf ekho-7.5.tar ap ...
- Linux中SFTP命令
sftp和ftp是两种协议是不同的,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动. 1.常用登陆方式: 格式:sftp <user>@< ...