卷积神经网络(Convolutional Neural Network, CNN)

为什么使用卷积神经网络

CNN通常用于图像的识别上。
关于为什么要在图像识别上使用CNN(为什么可以用较少的参数来做影像处理这件事),其原因大致有以下三条:

  1. 神经网络中隐藏层的某个神经元的作用是识别图片的某部分,因此我们只需要得到图片那一部分的特征而不必考虑整张图片(例如某个神经元只用于识别鸟嘴)
    在这里插入图片描述
  2. 相同的部分在不同图片中可能位置不同,但由于它们的形状基本相同,因此连接它们的权重是可以共享的,这样就不需要用不同参数连接不同位置的相同特征,而是可以用较少的参数去表示。
    在这里插入图片描述
  3. 对一个图像做下采样不会影响人对于图像的辨识,因此可用较少参数连接图像的像素。
    在这里插入图片描述

CNN的构成

一整个CNN的构成,包括:Convolution、Max Pooling、Flatten,其中卷积和池化可以交替多次进行,卷积是基于上节所述的前两点原因(某层神经元只侦测某个特征、不同位置的相同特征权重相同),最大池化则是基于第三点(对图像下采样后同样可以识别)。
Flatten(扁平化)的作用是将池化后的矩阵拉直(变为向量),然后交给全连接网络进行训练。
这里当时觉得有些抽象,不能完全理解引入上面三个操作的原因,不过看了后面的具体操作后再一想就会豁然开朗。
在这里插入图片描述


卷积与最大池化操作

关于什么是卷积,这里有两篇很不错的文章:
https://www.cnblogs.com/alexanderkun/p/8149059.html
https://blog.csdn.net/cheneykl/article/details/79740810

卷积表示了两个图片的重叠面积,因此卷积得出的结果越大,则证明两图片重叠区域越大。
一幅图像的CNN中每层都可能对应多个卷积核(Filter,也有人叫做滤波器)。

我的理解是:某个卷积核是图像某个特征(如鸟嘴)所有像素对应权重的集合,在做卷积操作时,对于每个卷积核,使用滑动窗口得到图像中对应大小的矩阵,二者做内积,得到的结果大小直接反映了这一小块图像与鸟嘴这一特征的吻合程度,结果的值越大,则特征越吻合、越重要。(为后面MaxPooling做铺垫)

例如下图是对某 6 x 6 的图像与卷积核做卷积的结果,可以看到,卷积后得到了 4 x 4 的矩阵,而矩阵的左上角和左下角的值最大,均为 3,代表这两部分最接近于与卷积核相匹配的特征(鸟嘴)。
在这里插入图片描述

下面是对图像进行卷积的示例,其中步长stride为 2,代表每次相乘后挪动到两个格之后再计算下一个内积:

在这里插入图片描述
将一个矩阵与所有卷积核做卷积得到的新矩阵汇总在一起,就叫做Feature Map.
对于三通道的RGB图像,其对应的每个卷积核也都是三层的。
在这里插入图片描述
卷积神经网络实际上是对全连接网络的优化,它使用卷积操作代替了矩阵乘法,从而达到了使用很少的参数(也就是一个卷积核的大小)来连接图像的不同pattern的目的。
例如全连接网络的输入为 100 x 100 的图像,那么将其拉直后便是 10000 维的向量,假设后面相连的隐藏层有 50 个神经元,则一共需要 100 x 100 x 50 个权重;对于卷积神经网络,输入同样为 100 x 100 ,但由于使用卷积核(假设一共10 个卷积核,每个卷积核大小为 3 x 3),则总共只需要 10 x 3 x 3 个权重!
这就是权值共享。

在这里插入图片描述
(未完待续)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值