Machine Learning & Data Analysis822思享实验室人工智能/模式识别/机器学习精华专题

神经网络体系搭建(三)——卷积神经网络

2018-01-16  本文已影响135人  刘开心_8a6c

本篇是神经网络体系搭建的第三篇,解决体系搭建的卷积神经网络相关问题,详见神经网络体系搭建(序)

卷积神经网络(CNN)

卷积神经网络.png

CNN是什么

卷积神经网络是一种空间上共享参数的神经网络。

为什么会有CNN

像素间具有临近性,图片中相邻像素在一起时有特殊意义的,但是普通非卷积网络中忽略了这一点,把输入图片的每个像素与下一层的神经元相连,没有利用好这些信息,于是有了卷积神经网络。

CNN基本思想是什么

比如图片识别。卷积神经网络模仿人识别图片(狗)的一种方法:先是特定部位,比如鼻子、嘴、眼睛……把这些拼起来得到一条狗。
卷积神经网络相似,它自己通过正向和反向传播学习识别基本的直线,曲线,然后是形状,点块,然后是图片中更复杂的物体。最终 CNN 分类器把这些大的,复杂的物体综合起来识别图片。

CNN是如何工作的

How CNN works(图片来源于优达学城)
一句话讲就是,训练时候不断将图细化,自己学习特征,得到分类器。

第一个大正方体(256x265xRGB)代表一张有三个色彩通道的图片,是输入height、wide、depth分别是256,256和3。

取图片一小块1,运行一个有k2个输出的小网络,在不改变权重3的情况下,把小网络滑过4整张图片,得到一幅新图,就是第二个正方体(128x128x16),k就是depth。这个过程就是卷积。通过卷积操作不断挤压空间维度,增加深度信息,在最后放置一个分类器,根据信息进行分类。

如何得到patch/kernel呢?

使用“滤波器(Filter)”,滤波器和patch的大小一样,“照”在patch上,在图片上滑过的就是滤波器。

通常会有多个滤波器,不同滤波器提取一个 patch 的不同特性。例如,一个滤波器寻找特定颜色,另一个寻找特定物体的特定形状。卷积层滤波器的数量被称为滤波器深度
——来自优达学城

每个patch与下一层的多少个神经元相连呢?

这取决于滤波器的深度,如果深度是 k,我们把每个 patch 与下一层的 k 个神经元相连。这样下一层的高度就是 k。

为什么让1个patch连k个神经元呢?
因为一个patch可以有多个可供提取的特点。

为什么要权重共享呢?
可以控制神经网络使用的内存空间。

比如识别一张照片中的猫,猫的位置是不重要的,如果网络要识别猫在左上角的情况或者右上角的情况,那工作量就很大了。当知道输入可能包含相同类型的信息时,可以共享权重,并利用这些输入共同训练权重。

可以做这样的计算:
假设H = height, W = width, D = depth

输入数据:

输出层:

没有参数共享每个输出层的神经元必须连接到滤波器的每个神经元此外每个输出层的神经元必须连接到一个偏置神经元

则卷积层有总共有(8 * 8 * 3 + 1) * (14 * 14 * 20) = 756560个参数。

有了参数共享,每个输出通道的神经元与相同通道的其它神经元共享权值。参数的数量与滤波器神经元的数量相同,加上偏置,再乘以输出层的通道数。

则卷积层总计有 (8 * 8 * 3 + 1) * 20 = 3840 + 20 = 3860个参数。是之前的196分之一。

CNN中如何计算卷积层的输出维度

理解维度可以帮你在模型大小和模型质量上,做精确的权衡。

假设H = height, W = width, D = depth

我们有

计算新的高度和宽度的公式是:
new_height = (input_height - filter_height + 2 * P)/S + 1
new_width = (input_width - filter_width + 2 * P)/S + 1

则卷积层输出的维度为14x14x20

CNN的常见优化方法有什么

池化

我们通过调整步幅(stride),将过滤器(filter)每次移动几个像素的方法来降低特征图的尺寸,如果我们不采用每次移动多个像素的方法,而是每次依然移动很小的步幅,比如一个像素,但是把每个相邻的所有卷积通过某种操作结合在一起,这种操作就叫做池化。

通常把相邻卷积结合在一起的方式有:

池化层的优点有:

近期,池化层不是很受青睐,因为:

  • 现在数据集越来越大,我们更担心欠拟合的问题
  • Dropout是一个更好的正则化方法
  • 池化导致信息损失。比如n个数字的最大池化,只保留了1个数字,其余n-1个全部丢失。
    ——来自优达学城
1x1卷积

为什么要用1x1卷积呢?


传统卷积(图片来源于优达学城课程)

传统的卷积,它基本是运行在一小块图像上的线性分类器,但如果在中间加一个1x1卷积,就用运行在一小块图像上的神经网络,代替了线性分类器。


添加1x1卷积(图片来源于优达学城课程)

在卷积操作中散步一些1x1卷积是一种使模型变更深的低耗高效的办法,并且含有更多参数,但未完全改变神经网络结构。

Inception模块

神经网络的每一层,都可以选择进行池化、卷积运算,Inception模块不限于单个卷积运算,而是将多个模块组合,如下图:


Inception(图片来源于优达学城课程)

它看起来很复杂,但是根据你选择参数的方式,模型的参数总数可能非常少,但性能比使用简单卷积时要好。

常见的CNN网络结构有哪些?

CNN优化的超参数有哪些?

除了前几篇网络的一系列可调参数外还有:

问题回答

至此,卷积神经网络的骨架搭建完毕。


以上内容来自822实验室神经网络知识分享
我们的822,我们的青春
欢迎所有热爱知识热爱生活的朋友和822思享实验室一起成长,吃喝玩乐,享受知识。

上一篇下一篇

猜你喜欢

热点阅读