机器学习--卷积神经网络1

一、简介

卷积神经网络是一种非常典型的网络架构,常用于图像分类等任务。通过卷积神经网络,我们可以知道网络架构如何设计,以及为什么合理的网络架构可以优化网络的表现。

图像分类:即给计算机一张图像让他判断图像里有什么。
对于机器,图像可以描述为三维张量(张量可以想成维度大于 2 的矩阵)。一张图像是一个三维的张量,其中一维代表图像的宽,另外一维代表图像的高,还有一维代表图像的通道(channel) 的数目。

通道:彩色图像的每个像素都可以描述为红色(red)、绿色(green)、蓝色(blue)的组合,这 3 种颜色就称为图像的 3 个色彩通道。这种颜色描述方式称为 RGB 色彩模型,常用于在屏幕上显示颜色。

网络的输入往往是向量,将代表图像的三维张量“丢”到网络里之前,需要先将它“拉直”,在下面的例子里,张量有 100 × 100 × 3 个数字,所以一张图像是由100×100×3 个数字所组成的,把这些数字排成一排就是一个巨大的向量。这个向量可以作为网络的输入,而这个向量里每一维存的数值是某一个像素在某一个通道下的颜色强度。(图像有大有小,而且不是所有图像尺寸都是一样的。常见的处理方式是把所有图像先调整成相同尺寸,再“丢”到图像的识别系统里面。)
在这里插入图片描述
如果把向量当做全连接网络的输入,输入的特征向量(featurevector)的长度就是 100 × 100 × 3。由于每个神经元跟输入的向量中的每个数
值都需要一个权重,所以当输入的向量长度是 100 × 100 × 3,且第 1 层有 1000 个神经元时,第 1 层的权重就需要 1000× 100× 100× 3 个权重更多的参数为模型带来了更好的弹性和更强的能力,但也增加了过拟合(overfitting)的风险。模型的弹性越大,就越容易过拟合。为了避免过拟合,在做图像识别的时候,考虑到图像本身的特性,并不一定需要全连接,即不需要每个神经元跟输入的每个维度都有一个权重。接下来就是针对图像识别这个任务,对图像本身特性进行一些观察。

模型的目标是分类,因此可将不同的分类结果表示成不同的独热向量 y′。在这个独热向量里面,类别对应的值为 1其余类别对应的值为 0。例如,我们规定向量中的某些维度代表狗、猫、树等分类结果,那么若分类结果为猫,则猫所对应的维度的数值就是 1,其他东西所对应的维度的数值就是 0。独热向量 y′ 的长度决定了模型可以识别出多少不同种类的东西。

如果希望图像识别系统可以识别上万种目标,标签就会是维度上万的独热向量。模型的输出通过 softmax 以后,输出是 yˆ。我们希望 y′ 和 yˆ 的交叉熵越小越好。
在这里插入图片描述

二、观察1:检查模式不需要完整图像

对一个图像识别的类神经网络里面的神经元而言,它要做的就是检测图像里面有没有出现一些特别重要的模式(pattern),这些模式是代表了某种物体的。比如有三个神经元分别看到鸟嘴、眼睛、鸟爪 3 个模式,这就代表类神经网络看到了一只鸟。
在这里插入图片描述
假设用神经元来判断某种模式是否出现,并不需要看整张完整的图像才能判断重要的模式(比如鸟嘴、眼睛、鸟爪)是否出现,要知道图像有没有一个鸟嘴,只要看非常小的范围。这些神经元不需要把整张图像当作输入,只需要把图像的一小部分当作输入,就足以让它们检测某些特别关键的模式是否出现,这是第 1 个观察

三、简化1:感受野

1.简介

根据观察 1 可以做第 1 个简化,卷积神经网络会设定一个区域,即感受野(receptive field),每个神经元都只关心自己的感受野里面发生的事情,感受野是由我们自己决定的。

2. 感受野设计

比如在下图中,蓝色的神经元的守备范围就是红色正方体框的感受野。这个感受野里面有3 × 3 × 3 个数值。对蓝色的神经元,它只需要关心这个小范围,不需要在意整张图像里面有什么东西,只在意它自己的感受野里面发生的事情就好。这个神经元会把 3 × 3 × 3 的数值“拉直”变成一个长度是 3 × 3 × 3=27 维的向量,再把这 27 维的向量作为神经元的输入,这个神经元会给 27 维的向量的每个维度一个权重,所以这个神经元有 3 × 3 × 3 = 27 个权重,再加上偏置(bias)得到输出。这个输出再送给下一层的神经元当作输入。
在这里插入图片描述
蓝色的神经元看左上角这个范围,这是它的感受野。黄色的神经元看右下角 3 × 3 × 3 的范围。下图中一个正方形代表 3 × 3 × 3 的范围,右下角的正方形是黄色神经元的感受野。感受野彼此之间也可以是重叠的,比如绿色的神经元的感受野跟蓝色的、黄色的神经元都有一些重叠的空间。我们没有办法检测所有的模式,所以同个范围可以有多个不同的神经元,即多个神经元可以去守备同一个感受野。
在这里插入图片描述
感受野可以有大有小,因为模式有的比较小,有的比较大。有的模式也许在 3 × 3 的范围内就可以被检测出来,有的模式也许要 11 × 11 的范围才能被检测出来。
此外,感受野可以只考虑某些通道。目前感受野是 RGB 三个通道都考虑,但也许有些模式只在红色或蓝色的通道会出现,即有的神经元可以只考虑一个通道。
感受野不仅可以是正方形的,也可以是长方形的,完全可以根据对问题的理解来设计感受野
感受野的范围不一定要相连,理论上可以有一个神经元的感受野就是图像的左上角跟右上角。但是就要想想为什么要这么做,会不会有什么模式也要看一个图像的左上角跟右下角才能够找到。如果没有,这种感受野就没什么用。要检测一个模式,这个模式就出现在整个图像里面的某一个位置,而不是分成好几部分,出现在图像里面的不同的位置。所以通常的感受野都是相连的领地,但如果要设计很奇怪的感受野去解决很特别的问题,完全是可以的,这都是自己决定的。

3. 卷积核

一般在做图像识别的时候,可能不会觉得有些模式只出现在某一个通道里面,所以会看全部的通道。既然会看全部的通道,那么在描述一个感受野的时候,只要讲它的高跟宽,不用讲它的深度,因为它的深度就等于通道数,而高跟宽合起来叫做核大小。图 4.8 中的核大小就是 3 × 3。在图像识别里面,一般核大小不会设太大, 3 × 3 的核大小就足够了。
在这里插入图片描述

4. 感受野之间的关系

一般同一个感受野会有一组神经元去守备这个范围,比如 64 个或者是 128 个神经元去守备一个感受野的范围。目前为止,讲的都是一个感受野,接下来介绍下各个不同感受野之间的关系。我们把左上角的感受野往右移一个步幅,就制造出一个新的守备范围,即新的感受野。移动的量称为步幅(stride),步幅是一个超参数,需要人为调整。因为希望感受野跟感受野之间是有重叠的( 因为假设感受野完全没有重叠,如果有一个模式正好出现在两个感受野的交界上面,就没有任何神经元去检测它,这个模式可能会丢失,所以希望感受野彼此之间有高度的重叠。),所以步幅往往不会设太大,一般设为 1 或 2。
在这里插入图片描述

5.填充

感受野超出了图像的范围,如果不在超过图像的范围“摆”感受野,就没有神经元去检测出现在边界的模式,这样就会漏掉图像边界的地方,所以一般边界的地方也会考虑的。超出范围就做填充(padding)填充就是补值,一般使用零填充(zero padding),超出范围就补 0。
也有别的补值的方法,比如补整张图像里面所有值的平均值或者把边界的这些数字拿出来补没有值的地方
在这里插入图片描述
除了水平方向的移动,也会有垂直方向上的移动,垂直方向步幅也是设 2。我们就按照这个方式扫过整张图像,所以整张图像里面每一寸土地都是有被某一个感受野覆盖的。也就是图像里面每个位置都有一群神经元在检测那个地方,有没有出现某些模式。这个是第 1 个简化。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值