deeplearning.ai 笔记 Specialization 4 week 1 Convolutional Neural Networks


卷积神经网络课程内容

1. 计算机视觉解决的常见问题:

图片分类(image classification)、物体识别(Object detection)、图片风格迁移(Neural style transfer)

面临的挑战:输入可能很大(1000*1000*3有3百万个输入),也是卷积要解决的问题。

2. 边缘检测

过滤器(filter、kernel)

垂直边缘检测器:

3. 更多边缘检测

正数较亮,负数较暗

除了手写的过滤器,还可以用反向传播去学习,形成一个过滤器

4. padding

之前的做法优缺点“

1. 会使得图片矩阵变小

2. 在矩阵中间的点比边缘的点使用更多,边缘的信息丢失

所以在使用过滤器之前,可以加边缘(padding),每个边都加一个像素,就能削弱上面两个缺点

填充的选择:

Valid :no padding

Same: 输入输出(过滤后)的大小相同,使得n+2p-f+1=n,p=(f-1)/2

其中,n是输入的维度(n * n),p是padding,f是过滤器的维度

f一般是奇数,方便填充,会有中心点。

5. 卷积步长(Strided convolution)

图示解析:

如果蓝框超出图像,不进行运算(向下取整)

CNN中一般都将上面的步骤(cross-correlation互相关)叫卷积

而数学上还要将filter做镜像处理再相乘:

6. 卷积运用在三维模型时

chanel必须相等

下图是只对红色channel有效的和对所有颜色有效的过滤器十三层参数选择(右下)

左下角说明选择的filter的height和weight可以不与输入相同,比如输入6*6*3,filter为3*3*3,输出会是4*4

同时检测多个边缘(水平、垂直、45度)怎么办:使用两个过滤器,将结果叠起来。

channel也可以叫depth(但是容易和深度学习的深度混淆)

7. 单层卷积网络

8. 简单卷积网络示例

下图演示了一个图片经过层层处理后,weight和height逐渐减小以及filter逐渐增加的过程(常见过程)

除了卷积层,CNN常见的其他层还有池化层(pooling layer)和全连接层(Fully connected layer):

虽然只用卷积也能构成一个深度神经网络,但是一般都会用到其他两种层,辛运的是他们比卷积层更好设计。后两节课会简单介绍一下另外两种层。

9. 池化层(静态属性,无需学习)

Max pooling(最大池化很少用padding)

上面讲的公式计算输出矩阵的大小同样适用于池化层输出的计算

平均池化(不常用,除了很深的网络中会用到)

池化层总结:

10. 卷积神经网络示例

在本课程中一般说“一层”指的是具有参数的层(比如池化层没有参数,只有超参数,和conv合称一层)

池化层没有参数,卷积层参数较少,随着深度的增加激活值(Activation Size)越来越小

下节讨论为什么大家喜欢使用卷积

11. 为什么使用卷积

相比只是用全连接层,使用卷积层的好处主要有两个:

1)参数共享(parameter sharing)

2)稀疏连接(sparsity of connections)

举例说明:

可见参数数量减少了

整合起来: