第九周学习周报

目录

摘要

Abstract

基于影像处理的三个观察

简化方法1:Receptive Field

简化方法2:parameters share

简化方法3:Pooling

CNN应用:下围棋

总结


摘要

本周的学习内容是以影像辩识为例,从三个观察介绍了CNN的多个概念,为了解决全连接方式解决影像辩识问题产生大量参数的问题,通过CNN的三种方法简化参数,并从两个方向介绍CNN以及CNN的全过程总结和应用。

Abstract

​This week's learning content takes image recognition as an example, and introduces multiple concepts of CNN from three observations. In order to solve the problem of a large number of parameters generated by the fully connected method to solve the image recognition problem, the parameters are simplified through three methods of CNN, and the whole process summary and application of CNN are introduced from two directions.

基于影像处理的三个观察

以图像分类为例,输入需要分类的图片大小都必须一致,对于机器来说,一张图片是一个三维的tensor(维度大于2的矩阵),一维代表宽一维代表高一维代表channel,其中channel代表通道,对于图片来说是R、G、B三个通道。其中每个通道中的没一个点其实都是一个像素值。将三个维度展平就能得到一个一维的输入的向量,比如下图(100,100,3),展平之后,是3x100x100的输入向量。其中每一维向量的数值其实就是表示某一个颜色的强度。

展开的一维向量作为network的输入,如果采用Fully Connected Network,那么100x100x3的输入,如果有1000个神经元,每一个神经元都会给所有输入一个权值,那么这个权值就是100x100x3x1000=3x10^7个,参数的数量级真的非常大,参数越多当然可以增加模型的弹性和能力,但是也容易过拟合。

为了减少参数 我们可以不使用全连接网络 ,采用CNN进行简化。例如一张小鸟的图片  通过模型如何得出它是一只鸟?其实辨识到某些重要的特征 ,例如鸟嘴,鸟腿等就可以得出它是一只鸟。

简化方法1:Receptive Field

Observation 1:不需看整个image,即不需要fully connected。比如 某一个neuron 看到的是鸟嘴  有一个neuron看到了眼睛  另一个neuron看到了鸟爪  当这些重要的特征组合在一起 我们就可以判断是一只鸟,因此可以考虑不将整个图像的特征作为一个神经元的输入,例如识别下图的鸟,并不一定要将整个图片作为输入,只需要将图片的一部分当作neuron的输入即可   这样我们就可以做简化,有两种简化方法。

CNN概念-感受野:感受野(Receptive Field):用来表示网络内部的不同位置的神经元对原始图像的感受范围的大小。

简化方法1:
每一个nounor只关心自己的receptive field发生的事情,以图中为例,这个蓝色的神经元对于圈出来的receptive field,这是三个3×3的矩阵,把它拉直成为一个27维的向量作为该神经元的输入

(1)receptive field彼此之间可以重叠,多个神经元可以使用同一个receptive field。

(2)pattern有不同大小因此不同的神经元使用的receptive field也可以有不同的大小。

(3)receptive field可以只考虑部分cahnnel,有些pattern可能只在红色或蓝色的channel出现。

(4)receptive field可以有各式各样的性质,范围也可以不相连。

最经典的receptive field样式:

采用全部的channel,高和宽合起来叫做kernel_size,常见的设置是3*3,最左边的receptive field以stride的值进行移动得到新的filter。除了水平移动,还可以垂直移动。

CNN概念-步长stride:stride一般不会设太大,如果太大就会导致receptive field之间没有重叠,因为有可能一个pattern出现在两个receptive field之间,就没有神经元可以侦测到这个pattern而将他miss了。

CNN概念-填充padding:超出范围做paddding,为了不遗落边上的pattern,采用这种方式扫描完整个图片。使用Padding填充方法。常见的填充方法:填充现有数据的均值、全部填充0、填充边界的相同值。

简化方法2:parameters share

Observation 2:相同的图案可能出现在图片的不同位置,通过参数共享以减少参数量

因为receptive field是覆盖整个图片,因此不管一个pattern出现在图片的什么位置,都是会落在神经元的receptive field中,receptive field一定有一组神经元在照顾,假设在这个里面有一个神经元 是检测鸟嘴的话鸟嘴就会被侦测出来。

这些侦测鸟嘴的神经元工作都是一样的,只不过是使用在不同的receptive field上。如果每一个receptive field上都需要有侦测鸟嘴的神经元,那么参数是不是太大了?如果放在影像处理上呢?

CNN概念-参数共享:可以让不同receptive field的神经元共享参数,即两个神经元的weight是完全一样的,但是他们的receptive field不同因此神经网的输入不同,因此结果也不会一样。

每个receptive field都只有一组参数filter,是第一个Receptive field的第一个filter1和第二个Receptive field第一个filter1共享参数,第一个Receptive field的第一个filter2和第二个Receptive field第一个filter2共享参数,以此类推。

总结简化解决问题:

Fully Connected Layer:全连接层;决定看整张图片还是部分
Receptive Field:感受野,不需要全部图片,通过部分区域能够识别分类
Parameter Sharing:参数共享;不同的Neuron之间共享相同的参数
当感受野 + 参数共享 之后就构成了卷积层Convolutional Layer

以上两种simplification一个是每个神经元考虑同一个receptive filed来减少参数,一个是通过不同的receptive filed公用同一组参数的方法减少参数。这两种简化方法总结到一起就是Convolutional Layer

CNN的另一种介绍方式

这个角度是说,对于一层卷积层,我们有很多个Filter,可以认为每一个Filter都是为了侦测某一个特征,其大小为设为( 3 × 3 × channel) ,而其中的参数就是我们通过学习得到的。假设我们已知参数,计算的过程称为Convolution。

通过Filter和原图的內积得到的结果组成了特征图 Feature Map,这个Feature Map就可以看成是一张新的图片,具有64个channels(即有64个Filters)有多少个filter就会产生多少个channel,每一个filter的高度也要跟输入channel保持一致的。

当filter的大小全为3x3的,那么超过3✖3的pattern也可以检测到。因为第一层的filter检测的是3x3的pattern,得到的结果输入到第二个卷积层,第二个filter还是3x3,但是将上一个结果作为输入,检测的范围其实是5x5的区域(如下图,第二个图像的-1来自第一个图像左上角filter计算的值,第二个图像的-2来自第一个图像右下角filter计算的值,所以第二个filter检测到的是原始图像输入的5x5的pattern),以此类推,只要网络够深,filter即使一直是3x3的,也会检测到足够大的pattern。

简化方法3:Pooling

Observation 3:对图片进行subsampling,例如拿掉图像奇数行,偶数列的像素变成十分之一,不改变图片的本质只改变了像素的大小:

Pooling有多种方式,最常用的Max Pooling:

1、 假设我们通过Filter先生成了一个Feature Map特征图,在每个filter与每个reeceptive filed进行内积之后得到一张feature map,做Pooling的时候,就把filter产生的结果分组,比如每2x2的数字为一组,Max Pooling就是在每一组挑一个最大值作为这一组的结果。

不一定要选取2✖2一组,也不一定要选取最大的值,可以自由选择。Pooling的运算中没有参数学习,比较像sigmod函数。Pooling的作用就是为了减少计算量。

Pooling把图片变小,改变了长宽,但不改变channel数,即深度不变。

采用Convolutional Layers+Pooling,就是一个Convolutional后面一个Pooling,一个Convolutional后面一个Pooling,以此类推,为了得到最后的结果,会先进行Flatten操作,即将一个多维矩阵展开为一个一维矩阵,将得到的一维矩阵作为一个全连接网络的输入,再将network的输出结果进行softmax(将结果化为0-1之间),得到概率分布的结果,最后确定类别。

CNN应用:下围棋

把棋盘比作一个19✖19的向量,假设黑子是1,白子是-1,无棋是0,因此下围棋是19✖19类别问题,采用CNN更好解决围棋问题,将棋盘看作一个19✖19解析度的图片。

与影像具有共同特性:

(1)不需要看整个图片,只需要看部分即可做出分类。

(2)同样的pattern可能出现在图片的不同位置。

总结

本周的主要学习内容是CNN在影像处理中的简化方法,包括感受野(ReceptiveField)如何减少参数,参数共享如何降低复杂性,以及池化(Pooling)如何进一步减小计算量。通过这些方法,CNN能有效地识别图像特征,如在围棋问题中应用,仅关注重要模式而非全图,提高模型效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值