6.1.1 不变性
-
平移不变性(translation invariance):
不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为"平移不变性"。
-
局部性(locality):
神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是"局部性"原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。
6.1.2 多层感知机的限制
假设多层感知机的输入是 X X X,将其隐藏表示记为 H H H(二者形状相同)。
使用 [ X ] i j [\boldsymbol{X}]{ij} [X]ij 和 [ H ] i j [\boldsymbol{H}]{ij} [H]ij 表示位置 ( i , j ) (i,j) (i,j) 位置上的像素点。
因为每个像素点都需要和其他像素点联系,故每个像素点都需要一个二阶的权重张量,又由于是二维图像,故最终权重张量 W \mathrm{W} W 为四维。
再假设偏置参数为 U U U,则可以将全连接层表示为:
H \] i j = \[ U \] i j + ∑ k ∑ l \[ W \] i , j , k , l \[ X \] k , l \[\\boldsymbol{H}\]_{ij} = \[\\boldsymbol{U}\]_{ij}+\\sum_k\\sum_l\[\\mathrm{W}\]_{i,j,k,l}\[\\boldsymbol{X}\]_{k,l} \[H\]ij=\[U\]ij+k∑l∑\[W\]i,j,k,l\[X\]k,l 为了方便表示,我们对下标 ( k , l ) (k,l) (k,l) 进行重新索引,使得 k = i + a , l = j + b k=i+a,l=j+b k=i+a,l=j+b,则可以得到重拍后的权重矩阵 \[ V \] i , j , a , b = \[ W \] i , j , i + a , j + b \[V\]_{i,j,a,b}=\[\\mathrm{W}\]_{i,j,i+a,j+b} \[V\]i,j,a,b=\[W\]i,j,i+a,j+b。 上式可表述为: \[ H \] i j = \[ U \] i j + ∑ a ∑ b \[ V \] i , j , a , b \[ X \] i + a , j + b \[\\boldsymbol{H}\]_{ij} = \[\\boldsymbol{U}\]_{ij}+\\sum_a\\sum_b\[\\mathrm{V}\]_{i,j,a,b}\[\\boldsymbol{X}\]_{i+a,j+b} \[H\]ij=\[U\]ij+a∑b∑\[V\]i,j,a,b\[X\]i+a,j+b 1. 平移不变性 现在引入平移不变性,即检测对象在输入 X X X 中的平移应该仅导致隐藏表示 H H H 中的平移。简言之,无须每个像素都要独享一个二维权值张量,所有像素共享同一个即可,故权重张量降为二维即可。此时式子可以简化为: \[ H \] i j = u + ∑ a ∑ b \[ V \] a , b \[ X \] i + a , j + b \[\\boldsymbol{H}\]_{ij} = u+\\sum_a\\sum_b\[\\boldsymbol{V}\]_{a,b}\[\\boldsymbol{X}\]_{i+a,j+b} \[H\]ij=u+a∑b∑\[V\]a,b\[X\]i+a,j+b 这就是所谓卷积,使用系数 \[ V \] a , b \[\\boldsymbol{V}\]_{a,b} \[V\]a,b 对 ( i , j ) (i,j) (i,j) 附近的像素 ( i + a , j + b ) (i+a,j+b) (i+a,j+b) 进行加权得到 \[ H \] i j \[\\boldsymbol{H}\]_{ij} \[H\]ij。 2. 局部性 对于上述的 a , b a,b a,b 不应该取太大,即范围不应太大,至少不应该是全图。故可将 ∣ a ∣ \> Δ ∣ b ∣ \> Δ \\left\|a\\right\|\>\\Delta \\left\|b\\right\|\>\\Delta ∣a∣\>Δ∣b∣\>Δ的范围设置为0(即不考虑范围外的影响)。故可将式子重写为: \[ H \] i j = u + ∑ a Δ ∑ b Δ \[ V \] a , b \[ X \] i + a , j + b \[\\boldsymbol{H}\]_{ij} = u+\\sum_a\^\\Delta\\sum_b\^\\Delta\[\\boldsymbol{V}\]_{a,b}\[\\boldsymbol{X}\]_{i+a,j+b} \[H\]ij=u+a∑Δb∑Δ\[V\]a,b\[X\]i+a,j+b 至此,可以称 V V V 为卷积核。简言之,卷积操作实际就是计算一圈像素对中间像素的影响,使用不同的卷积核则计算的是不同方面的影响,最终实现提取不同特征的效果。此处参考王木头大佬的视频《[从"卷积"、到"图像卷积操作"、再到"卷积神经网络","卷积"意义的3次改变](https://www.bilibili.com/video/BV1VV411478E/?spm_id_from=333.788&vd_source=9ca060ade40874a4f91ea72f173a10c6)》。 ## 6.1.3 卷积 在数学中,卷积被定义为: ( f ∗ g ) ( x ) = ∫ f ( z ) g ( x − z ) d z (f\*g)(\\boldsymbol{x})=\\int f(\\boldsymbol{z})g(\\boldsymbol{x}-z)d\\boldsymbol{z} (f∗g)(x)=∫f(z)g(x−z)dz 用一个例子说明的话,一个不确定的输入函数叠加上一个确定的输出函数,计算最终余量即为卷积。 ## 6.1.4 "沃尔多在哪里"回顾 上面一直将图片作为二维张量,实际上图像一般包含三个通道(即RGB三原色),因此图像应该是一个由高度、宽度和颜色组成的三维张量。故我们应将 X \\boldsymbol{X} X 索引为 \[ X \] i , j , k \[\\boldsymbol{X}\]_{i,j,k} \[X\]i,j,k,由此卷积核相应的调整为 \[ V \] a , b , c \[\\boldsymbol{V}\]_{a,b,c} \[V\]a,b,c,再添加一个 d d d 以实现不同通道的输出,即: \[ H \] i , j , d = ∑ a = − Δ Δ ∑ b = − Δ Δ ∑ c \[ V \] a , b , c , d \[ X \] i + a , j + b , c \[\\boldsymbol{H}\]_{i,j,d} = \\sum_{a=-\\Delta}\^\\Delta\\sum_{b=-\\Delta}\^\\Delta\\sum_c\[\\boldsymbol{V}\]_{a,b,c,d}\[\\boldsymbol{X}\]_{i+a,j+b,c} \[H\]i,j,d=a=−Δ∑Δb=−Δ∑Δc∑\[V\]a,b,c,d\[X\]i+a,j+b,c ## 练习 (1)假设卷积层式(6.3),覆盖的局部区域 Δ = 0 \\Delta=0 Δ=0。在这种情况下,证明卷积核为每组通道独立地实现一个全连接层。 若 Δ = 0 \\Delta=0 Δ=0 则意味着卷积核大小为1,那感觉和全连接没区别的哇。 *** ** * ** *** (2)为什么平移不变性可能也不是好主意呢? 太单一,也许不同区域需要的卷积核不一样。 *** ** * ** *** (3)当从图像边界像素获取隐藏表示时,我们需要思考哪些问题? 应该考虑关于填充的事情。 *** ** * ** *** (4)描述一个类似的音频卷积层的架构。 将音频信息转换为二维数据或更高维再进行卷积操作。 *** ** * ** *** (5)卷积层也适合于文本数据吗?为什么? 我觉得可以,只要找到合适的方法数据化文本。因为卷积这种对于特征的提取对于自然语言也应该是适用的。 *** ** * ** *** (6)证明在式(6.6)中, f ∗ g = g ∗ f f\*g=g\*f f∗g=g∗f。 ( f ∗ g ) ( x ) = ∫ f ( z ) g ( x − z ) d z = ∫ f ( x − t ) g ( t ) d ( x − t ) ( 令 t = x − z ) = ∫ g ( t ) f ( x − t ) d t = ( g ∗ f ) ( x ) \\begin{align} (f\*g)(\\boldsymbol{x}) \&= \\int f(\\boldsymbol{z})g(\\boldsymbol{x-z})d\\boldsymbol{z}\\\\ \&= \\int f(\\boldsymbol{x-t})g(\\boldsymbol{t})d\\boldsymbol{(x-t)}\\qquad(令 t=\\boldsymbol{x-z})\\\\ \&= \\int g(\\boldsymbol{t})f\\boldsymbol{(x-t)}d\\boldsymbol{t}\\\\ \&= (g\*f)(\\boldsymbol{x}) \\end{align} (f∗g)(x)=∫f(z)g(x−z)dz=∫f(x−t)g(t)d(x−t)(令t=x−z)=∫g(t)f(x−t)dt=(g∗f)(x)