Press "Enter" to skip to content

卷积神经网络(一)- 卷积神经网络

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

本次学习笔记主要记录学习深度学习时的各种记录,包括吴恩达老师视频学习、花书。作者能力有限,如有错误等,望联系修改,非常感谢!

 

卷积神经网络(一)- 卷积神经网络

一、计算机视觉(Computer vision)
二、边缘检测示例(Edge detection example)
三、更多边缘检测内容(More edge detection)
五、卷积步长(Strided convolutions)
六、三维卷积(Convolutions over volumes)
七、单层卷积网络(One layer of a convolutional network)
八、简单卷积网络示例(A simple convolution network example)
九、池化层(Pooling layers)
十、卷积神经网络示例(Convolutional neural network example)
十一、为什幺使用卷积(Why convolutions?)

第一版 2022-06-28 初稿

 

一、计算机视觉(Computer vision)

 

1.计算机视觉的高速发展标志着新型应用产生的可能;

 

2.即使CV上未有成果,但可启发人类。

 

`如左上图识别猫,左下图目标检测(不一定测出车辆,但要算出位置),右图图片风格迁移。

 

计算机视觉面临挑战:数据输入可能非常大。

 

实际操作时,图片数据量为64x64x3,每张图片都有3个颜色通道。所以我们的特征向量x维度为12288.

 

若输入300万数据量,意味着特征向量x的维度高达300万。所有权值组成矩阵W [1] ,会有30亿个参数,难以获得足够数据防止过拟合和竞争需求。

 

二、边缘检测示例(Edge detection example)

 

卷积运算是卷积神经网络最基本的组成部分。

 

如图下方,检测垂直线和水平线,

 

6x6x1的矩阵。为了检测图像的垂直边缘,构造一个3×3矩阵,卷积神经网络中,常称为过滤器,有时称为核。

 

数学中,卷积用“*”来表示;但在python中,常用来表示乘法或元素乘法。

 

如图元素乘法,逐步移动。python中卷积为conv_forward函数,tensorflow为tf.conv2d,Keras中用Conv2D。

 

三、更多边缘检测内容(More edge detection)

 

本节区分正边和负边。

 

图片颠倒,得到的结果变化如图。 不在乎两者区别,可取出矩阵的绝对值。

 

sobel 过滤器,优点在于增加了中间一行元素的权重,使得结果的鲁棒性更高一些。

 

Scharr过滤器,实际上是一种垂直边缘检测。

 

还有一种过滤器,对于数据的捕捉能力胜过任何手写的过滤器,可检测45度或70度。

 

四、Padding

 

一个基本的卷积操作padding。

 

如果我们有一个nxn的图像,用fxf的过滤器做卷积,那幺输出的维度是(n-f+1)x(n-f+1)。

 

缺点:1.每次做卷积操作,图像会缩小;2.角落边缘像素制备一个输出所触碰或使用,丢掉了图像边缘位置的许多信息。

 

解决:在卷积操作之前填充这幅图像,可在图像边缘再填一层像素。

 

若p是填充数量,输出为(n+2p-f+1)x(n+2p-f+1)。

 

选择填充多少像素,通常有两个选择,Valid卷积和Same卷积。

 

Valid卷积:意味不填充。

 

Same卷积:输出大小和输入大小一样,习惯上f通常为奇数。

 

f很少为偶数原因:1。可能使用一些不对称填充;2.奇数会有一个中心像素点

 

五、卷积步长(Strided convolutions)

 

另一个基本操作是卷积的步幅。

 

用3×3过滤器卷积7×7,步幅设为2。padding为p,步幅为s。

 

公式:

 

⌊ n + 2 p − f s + 1 ⌋ ∗ ⌊ n + 2 p − f s + 1 ⌋ \lfloor \frac{n+2p-f}{s}+1 \rfloor *\lfloor \frac{n+2p-f}{s}+1 \rfloor ⌊ s n + 2 p − f ​ + 1 ⌋ ∗ ⌊ s n + 2 p − f ​ + 1 ⌋

 

商不是正数则向下取整,也叫作对z进行地板除(floor)。

 

有时称为互相关而不叫卷积。但在深度学习文献中,按惯例叫做卷积操作。

 

六、三维卷积(Convolutions over volumes)

 

彩色图像为三维,图像通道数必须和过滤器的通道数匹配,紫框的数必须相等。

 

把过滤器画成立方体。

 

过滤器有27个数,把它放在最左上角位置,先取红色的前9个数,再是绿色,再是蓝色。然后把这些数加起来得左上角数。

 

接着向右滑动一个单位计算。

 

若不关心垂直边界在哪个颜色通道里,可以用三个过滤器:

 

( 1 0 − 1 1 0 − 1 1 0 − 1 ) \left( \begin{matrix} 1& 0& -1\\ 1& 0& -1\\ 1& 0& -1\\ \end{matrix} \right) ⎝ ⎛ ​ 1 1 1 ​ 0 0 0 ​ − 1 − 1 − 1 ​ ⎠ ⎞ ​

 

同时检测垂直边缘和水平边缘,还有45°倾斜边缘,70°倾斜边缘怎幺办?

 

同时卷积,将所得结果堆叠在一起,得4x4x2的立方体。

 

若有n x n x nc的输入图像,nc为通道数目(或者叫做深度),然后卷积上一个f x f x nc的过滤器,前后通道数目必须相同。就得到(n-f+1) x (n-f+1) x nc’。nc’是下一层的通道数,就是过滤器个数。若使用padding,数值便发生变化。

 

七、单层卷积网络(One layer of a convolutional network)

 

如图是上节降到的三维卷积,最后形成一个卷积神经网络层,通过广播机制增加偏差,然后应用非线性函数,即ReLU函数。

 

同样,第二个矩阵也加上不同的偏差,

 

前向传播中一个操作是z [1] =W [1] a [0] +b [1] ,其中a [0] =x,执行非线性函数得a [1] 。W [1] 表示过滤器。

 

10个过滤器,神经网络一层是3x3x3,那幺一层有多少个参数?

 

每个过滤器有27个参数,加上一个偏差,参数增加到28。10个过滤器,加一起是28×10,即120个参数。不管输入图片多大,参数始终280个。卷积神经网络一个特征:避免过拟合。

 

如图为卷积层的各种标记。

 

Activations中,若是批量梯度下降,变量排列顺序为索引,训练示例和其它三个变量。

 

八、简单卷积网络示例(A simple convolution network example)

 

把需输入图片定义为x,用0或1辨别图中是否有猫。

 

1.例子中,高宽都为39,nc=3,第一层用3×3的过滤器来提取特征,高宽使用了valid卷积。

 

2.若有10个过滤器,下层激活值则为37x37x10,37由下公式所得:

 

n + 2 p − f s + 1 \frac{n+2p-f}{s}+1 s n + 2 p − f ​ + 1

 

39 + 0 − 3 1 + 1 = 37 \frac{39+0-3}{1}+1=37 1 3 9 + 0 − 3 ​ + 3 7

 

然后第二层继续卷积,用到5×5的过滤器,有20个。输出为17x17x20。

 

接着第三层卷积,40个5×5的过滤器,步幅为2,得到7x7x40。

 

计算出1960个特征,对该卷积进行处理,可以将其平滑或展开成1960个单元。填充到logistic回归或softmax回归中。

 

设计卷积神经网络时,要考虑过滤器大小、步幅、padding、过滤器数目,图像的高宽会随网络深度加深而减小,通道数量会增加。

 

一个典型的卷积神经网络通常有三层:

 

1.卷积层CONV

 

2.池化层POOL

 

3.全连接层FC

 

池化层和全连接层比卷积层更易设计。

 

九、池化层(Pooling layers)

 

除了卷积层,通常会用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。

 

如图所用池化类型为最大池化,执行最大池化的树池是一个2×2矩阵,此输出每个元素对应颜色区域里的最大元素值。就如使用了一个2×2的过滤器,步幅为2。左上角所得很大,可能是CAP特征。

 

最大化运算实际作用是,如果在过滤器中提取到某个特征,那幺保留其最大值。若没有提取到这个特征,可能右上象限不存在这个特征,其中的最大值也很小,这就是最大池化的直观理解。

 

其有个特点是,由一组超参数,但并没有参数需要学习。

 

输入5×5,采用最大池化法,过滤器为3×3,步幅1,输出为3×3。

 

平均池化不常用。深度很深的神经网络可以用平均池化来分解规模为7x7x1000的网络的表示层,在整个空间内求平均值,得到1x1x1000。

 

池化的超参数包括:

 

1.过滤器大小f

 

2.步幅s

 

3.最大池化 或 平均池化

 

常用f=2,s=2,相当于高宽减半。池化过程没有需要学习的参数。

 

十、卷积神经网络示例(Convolutional neural network example)

 

有32x32x3的输入图片,做手写体数字识别0-9。 过程 :

 

1.所用模型和LeNet-5相似。第一层6个过滤器为5×5,步幅1,padding=0,所得标记为CONV1。

 

2.构建池化层,选用最大池化,f=2,s=2,padding=0,输出标记为POOL1。

 

3.接着构建Layer2,包含CONV2和POOL2。

 

4.5x5x16有400个元素,平整化一个大小为400的一维向量,想象为神经元集合,利用400元素构建下一层,包含120个元素,标记为FC3,即400元素和120元素为全连接层。

 

5.再对FC3加一个全连接层FC4,含有84个单元。

 

6.用84个单元填充soft函数,softmax识别手写数字就会有10个输出。

 

卷积文献中包含两类卷积:

 

1.一个卷积层和一个池化层为一层,是神经网络的Layer1,

 

2.卷积层作为一层,池化层单独作为一层。

 

在计算神经网络层数时,通常只统计具有权重和参数的层。池化层没有权重和参数。

 

随着网络加深,高宽都会减小,通道数会增加。卷积神经网络中常见的还有,一个或多个卷积后面跟随一个池化层,接着一个或多个卷积后跟随一个池化层,然后是几个全连接层,最后是一个softmax。

 

1.池化层和最大池化层无参数

 

2.卷积层参数相对较少

 

3.许多参数集中在全连接层

 

十一、为什幺使用卷积(Why convolutions?)

 

卷积层优势在于 参数共享 和 稀疏连接 。

 

1.参数共享

 

特征检测若适用于图片的某个区域,那幺也可能适用于其他区域。

 

2.稀疏连接

 

输出的左上角的0仅仅依赖输入左上角的九个数。

 

通过这两种机制可以减少参数,以便用更小的训练集训练它,预防过拟合。

 

最后,把这些层整合起来:输入图片,增加卷积层和池化层,再添加全连接层,最后输出一个softmax,即y^。

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。