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

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 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张鹏宇的专栏

深度学习基础概念笔记

学习 tensorflow,caffe 等深度学习框架前,需要先了解一些基础概念。本文以笔记的形式记录了一个零基础的小白需要先了解的一些基础概念。

1.1K1
来自专栏CVer

大牛分享 | 基于深度学习的目标检测算法综述(一)

目标检测(Object Detection)是计算机视觉领域的基本任务之一,学术界已有将近二十年的研究历史。近些年随着深度学习技术的火热发展,目标检测算法也从基...

2596
来自专栏SIGAI学习与实践平台

理解生成模型与判别模型

我们都知道,对于有监督的机器学习中的分类问题,求解问题的算法可以分为生成模型与判别模型两种类型。但是,究竟什么是生成模型,什么是判别模型?不少书籍和技术文章对这...

1082
来自专栏数据科学与人工智能

【机器学习】机器学习之组合算法总结

组合模型 下面简单的介绍下Bootstraping, Bagging, Boosting, AdaBoost, RandomForest 和Gradient b...

26210
来自专栏MelonTeam专栏

深度学习基础概念笔记

导语 学习tensorflow,caffe等深度学习框架前,需要先了解一些基础概念。本文以笔记的形式记录了一个零基础的小白需要先了解的一些基础概念。 ...

1697
来自专栏磐创AI技术团队的专栏

干货 | 基于深度学习的目标检测算法综述(一)

目标检测(Object Detection)是计算机视觉领域的基本任务之一,学术界已有将近二十年的研究历史。近些年随着深度学习技术的火热发展,目标检测算法也从基...

1872
来自专栏Echo is learning

machine learning 之 logistic regression

711
来自专栏奇点大数据

最新训练神经网络的五大算法

作者: Alberto Quesada 译者: KK4SBB 神经网络模型的每一类学习过程通常被归纳为一种训练算法。训练的算法有很多,它们的特点和性能各不相同...

3824
来自专栏AI科技评论

干货 | 深度学习时代的目标检测算法

AI 科技评论按:本文作者 Ronald,首发于作者的知乎专栏「炼丹师备忘录」,AI 科技评论获其授权转发。 目前目标检测领域的深度学习方法主要分为两类:two...

5357
来自专栏SIGAI学习与实践平台

目标检测算法中检测框合并策略技术综述

物体检测(Object Detection)的任务是找出图像或视频中的感兴趣目标,同时实现输出检测目标的位置和类别,是机器视觉领域的核心问题之一,学术界已有将近...

864

扫码关注云+社区