《动手学深度学习 Pytorch版》 6.1 从全连接层到卷积

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)

相关推荐
AngelPP16 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年16 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼16 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS16 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区17 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈17 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang18 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
shengjk119 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能
西门老铁21 小时前
🦞OpenClaw 让 MacMini 脱销了,而我拿出了6年陈的安卓机
人工智能