深度学习与神经网络笔记 Day2——【卷积神经网络】

1、图像卷积运算过程

        卷积的离散公式为:

B(i,j)=\sum_{m=0}\sum_{n=0}K(m,n)*A(i-m,j-n)

        现在对于上面卷积过程进行分析:我们用来做例子的 A 矩阵为 m×m(3×3)二维矩阵(被卷积矩阵),K 为 n×n(2×2)的二维矩阵(卷积核)。

运算方式如下:

1、卷积核翻转180°:

2、被卷积矩阵扩展到(m+n)×(m+n)大小,将扩展部分用 0 代替,将卷积核 K 从左上角顺序地行移动,再换行,继续,直到抵达右下角。将对应元素相乘后相加:

5*5矩阵

\begin{bmatrix} 0&0 &0 & 0 &0 \\ 0& 1 &2 & 3&0 \\ 0& 4& 5 &5 &0 \\ 0& 7 &8 & 9 &0 \\ 0& 0& 0& 0 &0 \end{bmatrix}

3、依次类推,剔除为 0 的元素,5×5 矩阵结果为 4×4 矩阵,卷积计算结束。

2、池化层

1.全连接网络的问题

全连接网络:链接权过多,算的慢,难收敛,同时可能进入局部极小值,也容易产生过拟合问题

e.g. 输入为1000 × 1000图像,隐含层有1M个节点,则输入->隐含层间有1 × 1012数量级参数

解决算的慢问题:减少权值连接,每一个节点只连到上一层的少数神经元,即局部连接网络

解决难收敛、算的慢问题:权值过多极易产生过拟合。如何消除?

回想人类解决思路:信息分层处理,每一层在上层提取特征的基础上获取进行再处理,得到更高级别的特征。

2、池化层(特征提取)

        池化过程在一般卷积过程后。池化(pooling) 的本质,其实就是采样。Pooling 对于输入的 Feature Map,选择某种方式对其进行降维压缩,以加快运算速度。

        池化的方式分为两种,分别为最大池化和平均池化。采用较多的一种池化过程叫最大池化(Max Pooling),其具体操作过程如下:

         池化过程类似于卷积过程,如上图所示,表示的就是对一个 4×4 feature map邻域内的值,用一个 2×2 的filter,步长为2进行‘扫描’,选择最大值输出到下一层,这叫做 Max Pooling。

        max pooling常用的 s=2 , f=2 的效果:特征图高度、宽度减半,通道数不变。

        还有一种叫平均池化(Average Pooling),就是从以上取某个区域的最大值改为求这个区域的平均值,其具体操作过程如下:

池化的作用:

(1)保留主要特征的同时减少参数和计算量,防止过拟合。

(2)invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)。

由多个卷积层和下采样层构成,后面可连接全连接网络

3、卷积NN的BP算法

        如果当前层是卷积层,下一层是下采样层,误差将从下采样层回传:

如果当前是下采样层,下一层为卷积层,误差从卷积层回传:


卷积层+卷积层:

因此有:
 

卷积层+全连接层:

卷积层:

全连接层:

因此有:

4、LeNet-5网络

• 输入层: LeNet5 网络的输入为32 × 32 大小的图像

• C1 层( 卷积层):使用6 个大小为5 × 5 的卷积核对输入图像进行卷积操作,卷积后得到的特征图尺寸为28 ,因此产生6 个大小为28 × 28 的特征图。

• S2 层( Pooling 层):这里采用Max Pooling 操作, Pooling 窗口大小为2 × 2 。经过Pooling 层后得到6 个14 × 14 的特征图,作为下一层的输入。

• C3 层(卷积层):使用16 个大小为5 × 5 的卷积核对输入的特征图进行卷积操作。值得注意的是, C3 中输出的特征图是S2 中的特征图进行加权组合得到的。卷积的维数有3、4、5三种,共同作用,输出为16 个10 × 10 的特征图。

• S4 层( Pooling 层):同样采用Max Pooling 操作, Pooling 窗口大小为2 × 2 。最后输出16 个5 × 5 的特征图,神经元个数为400 ( 16 × 5 × 5 )。

• C5 层(全连接层):该层可以理解对S4 层产生的特征向量进行拉伸,每一个像素代表一个神经元,使用全连接操作输出特征为120 个神经元。

• F6 层:该层与C5 层进行全连接,输出特征为84 个神经元。

• 输出层:该层与F6 层全连接,输出长度为10,代表所抽取的特征属于哪个类别。

网络结构为:

与现在网络的区别

1)卷积时不进行填充(padding)

2)池化层选用平均池化而非最大池化

3)选用Sigmoid或tanh而非ReLU作为非线性环节激活函数

4)层数较浅,参数数量小(约为6万)

引用文献:

1、矩阵卷积运算过程讲解-CSDN博客

2、CNN基础知识——池化(pooling) - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值