吴恩达深度学习:第四课:卷积神经网络 第一周:卷积神经网络

1.1 计算机视觉

图片过大,参数过多,需要卷积的方式缩小维度

1.2 边缘检测示例

[ 1 0 − 1 1 0 − 1 1 0 − 1 ] \left[\begin{array}{lll} 1 & 0 & -1 \\ 1 & 0 & -1 \\ 1 & 0 & -1 \end{array}\right] 111000111
代表核,或者是卷积核,过滤器。

*代表卷积运算

卷积运算:
image
如果在tensorflow下,这个函数叫tf.conv2d。Keras这个框架,在这个框架下用Conv2D实现卷积运算。

卷积运算提供了一种方便的算法来发现图像中的垂直边缘

1.3 更多边缘检测内容

通过垂直或者水平的滤波器,找到不同的分界线

各种各样的滤波器

image
叫做Sobel的过滤器,它的优点在于增加了中间一行元素的权重,这使得结果的鲁棒性会更高一些。

这叫做Scharr过滤器,它有着和之前完全不同的特性,实际上也是一种垂直边缘检测,如果你将其翻转90度,你就能得到对应水平边缘检测。

image
随着深度学习的发展,我们学习的其中一件事就是当你真正想去检测出复杂图像的边缘,你不一定要去使用那些研究者们所选择的这九个数字,但你可以从中获益匪浅。把这矩阵中的9个数字当成9个参数,并且在之后你可以学习使用反向传播算法,其目标就是去理解这9个参数。

1.4 Padding

当发生卷积运算的时候,会出现两个缺点

1.每次做卷积操作,你的图像就会缩小,从6×6缩小到4×4,你可能做了几次之后,你的图像就会变得很小了,可能会缩小到只有1×1的大小。你可不想让你的图像在每次识别边缘或其他特征时都缩小,这就是第一个缺点。
image
2.第二个缺点边缘像素信息丢失,如果你注意角落边缘的像素,这个像素点(绿色阴影标记)只被一个输出所触碰或者使用,因为它位于这个3×3的区域的一角。但如果是在中间的像素点,比如这个(红色方框标记),就会有许多3×3的区域与之重叠。所以那些在角落或者边缘区域的像素点在输出中采用较少,意味着你丢掉了图像边缘位置的许多信息。

解决这两个问题的方法:在原数据上填充像素。

image
若未卷积前使6x6,Padding周边一圈,维度提高到8x8, 核维度是3x3,那么卷积后维度不变6x6
总结公式为:
n × n = = > ( n + 2 p − f + 1 ) × ( n + 2 p − f + 1 ) n\times n ==> (n+2 p-f+1) \times(n+2 p-f+1) n×n==>(n+2pf+1)×(n+2pf+1)
若你想卷积后维持维度不变 n + 2 p − f + 1 = n n+2 p-f+1=n n+2pf+1=n,那么可以得出:
p = ( f − 1 ) / 2 p=(f-1) / 2 p=(f1)/2
也就是若 p p p为整数,那么 f f f必须为奇数。
f f f为偶数,则p带小数,证明左右不对称填充,

两种卷积的方法

Valid

不使用填充

“Same”

使用填充

1.5 卷积步长(Strided convolutions)

步长,蓝色框移动的步长。
image
image
我们用3×3的矩阵卷积一个7×7的矩阵,得到一个3×3的输出。输入和输出的维度是由下面的公式决定的。如果你用一个f×f的过滤器卷积一个n×n的图像,你的paddingp,步幅为s,在这个例子中s=2,你会得到一个输出,因为现在你不是一次移动一个步子,而是一次移动s个步子,输出于是变为 ( n + 2 p − f ) / s + 1 × ( n + 2 p − f ) / s + 1 (n+2p-f)/s+1×(n+2p-f)/s+1 (n+2pf)/s+1×(n+2pf)/s+1,也就是3x3

有一点,公式算出来不是整数,向下取整。
实际含义:如果有任意一个蓝框移动到了外面,那你就不要进行相乘操作。
image

额外说明

这些视频中定义卷积运算时,我们跳过了这个镜像操作。从技术上讲,我们实际上做的,我们在前面视频中使用的操作,有时被称为互相关(cross-correlation)而不是卷积(convolution)。但在深度学习文献中,按照惯例,我们将这(不进行翻转操作)叫做卷积操作

1.6 三维卷积

三维卷积的基本方法:
image

  • 第一个6代表图像高度,第二个6代表宽度,这个3代表通道的数目
  • 同样你的过滤器也有高,宽和通道数,并且图像的通道数必须和过滤器的通道数匹配,所以这两个数(紫色方框标记的两个数)必须相等
  • 这个3×3×3的过滤器有27个数,这27个数与原数据一个位置相乘加在一起输出1个数字。

image
输出的维度就等于,这里的 n c ′ n_{c^{\prime}} nc代表着有几个滤波器输出的就有几个channles。
( n − f + 1 ) × ( n − f + 1 ) × n c ′ (n-f+1) \times (n-f+1) \times n_{c^{\prime}} (nf+1)×(nf+1)×nc

1.7 单层卷积网络

单层卷积网络如何进行前向传播?

在这里插入图片描述
基本的前向传播

  • z [ 1 ] = W [ 1 ] a [ 0 ] + b [ 1 ] z^{[1]}=W^{[1]}a^{[0]}+b^{[1]} z[1]=W[1]a[0]+b[1],其中 a [ 0 ] = x a^{[0]} = x a[0]=x
  • a [ 1 ] = g ( z [ 1 ] ) a^{[1]} = g(z^{[1]}) a[1]=g(z[1])

卷积的前向传播

  • 第一步的卷积过程类似于 W [ 1 ] a [ 0 ] W^{[1]}a^{[0]} W[1]a[0],卷积核就是 W W W,然后加上偏差b
  • 得到的结果在用激活函数ReLU计算

体会参数简化了多少

image
其中计算图片RBG的卷积核维度为 3x3x3,那么就是27个参数,然后加上一个偏差,用参数b表示,现在参数增加到28个。这里采用10个过滤器,那么就是280个参数。

不论输入图片有多大,1000×1000也好,5000×5000也好,参数始终都是280个。

即使这些图片很大,参数却很少,这就是卷积神经网络的一个特征,叫作“避免过拟合”。

各种参数的含义

image

  • f [ l ] f^{[l]} f[l] , 过滤器的大小
  • p [ l ] p^{[l]} p[l] , 填充的参数 , 可看1.4介绍
  • s [ l ] s^{[l]} s[l] , 步长的大小
  • n [ l ] n^{[l]} n[l] , 过滤器的个数
  • n [ l − 1 ] n^{[l - 1]} n[l1] , 上一层最后一个维度的大小,若是图像层,也就是红蓝绿,代表3。若是隐藏层也就是上一层过滤器的个数

每一层的输入,输出维度

  • 输入:
  • 输出:
  • 每一层过滤器的维度:
  • 激活函数的维度:
  • 维度的维度:
  • 偏差的维度:

且L层 n W , n H n_W,n_H nW,nH维度与上一层L-1层的关系:
image
image

1.8 简单卷积网络示例

卷积神经网络的趋势:
image

  • 维度越来越小,信道越来越多。

一般的CNN具有3层:

  • convolution ,Conv, 卷积层
  • Pooling , pool , 池化层
  • Fully connected , FC 全连接层

1.9 池化层(Pooling layers)

Max pooling

基本概念

image
对f维度的参数取出最大值
最大池化的超级参数, f f f s s s

iamge

最大池化的作用

你可以把这个4×4区域看作是某些特征的集合,也就是神经网络中某一层的非激活值集合。

  • 数字大意味着可能探测到了某些特定的特征,显然左上象限中存在这个特征,这个特征可能是一只猫眼探测器。
  • 数字小意味可能并没有提取到有效的特征

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

参数一旦确定,梯度下降不用改变任何的值

Average pooling

image
最大池化比平均池化用的更多,再特别深的网络中会使用平均池化

总结:池化的可选择参数

image
池化很少使用p参数

没有参数可以学习,不需要反向传播,只是一种静态属性

1.10 卷积神经网络示例

image
一个CNN的示例

  1. 第一层 卷积 + 池化
  2. 第二层 卷积 + 池化
  3. 全连接FC3 (普通的神经网络层)
  4. 全连接FC4(普通的神经网络层)
  5. softmax 输出

image
体会各个层的激活层大小,和参数大小

  • 第一,池化层和最大池化层没有参数
  • 第二卷积层的参数相对较少,前面课上我们提到过,其实许多参数都存在于神经网络的全连接层。
  • 随着神经网络的加深,激活值尺寸会逐渐变小,如果激活值尺寸下降太快,也会影响神经网络性能。

1.11 为什么使用卷积?

卷积层的两个主要优势在于参数共享和稀疏连接

神经网络可以通过这两种机制减少参数,以便我们用更小的训练集来训练它,从而预防过度拟合。

卷积神经网络善于捕捉平移不变

参数共享

观察发现,特征检测如垂直边缘检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域。

稀疏连接

image这个0是通过3×3的卷积计算得到的,它只依赖于这个3×3的输入的单元格,右边这个输出单元(元素0)仅与36个输入特征中9个相连接。而且其它像素值都不会对输出产生任影响,这就是稀疏连接的概念。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值