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

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

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

  • 一、计算机视觉(Computer vision)
  • 二、边缘检测示例(Edge detection example)
  • 三、更多边缘检测内容(More edge detection)
  • 四、Padding
  • 五、卷积步长(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上未有成果,但可启发人类。
卷积神经网络(一)- 卷积神经网络_第1张图片
`如左上图识别猫,左下图目标检测(不一定测出车辆,但要算出位置),右图图片风格迁移。
计算机视觉面临挑战:数据输入可能非常大。
卷积神经网络(一)- 卷积神经网络_第2张图片
实际操作时,图片数据量为64x64x3,每张图片都有3个颜色通道。所以我们的特征向量x维度为12288.

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

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

卷积神经网络(一)- 卷积神经网络_第3张图片
卷积运算是卷积神经网络最基本的组成部分。
如图下方,检测垂直线和水平线,
卷积神经网络(一)- 卷积神经网络_第4张图片
6x6x1的矩阵。为了检测图像的垂直边缘,构造一个3x3矩阵,卷积神经网络中,常称为过滤器,有时称为核。
数学中,卷积用“*”来表示;但在python中,常用来表示乘法或元素乘法。

如图元素乘法,逐步移动。python中卷积为conv_forward函数,tensorflow为tf.conv2d,Keras中用Conv2D。
卷积神经网络(一)- 卷积神经网络_第5张图片

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

本节区分正边和负边。
卷积神经网络(一)- 卷积神经网络_第6张图片
图片颠倒,得到的结果变化如图。 不在乎两者区别,可取出矩阵的绝对值。
卷积神经网络(一)- 卷积神经网络_第7张图片
卷积神经网络(一)- 卷积神经网络_第8张图片
sobel 过滤器,优点在于增加了中间一行元素的权重,使得结果的鲁棒性更高一些。
Scharr过滤器,实际上是一种垂直边缘检测。
还有一种过滤器,对于数据的捕捉能力胜过任何手写的过滤器,可检测45度或70度。

四、Padding

卷积神经网络(一)- 卷积神经网络_第9张图片
一个基本的卷积操作padding。
如果我们有一个nxn的图像,用fxf的过滤器做卷积,那么输出的维度是(n-f+1)x(n-f+1)。

缺点:1.每次做卷积操作,图像会缩小;2.角落边缘像素制备一个输出所触碰或使用,丢掉了图像边缘位置的许多信息。
解决:在卷积操作之前填充这幅图像,可在图像边缘再填一层像素。
若p是填充数量,输出为(n+2p-f+1)x(n+2p-f+1)。
卷积神经网络(一)- 卷积神经网络_第10张图片
选择填充多少像素,通常有两个选择,Valid卷积和Same卷积。
Valid卷积:意味不填充。
Same卷积:输出大小和输入大小一样,习惯上f通常为奇数。
f很少为偶数原因:1。可能使用一些不对称填充;2.奇数会有一个中心像素点

五、卷积步长(Strided convolutions)

另一个基本操作是卷积的步幅。
卷积神经网络(一)- 卷积神经网络_第11张图片
用3x3过滤器卷积7x7,步幅设为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 sn+2pf+1sn+2pf+1
商不是正数则向下取整,也叫作对z进行地板除(floor)。
卷积神经网络(一)- 卷积神经网络_第12张图片
卷积神经网络(一)- 卷积神经网络_第13张图片
有时称为互相关而不叫卷积。但在深度学习文献中,按惯例叫做卷积操作。

六、三维卷积(Convolutions over volumes)

卷积神经网络(一)- 卷积神经网络_第14张图片
彩色图像为三维,图像通道数必须和过滤器的通道数匹配,紫框的数必须相等。
卷积神经网络(一)- 卷积神经网络_第15张图片
把过滤器画成立方体。
过滤器有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) 111000111
卷积神经网络(一)- 卷积神经网络_第16张图片
同时检测垂直边缘和水平边缘,还有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)

卷积神经网络(一)- 卷积神经网络_第17张图片
如图是上节降到的三维卷积,最后形成一个卷积神经网络层,通过广播机制增加偏差,然后应用非线性函数,即ReLU函数。
同样,第二个矩阵也加上不同的偏差,

前向传播中一个操作是z[1]=W[1]a[0]+b[1],其中a[0]=x,执行非线性函数得a[1]。W[1]表示过滤器。
卷积神经网络(一)- 卷积神经网络_第18张图片
10个过滤器,神经网络一层是3x3x3,那么一层有多少个参数?
   每个过滤器有27个参数,加上一个偏差,参数增加到28。10个过滤器,加一起是28x10,即120个参数。不管输入图片多大,参数始终280个。卷积神经网络一个特征:避免过拟合。
卷积神经网络(一)- 卷积神经网络_第19张图片
如图为卷积层的各种标记。
Activations中,若是批量梯度下降,变量排列顺序为索引,训练示例和其它三个变量。

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

卷积神经网络(一)- 卷积神经网络_第20张图片
把需输入图片定义为x,用0或1辨别图中是否有猫。
1.例子中,高宽都为39,nc=3,第一层用3x3的过滤器来提取特征,高宽使用了valid卷积。
2.若有10个过滤器,下层激活值则为37x37x10,37由下公式所得:
n + 2 p − f s + 1 \frac{n+2p-f}{s}+1 sn+2pf+1
39 + 0 − 3 1 + 1 = 37 \frac{39+0-3}{1}+1=37 139+03+1=37
然后第二层继续卷积,用到5x5的过滤器,有20个。输出为17x17x20。
接着第三层卷积,40个5x5的过滤器,步幅为2,得到7x7x40。
计算出1960个特征,对该卷积进行处理,可以将其平滑或展开成1960个单元。填充到logistic回归或softmax回归中。

设计卷积神经网络时,要考虑过滤器大小、步幅、padding、过滤器数目,图像的高宽会随网络深度加深而减小,通道数量会增加。
卷积神经网络(一)- 卷积神经网络_第21张图片
一个典型的卷积神经网络通常有三层:
1.卷积层CONV
2.池化层POOL
3.全连接层FC
池化层和全连接层比卷积层更易设计。

九、池化层(Pooling layers)

卷积神经网络(一)- 卷积神经网络_第22张图片
除了卷积层,通常会用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。

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

最大化运算实际作用是,如果在过滤器中提取到某个特征,那么保留其最大值。若没有提取到这个特征,可能右上象限不存在这个特征,其中的最大值也很小,这就是最大池化的直观理解。
其有个特点是,由一组超参数,但并没有参数需要学习。
卷积神经网络(一)- 卷积神经网络_第23张图片
输入5x5,采用最大池化法,过滤器为3x3,步幅1,输出为3x3。
卷积神经网络(一)- 卷积神经网络_第24张图片
平均池化不常用。深度很深的神经网络可以用平均池化来分解规模为7x7x1000的网络的表示层,在整个空间内求平均值,得到1x1x1000。
卷积神经网络(一)- 卷积神经网络_第25张图片
池化的超参数包括:
1.过滤器大小f
2.步幅s
3.最大池化 或 平均池化
常用f=2,s=2,相当于高宽减半。池化过程没有需要学习的参数。

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

卷积神经网络(一)- 卷积神经网络_第26张图片
有32x32x3的输入图片,做手写体数字识别0-9。过程
1.所用模型和LeNet-5相似。第一层6个过滤器为5x5,步幅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.卷积层作为一层,池化层单独作为一层。
在计算神经网络层数时,通常只统计具有权重和参数的层。池化层没有权重和参数。
卷积神经网络(一)- 卷积神经网络_第27张图片
随着网络加深,高宽都会减小,通道数会增加。卷积神经网络中常见的还有,一个或多个卷积后面跟随一个池化层,接着一个或多个卷积后跟随一个池化层,然后是几个全连接层,最后是一个softmax。

1.池化层和最大池化层无参数
2.卷积层参数相对较少
3.许多参数集中在全连接层

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

卷积神经网络(一)- 卷积神经网络_第28张图片
卷积层优势在于 参数共享稀疏连接
卷积神经网络(一)- 卷积神经网络_第29张图片
1.参数共享
特征检测若适用于图片的某个区域,那么也可能适用于其他区域。
2.稀疏连接
输出的左上角的0仅仅依赖输入左上角的九个数。
通过这两种机制可以减少参数,以便用更小的训练集训练它,预防过拟合。
卷积神经网络(一)- 卷积神经网络_第30张图片
最后,把这些层整合起来:输入图片,增加卷积层和池化层,再添加全连接层,最后输出一个softmax,即y^。

1


  1. 深度学习-吴恩达 ↩︎

你可能感兴趣的:(深度学习,cnn,深度学习,人工智能)