一、 观察2:同样的模式可能会出现在图像的不同区域
第 2 个观察是:同样的模式,可能会出现在图像的不同区域。比如说模式鸟嘴,它可能出现在图像的左上角,也可能出现在图像的中间 ,上篇文章中介绍了,感受野一定是覆盖了整张图像的,模式一定落在某个神经元的守备范围内。假设在某个感受野里面,有一个神经元的工作就是检测鸟嘴,鸟嘴就会被检测出来。这些检测鸟嘴的神经元做的事情是一样的,只是它们守备的范围不一样。既然如此,其实没必要每个守备范围都去放一个检测鸟嘴的神经元。如果不同的守备范围都要有一个检测鸟嘴的神经元,参数量会太多了,因此需要做出相应的简化。

二、简化2:共享参数
举一个相似的例子,假设每个院系都需要深度学习相关的课程,没必要在每个院系都开机器学习的课程,可以开一个比较大型的课程,让所有院系的人都可以修课。如果放在图像处理上,则可以让不同感受野的神经元共享参数,也就是做参数共享(parameter sharing)(即将两个神经元的各个权重设置的完全一样)

然而权重相同并不意味着输出会相同,对于不同的神经元守备范围不同对应的输入也不会相同。
如下图:
上面神经元的输入是 x1, x2, · · · · · · ,下面神经元的输入是 x′ 1, x′ 2, · · · · · · 。
上面神经元的输出为σ (w1x1 + w2x2 + · · · · · · + 1) (4.1)
下面神经元的输出为σ (w1x′ 1 + w2x′ 2 + · · · · · · + 1) (4.2)
因为输入不一样的关系,所以就算是两个神经元共用参数,它们的输出也不会是一样的。

每个感受野都有一组神经元在负责守备,比如 64 个神经元,它们彼此可以共享参数。

每个感受野都只有一组参数,就是上面感受野的第 1 个神经元会跟下面感受野的第 1 个神经元共用参数,上面感受野的第 2 个神经元跟下面感受野的第 2 个神经元共用参数,以此类推 · · · · · ·
这些参数称为滤波器(filter)。这是第 2 个简化的方法。

三、简化1,2总结
全连接网络是弹性最大的,可以决定它看整张图像还是只看一个范围。如果它只想看一个范围,可以把很多权重设成 0。
全连接层(fully-connected layer ) 可以自己决定看整张图像还是一个小范围。但加上感受野的概念以后,只能看一个小范围,网络的弹性是变小的。
参数共享又进一步限制了网络的弹性。本来在学习的时候,每个神经元可以各自有不同的参数,它们可以学出相同的参数,也可以有不一样的参数。但是加入参数共享以后,某一些神经元无论如何参数都要一模一样的,这又增加了对神经元的限制。
感受野加上参数共享就是卷积层(convolutional layer),用到卷积层的网络就叫卷积神经网络。
卷积神经网络的偏差比较大。但模型偏差大不一定是坏事,因为当模型偏差大,模型的灵活性较低时,比较不容易过拟合。
差别:
全连接层可以做各式各样的事情,它可以有各式各样的变化,但它可能没有办法在任何特定的任务上做好。卷积层是专门为图像设计的,感受野、参数共享都是为图像设计的。虽然卷积神经网络模型偏差很大,但用在图像上不是问题。
卷积层与全连接层关系:

从另一个角度:
卷积层里面有很多滤波器,这些滤波器的大小是 3 × 3 × 通道。如果图像是彩色的,它有 RGB 三个通道。如果是黑白的图像,它的通道就等于 1。

一个卷积层里面就是有一排的滤波器,每个滤波器都是一个 3 × 3 × 通道,其作用是要去图像里面检测某个模式。这些模式要在 3 × 3 × 通道,这个小的范围内,它才能够被这些滤波器检测出来。假设通道为 1,也就是图像是黑白的。滤波器就是一个一个的张量,这些张量里面的数值就是模型里面的参数。这些滤波器里面的数值其实是未知的,它是可以通过学习找出来的。
方法如下:
假设这些滤波器里面的数值已经找出来了,这是一个 6 × 6 的大小的图像。

1.先把滤波器放在图像的左上角,接着把滤波器里面所有的 9 个值跟左上角这个范围内的 9 个值对应相乘再相加,也就是做内积,结果是 3。
2.接下来设置好步幅,然后把滤波器往右移或往下移,重复几次,可得到模式检测的结果,下图中的步幅为 1。使用滤波器 1 检测模式时,如果出现图像 3 × 3 范围内对角线都是 1 这种模式的时候,输出的数值会最大。输出里面左上角和左下角的值最大,所以左上角和左下角有出现对角线都是 1 的模式,这是第 1 个滤波器。

3.接下来把每个滤波器都做重复的过程。
假设有第 2 个滤波器,它用来检测图像 3 × 3 范围内中间一列都为 1 的模式。
把第 2 个滤波器先从左上角开始扫起,得到一个数值,往右移一个步幅,再得到一个数值再往右移一个步幅,再得到一个数值。重复同样的操作,直到把整张图像都扫完,就得到另外一组数值。

每个滤波器都会给我们一组数字,如果有 64 个滤波器,就可以得到 64 组的数字。这组数字称为特征映射(feature map) 。当一张图像通过一个卷积层里面一堆滤波器的时候,就会产生一个特征映射。假设卷积层里面有 64 个滤波器,产生的特征映射就有 64 组数字。在上述例子中每一组是 4 × 4, 64 个滤波器都产生 4 × 4 个数字。
特征映射可以看成是另外一张新的图像,有64 个通道,每个通道就对应到一个滤波器。本来一张图像有 3 个通道,通过一个卷积变成一张新的有 64 个通道图像。
卷积层是可以叠很多层的,如下图所示,第 2 层的卷积里面也有一堆的滤波器,每个滤波器的大小设成 3 × 3。其高度必须设为 64(因为滤波器的高度就是它要处理的图像的通道。如果输入的图像是黑白的,通道是 1,滤波器的高度就是 1。如果输入的图像是彩色的,通道为 3,滤波器的高度就是 3。对于第 2 个卷积层,它的输入也是一张图像,这个图像的通道是 64。这个 64 是前一个卷积层的滤波器数目,前一个卷积层的滤波器数目是 64,输出以后就是 64 个通道。所以如果第 2 层想要把这个图像当做输入,滤波器的高度必须是 64。)

也有人会担心一直把滤波器大小设置成 3 × 3 会不会检测不到较大的模式
在第 2 层卷积层滤波器的大小一样设 3 × 3,当我们看第 1 个卷积层输出的特征映射的 3 × 3 的范围的时候,在原来的图像上是考虑了一个5 × 5 的范围。虽然滤波器只有 3 × 3,但它在图像上考虑的范围是比较大的是 5 × 5。因此网络叠得越深,同样是 3 × 3 的大小的滤波器,它看的范围就会越来越大。所以网络够深,不用怕检测不到比较大的模式

从最初的角度里面说到了有一些神经元,这些神经元会共用参数,这些共用的参数就是里一个角度里面的滤波器。滤波器里面有 3 × 3 × 3 个数字,权重就是这些数字。为了简化,这边去掉了偏置。神经元是
有偏置的,滤波器也是有偏置的。在一般的实践上,卷积神经网络的滤波器都是有偏置的。

最初的角度不同的神经元可以共享权重,去守备不同的范围。而共享权重其实就是用滤波器扫过一张图像,这个过程就是卷积。把滤波器扫过图像就相当于不同的感受野神经元可以共用参数,这组共用的参数就叫做一个滤波器。

1万+





