[机智的机器在学习] 常用网络层总结之CNN篇

卷积神经网络(CNN)由输入(Inputs)、卷积层(Convolutions layer)、激活层(Activation)、池化层(Pooling layer)和全连接层(Fully Connected, FC)成。这句话的意思是CNN里面可以有这些层,但是每种网络层(Layer)的个数理论上是可以任意多个的。这也就有了后来的AlexNet,GoogLeNet,ResNet等著名的网络结构,后面我会选择一两个介绍下吧。他们的主要区别就在于Layer的深度不一样,也就是Layer的数量。一般来说Layer越深,能学习到的特征就越多。但是Layer越多需要的数据量就越大,需要的计算资源也就更多。但是近几年大量可获得的数据的出现(ImageNet Datasets),更牛皮的GPU (NVIDIA),促进了Layer向更深的方向发展。

今天呢我还是会再举个栗子,通过下面这张图,把CNN涉及到的网络层逐一介绍一些前两篇关于CNN入门中没有提到的一些细节。

图1:卷积神经网络细节图(来源于网络)

我们从左往右逐个先大概浏览一下,首先是一张31x39x1大小的一张灰度图,然后通过4个Convolution layer,3个Pooling layer, 一个FC,最后是一个用于分类的SoftMax layer。如果换做彩色图,也是可以的,对于灰度图和彩色图处理上的区别,可能就在于最开始的通道数(channel number)不一样,其实并不影响什么,通过卷积之后得到的特征图(FeatureMaps),其实就是通道(channel)。

1. Inputs-->Convolutional layer1-->max-Pooling1

输入是一张图片,然后对他做一系列的处理计算,最后就能知道它是什么,比如说可以知道它是一个人头像的照片。

然后我们看一下细节的东西,图片的中间有一个4x4x1大小的卷积核。通过Convolutional layer 1得到一个28x36x20大小的Feature Maps。这里有个公式之前提到过,就是(31-4+1)x(39-4+1)=28x36。如果图片大小和卷积核大小变了,还是一样的计算方法哈。这里是没有加边缘的,就是之前提到过得Zero Padding,后面遇到了再说细节。为什么是20个Feature Maps呢?是因为它用了20个4x4大小的卷积核对图像做卷积处理。为什么要用20个呢?是因为特征图越多,可以学习到的特征就越多。那可不可以用更大的数字?可以的。但是不保证效果一定就好。

还是那句话,deep learning是一门实验性极强的学科,参数的设置都是要通过具体的问题,经过多次实验最终得到的。所以说做deep learning是一个很费时间,资源的工作。还记得我刚开始要学deep learning的时候,有人就说不建议一个人去搞这个,最好有个团队,因为无论从硬件和软件,都是一个挑战,我敢说国内很多大学的实验室,是没有相关的计算资源的。当时我就不明白为啥一个人不行,所以我傻乎乎的坚持学,哎,想想那个过程,都是泪!!!如果你现在的状态和我开始的时候是一样的,我建议keep going,you can do it better ! 打好基础,问题会一步步解决的!卷积层就说到这,下面再看一下Pooling。

你可能也注意到了,这张图写的Max-Pooling,也叫最大值池化。那有没有别的Pooling?有。还有一种但没有Max更常用的叫做均值Pooling,Mean-Pooling。从名称上应该就能体会到他们的区别,MaxPooling呢就是取池化窗口(Pooling Window)中最大的那个值最为新的值,MeanPooling呢就是取平均值。上图的Pooling Window的池化大小(Pooling size)是2x2,也就是一个window里面有4个值,对吧,然后max一下,就是把最大的取出来。先别想整幅图,就看这个2x2大小的图,Pooling之后相当于把长和宽都取了一半,对不对?2x2取最大值,那不就剩下1个数了,1个就是1x1大小。那么对于整副图来说,图片的大小也就变为原来的一半。那么问题来了,为什么要做Pooling?不做行不行?

一般来说,Pooling可以减小输入的大小,加速模型的训练过程。但是这样做会不会造成信息的损失呢?损失肯定是有的,但是相比如训练时间以及最后的准确度,这点损失几乎可以忽略。为什么可以忽略?那是因为图片具有“静态性”的属性,简单说就是一副图片相邻区域的特征几乎一样,想想实际生活中的图片正是这样的,你懂的!

然后说了这么多,貌似没有提到Activation,Activation一般是加在Convolutional后面,Activation的作用呢就是激活。怎么理解激活呢,从神经学的角度来说,有些神经元通过卷积之后可能就died了,所以激活一下,让他活过来。好了别闹了,我们处理的是图片,明显是无生命的东西。从数学的角度讲,Activation就是为了把一些丢失的值给变回来,来弥补Convolutional造成的信息的损失, Activation通常有很多种做法,不同的做法对应不同的激活函数(Activationfunction)。常见的之前提到过,比如softmax,relu,Leak relu,tanh,sigmoid等。区别是什么呢?这个各位看官自己去查一下吧,不难,就是几个数学公式,我举个栗子吧,不想单独讲一次了。比如我们的relu,公式是

F(x) = max(0, x)

是不是很简单!relu就是把输入x和0比较一下,取最大值,说白了就是把正数保留,负数变为0。函数图像就不画了,但是各位要去看一下哦~。

图2: (./copy图1.sh )(方便看)

2. Convolutional layer 4--> Deephidden identity features

在这个之前把1 Inputs-->Convolutional layer1-->max-Pooling1再double一下就可以了,计算方法完全一样,其实你也可以triple kill,quadruple kill,甚至 penta kill一下。都是没得问题的。只不过需要注意的是,不论你用什么框架,TensorFlow,Keras,还是Caffe,还是别的,都要注意他们先后的参数设置,要保证正确。如果不正确就会导致前一个Layer的输出无法作为后一个Layer的输入,说白了就是要匹配。如果不懂,可以去尝试写n个这样的循环,先不考虑最后分类的结果怎么样,n你自己定,然后你就明白了。(为了让大家动手写,我也是操碎了心呐!)

到了Convolutional 4的时候,原始图片变为了80个1x2的Feature Maps。最后这个FC稍微有点特殊,特殊之处在于他的一部分是Convolutional layer 4,一部分是Max-Pooling layer 3。暂且可以不考虑那么多,就说Convolutionallayer 4,他经过FC之后,变为80x2x1=160维特征的一个特征向量。Deep hidden identity features就是经过前面这一系列完美(乱七八糟)的计算得到的深层的关于输入图像的特征。到这里应该明白了什么是FC,简单说就是把上一个layer的特征全部铺平(Dense)了。

关于特征(Features)其实坑点也挺多的,在Machine Learning里面Feature selection 也是一个重要的课题,后面再讲吧。最后面的那个Soft-max layer,就是把FC做一个多分类回归,关于soft-max分类呢,他是sigmoid的一个推广,sigmoid一般解决二分类问题,而soft-max呢是多分类。细节请关注后续分享!

最后在说一句,今天的分享是为了补前俩天拉下的东西,本来昨天是要分享的,结果生活出了点bug,导致我经过26+个小时的连续作战,最终于9点多到家,吃了饭就去休息了,所以就没写,请大家见谅!然后呢,听说长得帅的看官已经share给小伙伴了 !

“五一”这三天就不更新了,祝大家过一个开心,快乐,开心,快乐,开心,快乐的假期! 好日子分享给大家, hhahah

下期写什么呢, 下期写一下今天没有提到的其他的Layer!敬请关注!!!

原文发布于微信公众号 - 机器学习和数学(ML_And_Maths)

原文发表时间:2017-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏奇点大数据

生成对抗网络(GAN)的直观介绍

原文来源:freeCodeCamp 作者:Thalles Silva 让我们假设这样一种情景:你的邻居正在举办一场非常酷的聚会,你非常想去参加。但有要参加聚会...

3926
来自专栏新智元

【邓侃】DeepMind 机器理解文本 NLP 技术复现与解析

【新智元导读】 本文对 DeepMind 的让计算机读懂文本、回答问题的深度学习技术进行复现与解析。文章对DeepMind的整个技术思路进行了清晰的重构:从问...

3106
来自专栏AI科技大本营的专栏

硬货 | 一文了解深度学习在NLP中的最佳实践经验和技巧

编译 | AI科技大本营(rgznai100) 参与 | JeyZhang,鸽子 在NLP社区中曾流行着这样一个玩笑,说是一个带注意力机制的LSTM模型在任何的...

3004
来自专栏深度学习自然语言处理

【收藏版】长文详解基于并行计算的条件随机场

之前写过CRF的详解,只是为了让大家详细了解下原理,但是那种是没有优化的,速度很慢。在实际应用中,还是需要用到batch,也就是需要用到GPU的,那么此时并行计...

782
来自专栏AI研习社

为什么ResNet和DenseNet可以这么深?一文详解残差块为何有助于解决梯度弥散问题

传统的“提拉米苏”式卷积神经网络模型,都以层叠卷积层的方式提高网络深度,从而提高识别精度。但层叠过多的卷积层会出现一个问题,就是梯度弥散(Vanishing),...

3455
来自专栏新智元

【中秋赏阅】美丽的神经网络:13种细胞构筑的深度学习世界

【新智元导读】人是视觉动物,因此要了解神经网络,没有什么比用图将它们的形象画出来更加简单易懂了。本文囊括 26 种架构,虽然不都是神经网络,但却覆盖了几乎所有常...

3496
来自专栏机器人网

【深度学习】详细的神经网络架构图

将这些架构绘制成节点图的一个问题:它并没有真正展示这些架构的工作方式。比如说,变自编码器(VAE)可能看起来和自编码器(AE)一样,但其训练过程却相当不同。训练...

3526
来自专栏ATYUN订阅号

【深度学习】AI如何用文字表达情绪——使用人工神经网络进行带情感识别的文本分类

本文将带你尝试,不使用文本复杂的矩阵转换将文本分类。本文是对3种方法的综合描述和比较,这些方法被用来对下面这些数据的文本进行分类。完整的代码可以在下面链接找到。...

3763
来自专栏ATYUN订阅号

OpenAI提出比GAN更具优势的可逆生成模型Glow

Glow,一种使用可逆1×1卷积的可逆生成模型。它扩展了以前的可逆生成模型,简化了架构。模型可以生成逼真的高分辨率图像,支持高效采样,并发现可用于操纵数据属性的...

1403
来自专栏大数据挖掘DT机器学习

逻辑回归之基础知识及手写数字识别实例

作者:daniel-D 原文:http://www.cnblogs.com/daniel-D/   这学期 Pattern Recognition 课程的 p...

7429

扫码关注云+社区