人人都能读懂卷积神经网络:Convolutional Networks for everyone

【导读】近日,Rohan Thomas发布一篇博文,通俗地讲解了卷积神经网络的结构、原理等各种知识。首先介绍了卷积神经网络(CNN)和人工神经网络(ANN)的不同,然后详细解释了卷积神经网络的各种概念:卷积核、pooling层、激活函数、全连接层、过拟合等问题,最后用python实现一个MNIST分类的CNN结构。整体而言,博文的写作风格通俗易懂,旨在为读者提供易于理解的CNN教程,对CNN不太了解的读者千万不可错过。专知内容组编辑整理。


  

Convolutional Networks for everyone


构建卷积神经网络(CNN)并不是一项巨大挑战,并不是只有数据科学家和机器学习工程师才可以做到。对于了解它的架构的人,很容易通过实现它来解决相应的人工智能(AI)或机器学习(ML)问题。

 

这篇博文使深度学习架构易于理解,而不涉及太多的数学解释。


卷积网络的人工神经网路



 


来源: https://goo.gl/aX44Z1


在ANN中有一个输入层,其中输入将是输入向量的长度(例如,28×28 = 784个神经元)。 让我们来看卷积网络与人工神经网络的不同之处。


CNN的网络结构与ANN有什么不同



 

1. ConvNet体系结构明确地规定输入是图像。

 

2. 它们的体系结构不同于前馈神经网络,通过减少要学习的参数数量来提高它们的效率。

 

3. 在ANN中,如果你有一个150x150x3的图像,第一个隐藏层中的每个神经元将有67500个权重。

 

4. ConvNets具有神经元的三维输入,一个层中的神经元只连接到之前层的一个小区域。

 

ConvNets



 

ConvNet层中的神经元有三个维度:高度,宽度,深度。

 

这里的深度并不是整个网络的深度。它是指层的第三维,因此是激活体积(activationvolumes)的第三维。


本质上,ConvNet由层组成,且具有简单API——用一些可微函数(可能具有参数,可能没有参数),将三维输入体积转换为三维输出体积。

 

来源: StanfordUniversity (https://goo.gl/rHmTSP)


CNN中的层



 

  • 输入层 - 包含高度x宽度x深度(R,G,B)

  • 卷积层 - 连接到输入图像的一小部分

  • 激活函数 - 在CNN层中使用的RELU激活函数

  • 池化层 - 用于在宽度,高度上进行下采样

  • 全连接层

 

CNN结构




source : MathWorks (https://goo.gl/zondfq)

 

核或过滤器



  

来源: Stanford University (https://goo.gl/g8FV4M)


一个过滤器由一个权重向量来表示,我们将其与输入图像进行卷积。 您可以增加输入上的过滤器数量,以增加您获得的激活映射的数量。 每个过滤器都会产生一个激活映射。

 

你得到的每个激活映射都试图学习图像的不同方面,如边缘、颜色斑点等。

 

如果在32x32x3的图像卷积上实现了12个大小为5x5x3的过滤器,则第一个卷积层在某些条件下将具有28x28x12的大小。

 

几个过滤器被用来提取NNet的卷积层中的几个特征。 3X3矩阵的一个步骤就叫做“步幅”。


激活函数




激活函数通常是一个单元格中动作潜在的速率的抽象表示。

 

主要有线性激活和非线性激活。没有非线性激活的神经网络将非常强大。 引入非线性的激活函数是必需的。


调整的线性单元层(ReLU)



 

和前馈神经网络一样,Convnet中激活层的目的是引入非线性。

R(z)= max(0,z)是用于RELU激活的等式。 考虑两个正数和一个负数


Positive(正数)
R(1) =max(0,1) = 1 → Postive 输出

Negative(负数)

R(-1) = max(0,-1) = 0 → Negative 输出

它减少了网络中的参数数量,从而使其能够学得更快。

 

Softmax 激活

Softmax是逻辑激活函数,用于多类别分类

 

Softmax函数应用于网络的最后一层,用于预测类别的最大概率。


Pooling Layer




来源: Wiki (https://goo.gl/snMC4o)


来源: Towards Data Science (https://goo.gl/xohkdV)

  

pooling用于在深度不变的前提下,对图像的宽度,高度进行下采样。 主要有三种类型的pooling。 最小值pooling,最大值pooling,平均值pooling。


pooling层独立地在每个深度层面上独立工作,使用指定的数学运算(例如MAX或者Avg)来调整层的大小。


全连接层



 

最后,经过多个卷积和最大pooling层后,神经网络中的高层推理通过全连接层完成。正如常规神经网络中所见,全连接层中的神经元与前一层中的所有激活都有连接。因此可以用一个矩阵乘法和一个偏置(bias)偏移来计算它们的激活。

在全连接层中使用softmax激活来获取最大概率并进行预测。


过拟合问题



 

训练数据的分类精度可能超过“训练精度”,如果训练精度超出了我们的测试精度,则意味着我们的模型训练数据时过于强调细节和有噪声的学习,能很好地在训练数据上工作。资源(Rutger Ruizendaal,Towards Data Science, https://goo.gl/87as34)

减少过拟合:

1、增加更多数据

2、使用数据增强

3、使用泛化的体系结构

4、加入正则化(或者mostly dropout, L1/L2 regularization)

5、降低架构的复杂性。


实现cnn



 

让我们尝试在MNSIT数据集中实现CNN。

 

可以再下址下载
(http://yann.lecun.com/exdb/mnist/)

 更多链接:

www.github.com/rohanthomas
www.rohanthomas.me
http://www.deeplearningbook.org/ (Book by Ian Good Fellow,
Yoshua Bengio, Aaron Courville

原文链接:

https://medium.com/@rohanthomas.me/convolutional-networks-for-everyone-1d0699de1a9d

-END-

专 · 知

人工智能领域主题知识资料查看获取【专知荟萃】人工智能领域26个主题知识资料全集(入门/进阶/论文/综述/视频/专家等)

同时欢迎各位用户进行专知投稿,详情请点击

诚邀】专知诚挚邀请各位专业者加入AI创作者计划了解使用专知!

请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料

请扫一扫如下二维码关注我们的公众号,获取人工智能的专业知识!

请加专知小助手微信(Rancho_Fang),加入专知主题人工智能群交流!

点击“阅读原文”,使用专知

展开全文
Top
微信扫码咨询专知VIP会员