快速了解卷积神经网络(参考花书)

卷积神经网络

简介

卷积网络(convolutional network)(LeCun, 1989),也叫做 卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。例如时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格)和图像数据(可以看作是二维的像素网格)。卷积网络在诸多应用领域都表现优异。“卷积神经网络’’ 一词表明该网络使用了 卷积(convolution)这种数学运算。卷积是一种特殊的线性运算。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络

CNN就是著名的卷积神经网络,是一种前馈神经网络。

CNN不同于传统的神经网络只有线性连接,CNN包括卷积(convolution)操作、汇合(pooling)操作和非线性激活函数映射(即线性连接)。
经典的CNN网络有Alex-Net、VGG-Nets、Resnet等。
深度学习在计算机图像识别上的应用非常成功。利用深度学习,我们能够对图片进行高精度识别,实现这一功能的,主要依靠神经网络中的一种分支,名为卷积网络。卷积网络与我们前面实现的网络不同之处在于,它可以直接接受多维向量,而我们以前实现的网络只能接收一维向量。
来自八斗人工智能课程
卷积操作,其实是把一张大图片分解成好多个小部分,然后依次对这些小部分进行识别。

通常我们会把一张图片分解成多个33或55的”小片“,然后分别识别这些小片段,最后把识别的结果集合在一起输出给下一层网络。

这种做法在图象识别中很有效。因为它能对不同区域进行识别,假设识别的图片是猫脸,那么我们就可以把猫脸分解成耳朵,嘴巴,眼睛,胡子等多个部位去各自识别,然后再把各个部分的识别结果综合起来作为对猫脸的识别。
在这里插入图片描述
当我们的图片(黑白图片厚度为1 ,彩色图片厚度为3)输入到神经网络后,我们会通过卷积神经网络将图片的长和宽进行压缩,然后把厚度增加。最后就变成了一个长宽很小,厚度很高的像素块。然后结果放入普通的神经网络中处理,最后链接一个分类器,从而分辨出图片是什么。

重要思想

卷积运算通过三个重要的思想来帮助改进机器学习系统: 稀疏交互(sparse
interactions)、 参数共享(parameter sharing)、 等变表示(equivariant representations)。

传统的神经网络使用矩阵乘法来建立输入与输出的连接关系。其中,参数矩阵中每一个单独的参数都描述了一个输入单元与一个输出单元间的交互。这意味着每一个输出单元与每一个输入单元都产生交互。然而,卷积网络具有 稀疏交互(sparse interactions)(也叫做 稀疏连接(sparse connectivity)或者 稀疏权重(sparse weights))的特征。这是使核的大小远小于输入的大小来达到的。举个例子,当处理一张图像时,输入的图像可能包含成千上万个像素点,但是我们可以通过只占用几十到上百个像素点的核来检测一些小的有意义的特征,例如图像的边缘。这意味着我们需要存储的参数更少,不仅减少了模型的存储需求,而且提高了它的统计效率。这也意味着为了得到输出我们只需要更少的计算量。

参数共享(parameter sharing)是指在一个模型的多个函数中使用相同的参数。在传统的神经网络中,当计算一层的输出时,权重矩阵的每一个元素只使用一次,当它乘以输入的一个元素后就再也不会用到了。作为参数共享的同义词,我们可以说一个网络含有 绑定的权重(tied weights),因为用于一个输入的权重也会被绑定在其他的权重上。在卷积神经网络中,核的每一个元素都作用在输入的每一位置上(是否考虑边界像素取决于对边界决策的设计)。卷积运算中的参数共享保证了我们只需要学习一个参数集合,而不是对于每一位置都需要学习一个单独的参数集合。这虽然没有改变前向传播的运行时间(仍然是 O(k × n)),但它显著地把模型的存储需求降低至 k 个参数,并且 k 通常要比 m 小很多个数量级。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

池化

卷积网络中一个典型层包含三级(如图9.7 所示)。在第一级中,这一层并行地计算多个卷积产生一组线性激活响应。在第二级中,每一个线性激活响应将会通过一个非线性的激活函数,例如整流线性激活函数。这一级有时也被称为 探测级(detectorstage)。在第三级中,我们使用 池化函数(pooling function)来进一步调整这一层的输出。
池化函数使用某一位置的相邻输出的总体统计特征来代替网络在该位置的输出。例如, 最大池化(max pooling)函数 (Zhou and Chellappa, 1988) 给出相邻矩形区域内的最大值。其他常用的池化函数包括相邻矩形区域内的平均值、L2 范数以及基于据中心像素距离的加权平均函数。
不管采用什么样的池化函数,当输入作出少量平移时,池化能够帮助输入的表示近似 不变(invariant)。对于平移的不变性是指当我们对输入进行少量平移时,经过池化函数后的大多数输出并不会发生改变。图 9.8 用了一个例子来说明这是如何实现的。局部平移不变性是一个很有用的性质,尤其是当我们关心某个特征是否出现而不关心它出现的具体位置时。例如,当判定一张图像中是否包含人脸时,我们并不需要知道眼睛的精确像素位置,我们只需要知道有一只眼睛在脸的左边,有只在右边就行了。

卷积操作产生了太多的数据,如果没有max pooling对这些数据进行压缩,那么网络的运算量将会非常巨大,而且数据参数过于冗余就非常容易导致过度拟合。

卷积核

图片的采样器也可以叫做共享权值,用来在图片上采集信息。卷积核有自己的长宽,也可以定义自己的步长stride ,每跨多少步进行一次抽离信息,跨的步长越多就越容易丢失图片信息。然后对抽取的信息进行像素的加权求和得到Feature Map 增加了采集结果的厚度。

总而言之 卷积是用来不断的提取特征,每提取一个特征就会增加一个feature map,所以采集后的图片厚度不断变厚

高斯滤波、sobel滤波等等是设定好卷积核的滤波方法。如果不是由人来设计一个滤波器,而是从一个随机滤波器开始,根据某种目标、用某种方法去逐渐调整它,直到它接近我们想要的样子呢?
这就是卷积神经网络的思想了。

可调整的滤波器是CNN的“卷积”那部分;如何调整滤波器则是CNN的“神经网络”那部分。

卷积神经网络VS全连接神经网络

  1. 它不是全连接的:右层的神经元并非连接上全部输入,而是只连接了一部分。这里的一部分就是输入图像的一个局部区域。我们常听说 CNN 能够把握图像局部特征、alphaGO 从棋局局部状态提取信息等等,就是这个意思。这样一来权值少了很多,因为连接少了。
  2. 权值其实还更少,因为每一个神经元的9个权值都是和其他神经元共享的。全部n*n个神经元都用这共同的一组9个权值。那么这个神经网络其实一共只有9个参数需要调整

数据预处理–图像增强

图像增强表示的是,在原始图像的基础上,对数据进行一定的改变,增加了数据样本的数量,但是数据的标签值并不发生改变。

图像增强分为两种:

  • 增强“自我”:通过一定手段将感兴趣区域增强,直至从图像中脱颖而出的那种,也是正常思维下常用的方法。
  • 削弱“别人”:是增强“自我”的反方法,指的是通过一定手段将不感兴趣区域削弱,直至感兴趣区域脱颖而出。

图像增强常用方法:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值