卷积神经网络的前向传播算法详解

这篇干货 我们在CNN的模型基础上,看看CNN的前向传播算法是什么样子的。重点会和传统的DNN比较讨论。

CNN结构回顾

CNN的结构,包括输出层,若干的卷积层+ReLU激活函数,若干的池化层,DNN全连接层,以及最后的用Softmax激活函数的输出层。这里我们用一个彩色的汽车样本的图像识别再从感官上回顾下CNN的结构。图中的CONV即为卷积层,POOL即为池化层,而FC即为DNN全连接层,包括了我们上面最后的用Softmax激活函数的输出层。

CNN结构示意图

从上图可以看出,要理顺CNN的前向传播算法,重点是输入层的前向传播,卷积层的前向传播以及池化层的前向传播。而DNN全连接层和用Softmax激活函数的输出层的前向传播算法我们在讲DNN时已经讲到了。

CNN输入层到卷积层的前向传播

输入层的前向传播是CNN前向传播算法的第一步。一般输入层对应的都是卷积层,因此我们标题是输入层前向传播到卷积层。

这里还是以图像识别为例

先考虑最简单的,样本都是二维的黑白图片。这样输入层X就是一个矩阵,矩阵的值等于图片的各个像素位置的值。这时和卷积层相连的卷积核W就也是矩阵。如果样本都是有RGB的彩色图片,这样输入X就是3个矩阵,即分别对应R,G和B的矩阵,或者说是一个张量。这时和卷积层相连的卷积核W就也是张量,对应的最后一维的维度为3.即每个卷积核都是3个子矩阵组成。同样的方法,对于3D的彩色图片之类的样本,我们的输入X可以是4维,5维的张量,那么对应的卷积核W也是个高维的张量。不管维度多高,对于我们的输入,前向传播的过程可以表示为:

其中,上标代表层数,星号代表卷积,而 b 代表我们的偏倚, σ 为激活函数,一般都是ReLU。

和DNN的前向传播比较一下,其实形式非常的像,只是我们这儿是张量的卷积,而不是矩阵的乘法。同时由于W是张量,那么同样的位置,W参数的个数就比DNN多很多了。

为了简化我们的描述,本文后面如果没有特殊说明,我们都默认输入是3维的张量,即用RBG可以表示的彩色图片。

定义的CNN模型参数

1)一般我们的卷积核不止一个,比如有K个,那么我们输入层的输出,或者说第二层卷积层的对应的输入就K个。

2)卷积核中每个子矩阵的的大小,一般都用子矩阵为方阵的卷积核,比如FxF的子矩阵。

3)填充padding(以下简称P),我们卷积的时候,为了可以更好的识别边缘,一般都会在输入矩阵在周围加上若干圈的0再进行卷积,加多少圈则P为多少。

4)步幅stride(以下简称S),即在卷积过程中每次移动的像素距离大小。

CNN隐层到卷积层的前向传播

现在再来看普通隐藏层前向传播到卷积层时的前向传播算法。

假设隐藏层的输出是M个矩阵对应的三维张量,则输出到卷积层的卷积核也是M个子矩阵对应的三维张量。这时表达式和输入层的类似,也是

其中,上标代表层数,星号代表卷积,而b代表我们的偏倚, σ为激活函数,一般是ReLU。也可以写成M个子矩阵子矩阵卷积后对应位置相加的形式,即:

和上面唯一的区别仅仅在于,输入是隐藏层来的,而不是我们输入的原始图片样本形成的矩阵。需要我们定义的CNN模型参数也和上一节一样,这里我们需要定义卷积核的个数K,卷积核子矩阵的维度F,填充大小P以及步幅S。

CNN隐层到池化层的前向传播

池化层的处理逻辑是比较简单的,目的就是对输入的矩阵进行缩小概括。比如输入的若干矩阵是NxN维的,而我们的池化大小是k x k的区域,则输出的矩阵都是N/k × N/k维的。

这里需要需要我们定义的CNN模型参数是:

1)池化区域的大小k

2)池化的标准,一般是MAX或者Average。

CNN隐层到全连接层的前向传播

由于全连接层就是普通的DNN模型结构,因此我们可以直接使用DNN的前向传播算法逻辑,即:

这里的激活函数一般是sigmoid或者tanh。经过了若干全连接层之后,最后的一层为Softmax输出层。此时输出层和普通的全连接层唯一的区别是,激活函数是softmax函数。这里需要定义的CNN模型参数是:

1)全连接层的激活函数

2)全连接层各层神经元的个数

CNN前向传播算法小结

现在总结下CNN的前向传播算法。

算法流程

输入:1个图片样本,CNN模型的层数L和所有隐藏层的类型,对于卷积层,要定义卷积核的大小K,卷积核子矩阵的维度F,填充大小P,步幅S。对于池化层,要定义池化区域大小k和池化标准(MAX或Average),对于全连接层,要定义全连接层的激活函数(输出层除外)和各层的神经元个数。

输出:CNN模型的输出a^L

1)根据输入层的填充大小P,填充原始图片的边缘,得到输入张量a^1。

2)初始化所有隐藏层的参数W,b

3)for l=2 to L−1:

a)如果第l层是卷积层,则输出为

b)如果第l层是池化层,则输出为al=pool(al−1), 这里的pool指按照池化区域大小k和池化标准将输入张量缩小的过程。

c)如果第l层是全连接层,则输出为

4)对于输出层第L层:

以上就是CNN前向传播算法的过程总结。有了CNN前向传播算法的基础,后面再来理解CNN的反向传播算法就简单多了。

参考:

周志华《机器学习》

Neural Networks and Deep Learning by By Michael Nielsen

博客园

http://www.cnblogs.com/pinard/p/6489633.html

李航《统计学习方法》

Deep Learning, book by Ian Goodfellow, Yoshua Bengio, and Aaron Courville

UFLDL Tutorial

CS231n Convolutional Neural Networks for Visual Recognition, Stanford

本文来自企鹅号 - 天学网人工智能学院媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法与Python学习

SoftMax回归详解

Contents 1 关键词 2 引言 3 代价函数 4 softmax回归模型参数化的特点 5 权重衰减 6 softmax与logistics回归的关系 1...

3328
来自专栏算法channel

最小二乘法原理(后):梯度下降求权重参数

在上一篇推送中总结了用数学方法直接求解最小二乘项的权重参数,然而有时参数是无法直接求解的,此时我们就得借助梯度下降法,不断迭代直到收敛得到最终的权重参数。首先介...

3277
来自专栏专知

线性回归:简单线性回归详解

【导读】本文是一篇专门介绍线性回归的技术文章,讨论了机器学习中线性回归的技术细节。线性回归核心思想是获得最能够拟合数据的直线。文中将线性回归的两种类型:一元线性...

3287
来自专栏人工智能

通过部分感知深度卷积网络进行人脸特征点定位

人脸特征点定位是一个非常具有挑战性的研究课题。由于纹理和形状的不同,不同人脸特征点的定位精度差异很大。但大多数现有的方法不能考虑特征点的部分位置。 为了解决这个...

19110
来自专栏AI研习社

CNN 在基于弱监督学习的图像分割中的应用

最近基于深度学习的图像分割技术一般依赖于卷积神经网络 CNN 的训练,训练过程中需要非常大量的标记图像,即一般要求训练图像中都要有精确的分割结果。 对于图像分割...

3878
来自专栏红色石头的机器学习之路

Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归

上节课我们主要对深度学习(Deep Learning)的概念做了简要的概述。我们先从房价预测的例子出发,建立了标准的神经网络(Neural Network)模型...

2340
来自专栏机器之心

学界 | 全局最优解?为什么SGD能令神经网络的损失降到零

用一阶方法训练的神经网络已经对很多应用产生了显著影响,但其理论特性却依然成谜。一个经验观察是,即使优化目标函数是非凸和非平滑的,随机初始化的一阶方法(如随机梯度...

232
来自专栏机器之心

资源 | 源自斯坦福CS229,机器学习备忘录在集结

项目地址:https://github.com/afshinea/stanford-cs-229-machine-learning

581
来自专栏机器学习算法与Python学习

干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在(干货 | 深度学习之卷积神...

3485
来自专栏计算机视觉战队

通过部分感知深度卷积网络进行人脸特征点定位

人脸特征点定位是一个非常具有挑战性的研究课题。由于纹理和形状的不同,不同人脸特征点的定位精度差异很大。但大多数现有的方法不能考虑特征点的部分位置。 为了解决这个...

2836

扫码关注云+社区