Task7.卷积神经网络
卷积定义:
所谓卷积,其实是一种数学运算。但是在我们的学习生涯中,往往它都是披上了一层外衣,使得我们经常知其然不知其所以然。比如在信号系统中,他是以一维卷积的形式出现描述系统脉冲响应。又比如在图像处理中,他是以二维卷积的形式出现,可以对图像进行模糊处理。乍一看,两个形式风马牛不相及,但其实他们的本质都是统一的。可见,我们看待事物不仅要看他们的表象,还要从表象中分辨出他们的本质。下面进入正题。
卷积网络,也叫卷积神经网络(CNN),是一种专门依赖处理具有类似网络结构的数据的神经网络。卷积是一种特殊的线性运算。卷积网络是指那些至少在网络的一层中使用卷积运算来代替一般的矩阵乘法运算的神经网络。
卷积运算,在通常形式中,卷积是对两个变体函数的一种数学运算数据是。卷积运算对输入数据应用滤波器,例子:输入数据是有高长方向的形状的数据,滤波器也一样,有高长方向上的维度,假设用height,weight,表示数据和滤波器的形状,“核”又称滤波器。卷积运算以一定间隔滑动滤波器的窗口并应用,将各个位置上的滤波器的元素 和输入的对应元素相乘,然后现求和(有时这个运算称为乘积累积运算),然后,将这个结果保存到输出的对应位,将这个过程在所有位置都进行一遍,就可以得到卷积运算的输出。
卷积运算的动机:
卷积运算通过三个重要的思想来帮助改进机器学习系统:稀疏交互、参数共享、等变表示。另外,卷积提供了一种处理大小可变的输入的方法。卷积网络具有稀疏交互(也叫稀疏连接或者稀疏权重)的特征。
稀疏连接
传统神经网络使用矩阵乘法建立输入与输出的连接关系。参数矩阵的每一个单独的参数都描述了一个输入单元与一个输出单元间的交互。卷积网络通过使核的大小远小于输入的大小来达到稀疏连接的目的。
如果有m个输入和n个输出,矩阵乘法需要m*n个参数。如果限制每一个输出拥有的连接数为k,那么稀疏的连接方法只需k*n个参数。
参数共享
• 在卷积层中每个神经元连接数据窗的权重是固定的,每个神经元只关注一个特性。神经元就是图像处理中的滤波器,比如边缘检测专用的Sobel滤波器,即卷积层的每个滤波器都会有自己所关注一个图像特征,比如垂直边缘,水平边缘,颜色,纹理等等,这些所有神经元加起来就好比就是整张图像的特征提取器集合。
• 需要估算的权重个数减少: AlexNet 1亿 => 3.5w
• 一组固定的权重和不同窗口内数据做内积: 卷积
等变表示
对于卷积,参数共享的特殊形式使得神经网络具有对平移等变的性质。如果一个函数满足输入改变,输出也以同样的方式改变,就说它是等变的。 卷积对其他的一些变换并不是天然等变的,例如对于图像的放缩或旋转变换,需要其他的机制来处理这些变换。
---------------------
作者:Element简
来源:CSDN
原文:https://blog.csdn.net/yanyiting666/article/details/88547000
版权声明:本文为博主原创文章,转载请附上博文链接!
卷积运算:
这里的蓝色矩阵就是输入的图像,粉色矩阵就是卷积层的神经元,这里表示了有两个神经元(w0,w1)。绿色矩阵就是经过卷积运算后的输出矩阵,这里的步长设置为2。
蓝色的矩阵(输入图像)对粉色的矩阵(filter)进行矩阵内积计算并将三个内积运算的结果与偏置值b相加(比如上面图的计算:2+(-2+1-2)+(1-2-2) + 1= 2 - 3 - 3 + 1 = -3),计算后的值就是绿框矩阵的一个元素。
卷积动态显示:
尺寸计算:
池化
池化的作用:
池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。
简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。
这里再展开叙述池化层的具体作用。
1. 特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。
2. 特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。
3. 在一定程度上防止过拟合,更方便优化。
池化是缩小高、长方向上的空间的运算。pooling的结果是使得特征减少,参数减少,但pooling的目的并不仅在于此。pooling目的是为了保持某种不变性(旋转、平移、伸缩等)。
池化分类:
常用的有mean-pooling,max-pooling和Stochastic-pooling三种。mean-pooling,即对邻域内特征点只求平均,max-pooling,即对邻域内特征点取最大。根据相关理论,特征提取的误差主要来自两个方面:(1)邻域大小受限造成的估计值方差增大;(2)卷积层参数误差造成估计均值的偏移。
mean-pooling能减小第一种误差(邻域大小受限造成的估计值方差增大),更多的保留图像的背景信息,
max-pooling能减小第二种误差(卷积层参数误差造成估计均值的偏移),更多的保留纹理信息。
Stochastic-pooling则介于两者之间,通过对像素点按照数值大小赋予概率,再按照概率进行亚采样,在平均意义上,与mean-pooling近似,在局部意义上,则服从max-pooling的准则。
文本分类任务
文本分类的应用非常广泛,如:
垃圾邮件分类:2分类问题,判断邮件是否为垃圾邮件
情感分析:2分类问题:判断文本情感是积极还是消极;多分类问题:判断文本情感属于{非常消极,消极,中立,积极,非常积极}中的哪一类。
新闻主题分类:判断一段新闻属于哪个类别,如财经、体育、娱乐等。根据类别标签的数量,可以是2分类也可以是多分类。
自动问答系统中的问句分类
社区问答系统中的问题分类:多标签多分类(对一段文本进行多分类,该文本可能有多个标签),如知乎看山杯
让AI做法官:基于案件事实描述文本的罚金等级分类(多分类)和法条分类(多标签多分类)
判断新闻是否为机器人所写:2分类
不同类型的文本分类往往有不同的评价指标:
- 2分类:accuracy,precision,recall,f1-score...
- 多分类(单标签多分类):Micro-Averaged-F1,Macro-Averaged-F1...
- 多标签多分类:Jaccard相似系数...
TextCNN原理概述
卷积神经网络主要是用于解决计算机视觉方面的任务。在本篇博客中我们将演示如何在自然语言处理任务---文本分类中使用卷积神经网络CNN,这里的文本可以一个句子,文档(短文本,若干句子)或篇章(长文本),因此每段文本的长度都不尽相同。在对文本进行分类时,我们一般会指定一个固定的输入序列/文本长度:该长度可以是最长文本/序列的长度,此时其他所有文本/序列都要进行填充以达到该长度;该长度也可以是训练集中所有文本/序列长度的均值,此时对于过长的文本/序列需要进行截断,过短的文本则进行填充。总之,要使得训练集中所有的文本/序列长度相同,该长度除之前提到的设置外,也可以是其他任意合理的数值。在测试时,也需要对测试集中的文本/序列做同样的处理。
假设训练集中所有文本/序列的长度统一为n,我们需要对文本进行分词,并使用词嵌入得到每个词固定维度的向量表示。此时对于一段文本,我们的输入就可以表示为一个n*d的数字矩阵,类似于图像分类任务中的图像。我们曾使用过CNN处理图像分类任务,类似的,接下来我们看一下如何用CNN进行文本分类。
TextCNN处理步骤
embedding--->conv--->(activation)--->max pooling--->fully connected layer-------->softmax/sigmoid
首先我们要对输入矩阵进行卷积操作。我们可以使用不同大小的卷积核,每种类型的卷积核可以有多个。假设卷积核的大小是(f,d),f可以是不同的取值(如f=2,3,4),而d是固定的,是词向量的维度,并且假设总共使用了k个卷积核,步长为1。经过卷积操作后我们会得到k个向量,每个向量的长度是n-f+1. 我们使用不同大小的卷积核,从输入文本中提取丰富的特征,这和n-gram特征有点相似(f=2,3,4分别对应于2-gram,3-gram-4-gram)。
接下来,我们对卷积操作的输出进行max-pooling操作。作用于k个长度为n-f+1的向量上,最每个向量整体取最大值,得到k个标量数字。
然后把k个标量数字拼接起来,组成一个向量表示最后提取的特征。他的长度是固定的,取决于我们所使用的不同大小的卷积核的总数。
最后在接一个全联接层作为输出层,如果是2分类的话使用sigmoid激活函数,多分类则使用softmax激活函数,得到模型的输出。
https://blog.csdn.net/yanyiting666/article/details/88547000
https://www.cnblogs.com/skyfsm/p/6790245.html
https://blog.csdn.net/sdu_hao/article/details/88066203
Task7.卷积神经网络的更多相关文章
- 卷积神经网络提取特征并用于SVM
模式识别课程的一次作业.其目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个.图片大小为16x16.要求必须使用SVM作为二分类的分类器. 本文重点是如何使用卷积神经网络(CNN)来提取 ...
- tensorflow学习笔记五:mnist实例--卷积神经网络(CNN)
mnist的卷积神经网络例子和上一篇博文中的神经网络例子大部分是相同的.但是CNN层数要多一些,网络模型需要自己来构建. 程序比较复杂,我就分成几个部分来叙述. 首先,下载并加载数据: import ...
- Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...
- [DL学习笔记]从人工神经网络到卷积神经网络_2_卷积神经网络
先一层一层的说卷积神经网络是啥: 1:卷积层,特征提取 我们输入这样一幅图片(28*28): 如果用传统神经网络,下一层的每个神经元将连接到输入图片的每一个像素上去,但是在卷积神经网络中,我们只把输入 ...
- [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法
前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...
- lecture5-对象识别与卷积神经网络
Hinton第五课 突然不知道object recognition 该翻译成对象识别好,还是目标识别好,还是物体识别好,但是鉴于范围性,还是翻译成对象识别吧.这一课附带了两个论文<Convolu ...
- Deep learning with Theano 官方中文教程(翻译)(四)—— 卷积神经网络(CNN)
供大家相互交流和学习,本人水平有限,若有各种大小错误,还请巨牛大牛小牛微牛们立马拍砖,这样才能共同进步!若引用译文请注明出处http://www.cnblogs.com/charleshuang/. ...
- [转]Theano下用CNN(卷积神经网络)做车牌中文字符OCR
Theano下用CNN(卷积神经网络)做车牌中文字符OCR 原文地址:http://m.blog.csdn.net/article/details?id=50989742 之前时间一直在看 Micha ...
- Caffe(卷积神经网络框架)介绍
Caffe(卷积神经网络框架)Caffe,全称Convolution Architecture For Feature Extraction caffe是一个清晰,可读性高,快速的深度学习框架.作者是 ...
随机推荐
- python 调用C++ DLL,传递int,char,char*,数组和多维数组
ctypes 数据类型和 C数据类型 对照表 ctypes type C type Python type c_bool _Bool bool (1) c_char char 1-character ...
- 第三方框架:EventBus
1 研发背景 案例:我们在主页点收藏按钮,未登录状态,跳登录界面,在登录界面跳注册页面,注册成功,关闭注册页面,关闭登录页面,回到主页,刷新item列表和登录状态. 我们一般会用到发送广播和接收广播来 ...
- VUE 全局监听sessionStorage变化
在做项目的时候,可能需要在其他模块获取推送的信息或者变量,但是数据量或者说数目少,而且项目中也没有引用VUEX,那么可以下手的方法之一也就是sessionStorage类的浏览器存储了. 首先在全局的 ...
- 【SD系列】SAP SD和QM模块常用bapi
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP SD和QM模块常用bapi ...
- MyBatis Generator 生成的example 使用 and or 简单混合查询
MyBatis Generator 生成的example 使用 and or 简单混合查询 参考博客:https://www.cnblogs.com/kangping/p/6001519.html 简 ...
- 前端项目中使用jsencrypt进行字段加密
前端项目中使用jsencrypt进行字段加密. 使用步骤:①获取公钥②实例化对象③设置公钥④将所需数据进行加密然后返回. 进行一个简单的封装如下 /** * npm install jsencrypt ...
- 使用Vsftpd服务(匿名访问模式、本地用户模式)
FTP协议占用两个端口号: 21端口:命令控制,用于接收客户端执行的FTP命令. 20端口:数据传输,用于上传.下载文件数据.. FTP数据传输的类型: 主动模式:FTP服务端主动向FTP客户端发起连 ...
- [Git] 004 初识 Git 与 GitHub 之查看历史记录
在 GitHub 的 UI 界面使用 Git 查看历史纪录 1. 右侧有个 history 2. 点击后跳转页面 3. 点击相应标题(commit 时写的),进入相应版本(历史) 4. 我选择了 I ...
- Nacos1.1.3小试牛刀
什么是 Nacos(摘自https://nacos.io/zh-cn/docs/quick-start.html) Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性 ...
- Navicat批量导出mysql的DDL语句
工作中有的时候需要将某个库中的表.视图.函数.存储过程等创建语句导出,又不需要表中的数据.同时最好放在同一个文件里面,这样方便拷贝. 方法一:需要拷贝的创建语句条数不多,不至于让你拷到头脑发晕的地步, ...