首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

人人都能读懂卷积神经网络: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个主题知识资料全集(入门/进阶/论文/综述/视频/专家等)

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180120G00ZCY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券