[机智的机器在学习] 常用网络层总结之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 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

使用深度学习来理解道路场景

语义分割是深度学习的方法之一,通过语义分割,我们可以对图片中的每一个像素赋予含义,即将像素划分到一个预先设定的类中。从上边的 GIF 图可以看出,我们在语义切分...

13920
来自专栏新智元

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

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

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

谱聚类、Chameleon聚类、PCCA、SOM、Affinity Propagation

层次聚类和K-means聚类,可以说是聚类算法里面最基本的两种方法(wiki的cluster analysis页面都把它们排前两位)。这次要探讨的,则是两个相...

43530
来自专栏新智元

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

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

32060
来自专栏算法channel

机器学习|kaggle数据挖掘和求解的基本步骤

01 — 数据探索(Exploratory Data Analysis) 对数据进行探索性的分析,通常会用 pandas 来载入数据,并做一些简单的可视化来理解...

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

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

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

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

一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉

交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用...

43760
来自专栏奇点大数据

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

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

41760
来自专栏人工智能LeadAI

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

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

38170
来自专栏ATYUN订阅号

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

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

56130

扫码关注云+社区

领取腾讯云代金券