Task 06 卷积神经网络


前言

本文主要讲解了CNN的架构、整个流程以及为什么会有这样的架构,以及它的应用领域。


一、为什么用CNN?

CNN(卷积神经网络)常被用于图像处理,那么用我们之前讲过的fully connect feedforward network其实也是可以的,只不过那样的话,需要的参数很多,很复杂,而CNN可以简化神经网络的结构,把一些不重要的权重在一开始就过滤掉。
举例来说:
在图像处理时,我们并不需要看整张图片,假设我们只识别鸟嘴,那我们只观察鸟嘴所在区域就能识别出来了。所以,每一个neural连接到每一个小块的区域就可以,不需要连接到整张完整的图。
在这里插入图片描述
其次,每张图片鸟嘴出现的位置可能是不同的,但我们并不需要设计两个detector,这样会造成冗余,只需要让这两个neural用同一组参数,就可以减少参数的用量了。
在这里插入图片描述
最后,我们可以对图片做subsampling,把一张image的奇数行,偶数列的pixel拿掉,变成原来大小的十分之一,它其实不会影响我们对这张image的理解,这样也可以减少参数的数量。
在这里插入图片描述

二、CNN结构

在这里插入图片描述
首先你输入一张图片,经过卷积层、池化层(这两个步骤可以一直重复,可以自己设定),然后经过flatten,再把flatten的输出放到一般的fully connected feedforward network,然后得到图像识别的结果。

基于以上三个对图像处理的观察,设计了这样的CNN架构。

第一个观察是,要生成一个pattern,不要看整张的image,只需要看image的一小部分。第二个是,通用的pattern会出现在一张图片的不同区域。
第三个是,我们可以做subsampling。

前面的两个property可以用convolution来处理掉,最后的property可以用Max Pooling这件事来处理。

1.Convolution

在这里插入图片描述
假设现在我们的network input一张6*6的 image,如果是黑白的,一个pixel就只需要用一个value去描述,1代表有涂墨水,0代表没有涂墨水。那在convolution layer里面,它由一组filter,(其中每一个filter就等同于fully connect layer里面的一个neuron),每一个filter其实就是一个matrix(3 *3),每个filter里面的参数(matrix里面每一个element值)就是network的parameter(这些parameter是要学习出来的,并不是需要人为去设计)

每个filter如果是3* 3的detects意味着它就是侦测一个3 *3的pattern(看3 *3的一个范围)。在侦测pattern的时候不看整张image,只看一个3 3的范围内就可以决定有没有某一个pattern的出现。这个就是我们考虑的第一个Property。
在这里插入图片描述
第一个filter是一个3
3的matrix,把这个filter放在image的左上角,把filter的9个值和image的9个值做内积,两边都是1,1,1(斜对角),内积的结果就得到3。(移动多少是事先决定的),移动的距离叫做stride(stride需要自己来设计),内积等于-1。stride等于2,内积等于-3。
在这里插入图片描述
以此类推(每次都移动一格),直到你把filter移到右下角的时候,得到-1(得到的值如图所示)

经过这件事情以后,本来6 *6的matrix,经过convolution process就得到4 *4的matrix。如果你看filter的值,斜对角的值是1,1,1。所以它的工作就是detain 有没有1,1,1(连续左上到右下出现在这个image里面)。比如说:出现在这里(如图所示蓝色的直线),所以这个filter就会告诉你:左上跟左下出现最大的值。

就代表说这个filter要侦测的pattern,出现在这张image的左上角和左下角,这件事情就考虑了propetry2。同一个pattern出现在了左上角和左下角,我们就可以用filter 1侦测出来,并不需要用不同的filter来做这件事。
在这里插入图片描述
以此类推,你有几个filter,就做几次内积运算,得到类似上图右侧的Feature Map。
在这里插入图片描述
刚才举的例子是一张黑白的image,所以input是一个matrix。若今天换成彩色的image,彩色的image是由RGB组成的,所以,一个彩色的image就是好几个matrix叠在一起,就是一个立方体。如果要处理彩色image,这时候filter不是一个matrix,而是一个立方体。如果今天是RGB表示一个pixel的话,那input就是3*6 *6,那filter就是3 *3 *3。

在做convolution的话,就是将filter的9个值和image的9个值做内积(不是把每一个channel分开来算,而是合在一起来算,一个filter就考虑了不同颜色所代表的channel)
在这里插入图片描述

convolution就是fully connected layer把一些weight拿掉。经过convolution的output其实就是一个hidden layer的neural的output。如果把这两个link在一起的话,convolution就是fully connected拿掉一些weight的结果。
在这里插入图片描述
我们在做convolution的时候,把filter1放到左上角(先考虑filter1),然后做inner product,得到内积为3,这件事情就等同于把6* 6的image拉直(变成如图所示)。然后你有一个neural的output是3,这个neural的output考虑了9个pixel,这9个pixel分别就是编号(1,2,3,7,8,9,13,14,15)的pixel。这个filter做inner product以后的output 3就是某个neuron output 3时,就代表这个neuron的weight只连接到(1,2,3,7,8,9,13,14,15)。这9个weight就是filter matrix里面的9个weight(同样的颜色)。

在fully connected中,一个neural应该是连接在所有的input(有36个pixel当做input,这个neuron应连接在36个input上),但是现在只连接了9个input(detain一个pattern,不需要看整张image,看9个input就好),这样做就是用了比较少的参数了。

依次类推,所有红色矩阵的输出都可以看做类似的一个过程,这样,参数就会减少很多。

2.Max pooling

在这里插入图片描述
我们根据filter 1得到4*4的maxtrix,根据filter2得到另一个4 *4的matrix,接下来把output 分成每4个一组。每一组里面可以选择它们的平均值或最大值,即把四个value合成一个value使你的image缩小。
在这里插入图片描述
做完一次convolution和一次max pooling,就将原来6 * 6的image变成了一个2 *2的image。这个2 *2的pixel的深度取决于你有几个filter(你有50个filter你就有50维),得到的结果就是一个new image but smaller,一个filter就代表了一个channel。
convolution有多少个filter,output就有多少个filter。
在这里插入图片描述

3.Flatten

在这里插入图片描述
flatten就是feature map拉直,拉直之后就可以丢到fully connected feedforward netwwork,然后就结束了。

三、CNN的应用

围棋
AlphaGo
语音识别
文本识别

总结

本文主要讲解了卷积神经网络的整个过程以及它的应用范围。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
卷积神经网络和传统神经网络在输入形式、矩阵运算划分和层次结构等方面存在一些区别。 首先,在输入形式上,传统神经网络的输入是一个向量,即一维数据,而卷积神经网络的输入是一个三维长方体矩阵,即高度 * 宽度 * 3通道,或者行数 * 列数 * 3通道。这种不同的输入形式导致了神经网络的权重参数和输出结果的不同。\[1\] 其次,在矩阵运算划分上,卷积神经网络使用点积矩阵卷积运算,即多维运算,而传统神经网络使用叉积矩阵乘法运算,即一维运算。卷积神经网络的卷积层由多个特征面构成,每个特征面由多个神经元构成,而传统神经网络的每层由排成一列的神经元构成。\[2\] 最后,在层次结构上,传统神经网络的层次结构相对简单,每个神经元代表矩阵的一个列向量,每个像素值都是一个神经元,代表了一个特征。而卷积神经网络的层次结构更加复杂,由多个特征面和神经元构成。\[2\] 总的来说,卷积神经网络和传统神经网络在输入形式、矩阵运算划分和层次结构等方面存在一些区别,这些区别导致了它们在权重参数和输出结果上的差异。 #### 引用[.reference_title] - *1* [深度学习卷积神经网络](https://blog.csdn.net/p3116002589/article/details/114317731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [1、传统神经网络卷积神经网络](https://blog.csdn.net/weixin_44986037/article/details/128954608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [卷积神经网络神经网络,卷积神经网络的特点](https://blog.csdn.net/wenangou/article/details/127175072)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Never give up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值