卷积神经网络的特点和应用

1. 概念

英文名:convolutional neural network

是一种前馈神经网络,即表明没有环路,普通神经网络的 BP 算法只是用于方便计算梯度,也是前馈神经网络。

是深度学习结构的一种,是一种深度、前馈神经网络。

可以使用 BP 算法进行训练

ConvNet architectures make the explicit assumption that the inputs are images, which allows us to encode certain properties into the architecture

卷积神经网络的前提:输入是二维结构或者三维结构,但起比较大作用的是空间维度(spacial),深度那一维并没有太明显的作用。

1.1 空间维度 spacial

是宽和高,不包含深度

1.2 什么是卷积

https://www.zhihu.com/question/22298352

这条知乎解释得非常清楚!

卷积的离散和连续解释,其实就是求和符号和积分符号换一下而已

CNN 中卷积的体现在于,在神经元的感受野里的输入和权重滤波器做点积,然后权重滤波器对整个输入在空间维度上一边移动一边做点积,然后求和,所以跟一般的卷积是在时间上移动不同的是,这里是在空间上移动。

这是二维离散卷积的表达方式,因为权重滤波器是在空间上移动,空间上是有高和宽两个维度的

1.3 滤波器和输出数据体

滤波器是权重滤波器,是待学习的参数

输出数据体才是卷积层神经元

不同的滤波器的权重不同,表达的是对图片要素的关注点不同,比如说如果某个滤波器对红色敏感,即对于红色的像素点会有正向输出,那么扫描一张大部分是红色的图片的时候,该滤波器得到的 activation map 会有大面积的正向输出。所以说,滤波器是不同的特征提取器。

1.4 卷积层的输出

滤波器在输入数据体空间上移动,得到一张 activation map,多个滤波器(个数是超参数)都与输入数据体进行卷积,会得到多张在深度方向上堆叠在一起的 activation maps,然后呢,下一层的滤波器会把这些 activation maps 的结果相结合作为输入,而不是把一个滤波器在空间移动后的点积结果相加,因为滤波器在扫描完整个输入体之后,得到的是一张 activation map,而不是一个值哦!所谓卷积中移动求和的概念,应该是体现在把点积的结果汇聚成一张 activation map,这也算是求了个和吧!然后一个卷积层的输出就是多个 maps 在深度方向上的叠加。

一张 activation map 其实就是滤波器权重参数与小块输入的点积+偏置,然后组在一起!

activation map 其实是这样的:

如图所示:28×28 个神经元的输出,每个神经元都只看它的感受野的输入,每个神经元的权重和偏置相同。神经元的输出也是 wx+b

上面的图只说明了一张 activation map,其实多张 activation maps 就是深度方向上堆叠在一起的神经元的输出,只不过深度方向上的神经元不会共享权重和偏置,但深度方向上重叠的神经元的感受野是一样的。

1.5 图片的表达转换

原始图像假如是一个 32×32×3 的输入数据体,经过一层卷积层的输出(假设有 6 个 3×3×3 的滤波器 with pading1),则变成了一个 32326 的输出数据体,也就是说,图片的表达由原来的输入数据体来表达,变成了现在的输出数据体来表达。

1.6 参数的个数

每一个卷积层的参数个数是(滤波器的感受野×输入深度+1)×滤波器个数,比如滤波器的感受野是 3×3×3,个数是 6,则这一层卷积层的参数个数是(9+1)×6=60 个,其中加的那个 1 是偏置,也就是说一个输出数据体的整个深度切片上的神经元共享同一个权重向量,和同一个偏置,不同的深度切片的权重和偏置不同

1.7 卷积层总结

卷积层接受 W1×H1×D1 的输入数据体(width, height, depth)

卷积层输出 W2×H2×D2 的输出数据体

需要 4 个超参数:K\F\S\P

K 代表滤波器个数,F 是神经元视野即滤波器大小,S 是 stride 步长,P 是 padding

根据超参数,可以由输入数据体的大小,计算出输出数据体的大小

W2=(W1-F+2P)/S+1

H2=(H1-F+2P)/S+1

D2=K

因为参数共享,因此总共有 F.F.D1.K 个权重和 K 个偏置参数

1.8 补充

sc231n 视频中补充了一些可以进行卷积层计算的 API,其中提到一些计算框架

Torch 是一个科学计算框架,内置大量的机器学习算法,GPU first 特性。LuaJIT 语言接口,底层是 C/CUDA 实现。Torch – provides a Matlab-like environment for state-of-the-art machine learning algorithms in lua (from Ronan Collobert, Clement Farabet and Koray Kavukcuoglu)

Caffe 是一个深度学习框架,Caffe -Caffe is a deep learning framework made with expression, speed, and modularity in mind

Lasagne 是 Theano 中的一个轻量级的库,用于建立和训练神经网络

Theano – CPU/GPU symbolic expression compiler in python (from MILA lab at University of Montreal)。Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently

2. 池化层 pooling layer

max pooling 和 average pooling 是两种常见的方法

输入的数据体是 W1×H1×D1,输出数据体是 W2×H2×D2

超参数有两个 F/S,F 是 spacial extent,S 是 stride 即步长

W2=(W1-F)/S+1

H2=(H1-F)/S+1

D2=D1

没有参数,因为 pooling layer 计算的是 a fixed function of the input

对 pooling layers,不常用 zero padding

3. full connecting layer

最后是一个 spacial size 减少,但深度依然是滤波器个数的全连接层,这一层的数据体会全部和输出进行全连接

4. ReLU 层

无论是教学视频还是学习资料里都提到了 ReLU 层,这其实让人难以理解,至少给我带来了困扰,因为 ReLU 只不过是一种神经元激活函数而已,后来经过和大家的讨论,得出的结论是:其实就是卷积层的神经元的激活函数是 ReLU 函数而已,即 f(W×X+b) 中的 f,其中 W 和 X 之间是卷积而不是传统 MLP 中的点积。

5. case study

AlexNet -> ZFNet -> VGGNet -> GoogLeNet -> ResNet

6. 趋势

目前的趋势是使用更小的 filter 和更深的结构

另外一个趋势是抛弃 pooling 和 FC 层,只留下 CONV 层

7. 讨论

根据另一个同学的学习结论,CNN 不但可以运用于图像,还可以运用于 NLP 即自然语言处理,不过在卷积层的参数设置,以及池化层的参数设置上有些不同,如下图所示。这是对自然语言语句进行二分类的 CNN 结构图,论文是《ASensitiveAnalysisOfCNNForSentenceClassification》。

①滤波器的空间视野,宽度需要与词向量的长度一致,高度可以自由调节,由高度的不同形成多个卷积层,同样的高度下可以由滤波器个数这个超参数形成多个 activation maps

②图中的步长为 1,因此绿色的高度为 3 的滤波器得到的 activation map 的高度就为 5,黄色的高度为 2 的滤波器得到的 activation map 的高度就为 6,这里的图像可以认为是侧面视角,宽度与滤波器宽度一致,看不到而已。

③池化层是 1-max pooling,即整张 activation map 中只选择一个最大值!因此从 6 张 activation map 中就产生了一个一元的特征向量

④最后的 softmax 层就是把这个一元的特征向量作为输入,用来得到句子的类别

除了这些参数外,论文中还提出了一些有趣的结论,这里不一一列举,具体看论文:

①滤波器的视野(高度)选择,最好选择效果最好值的紧邻值,比如说 7 效果最好,那么就没有必要尝试 2,应该尝试 6 和 8 作为下一个卷积层的视野高度

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

管蓉的专栏

1 篇文章1 人订阅

我来说两句

2 条评论
登录 后参与评论

相关文章

来自专栏云时之间

深度学习与TensorFlow:理解卷积神经网络

在之前我们学习好搭建全连接神经网络后,今天让我们继续学习去搭建卷积神经网络,并且来使用mnist进行手写数字识别.

1765
来自专栏SnailTyan

ImageNet Classification with Deep Convolutional Neural Networks——AlexNet论文翻译——中文版

ImageNet Classification with Deep Convolutional Neural Networks 摘要 我们训练了一个大型深度...

25910
来自专栏专知

【干货】深入理解变分自编码器

【导读】自编码器是一种非常直观的无监督神经网络方法,由编码器和解码器两部分构成,自编码器近年来很受研究人员的欢迎。本文是机器学习工程师Jeremy撰写的一篇非常...

3545
来自专栏机器之心

学界 | 图神经网络+池化模块,斯坦福等提出层级图表征学习

近年来人们开发图形神经网络的兴趣持续激增。图形神经网络即可以在如社交网络数据 [16,21,36] 或基于图形的分子表征 [7,11,15] 的图形结构数据上运...

751
来自专栏AI研习社

Kaggle Carvana 图像分割比赛冠军模型 TernausNet 解读

AI 研习社按:2017 年 7 月,美国二手汽车零售平台 Carvana 在知名机器学习竞赛平台 kaggle 上发布了名为 Carvana 图像掩模大挑战赛...

3576
来自专栏人工智能头条

深度学习中的注意力机制

2951
来自专栏郭耀华‘s Blog

【NLP】Attention Model(注意力模型)学习总结

  最近两年,注意力模型(Attention Model)被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中,是深度学习技术中最值得关注...

792
来自专栏人工智能

Coursera吴恩达《卷积神经网络》课程笔记(1)-卷积神经网络基础

推荐阅读时间:8min~15min 主要内容:卷积神经网络 《Convolutional Neural Networks》是Andrw Ng深度学习专项课程中的...

1859
来自专栏新智元

计算成本降低35倍!谷歌发布手机端自动设计神经网络MnasNet

【新智元导读】神经结构自动搜索是最近的研究热点。谷歌大脑团队最新提出在一种在移动端自动设计CNN模型的新方法,用更少的算力,更快、更好地实现了神经网络结构的自动...

471
来自专栏人工智能LeadAI

用于语义分割的全卷积网络

? 摘要 卷积网络在特征分层领域是非常强大的视觉模型。我们证明了经过端到端、像素到像素训练的卷积网络超过语义分割中最先进的技术。我们的核心观点是建立“全卷积”...

3685

扫码关注云+社区