结构考点:卷积的局部连接与参数共享、输出尺寸公式、感受野叠加、循环结构处理序列的机制与梯度病根、门控的应对。通关标准:卷积输出尺寸脱口而出,循环网络的展开图能徒手画出。深度学习编队收官关,为 CV 与 NLP 两个领域编队架好桥。
关卡一(计算):输入特征图尺寸 32×32,卷积核 5×5,步长 1,填充 2,输出尺寸是多少?若再接一个 3×3、步长 2、填充 1 的卷积,输出又是多少?
关卡二(单选):卷积层相对全连接层处理图像的核心优势,最完整的表述是:
A. 计算速度一定更快
B. 局部连接减少参数、参数共享让同一模式可在全图复用、层次化组合出从边缘到语义的特征
C. 卷积核数量不受限制
D. 不需要激活函数
关卡三(单选):沿时间展开循环网络后,长序列上梯度消失的主要原因是:
A. 序列太长内存不够
B. 时间方向上梯度是同一组权重导数的连乘,因子普遍小于一时指数衰减
C. 词向量维度太低
D. 损失函数选错了
关卡四(简答):LSTM 用什么机制缓解上述问题?为什么说它"缓解"而非"根治"?
关卡一:第一次输出 =(32+2×2−5)÷1+1 = 32,尺寸不变;第二次输出 =(32+2×1−3)÷2+1 = 16。顺带记住常见配置的直觉:核尺寸奇数、填充取核尺寸减一半、步长一时尺寸不变;步长二时尺寸减半。
关卡二选 B。 三个要点缺一不可:局部连接利用了图像的空间局部性;参数共享利用了模式的平移重复性;层次堆叠把低级特征组合成高级语义。A 太绝对(全连接在小图上未必更慢);C 与优势无关;D 显然错误。
关卡三选 B。 循环网络在时间上共享同一组权重,反向传播沿时间展开后梯度是这组权重的导数因子反复连乘;当因子普遍小于一,梯度随时间距离指数衰减,远处的信号学不到——这是结构性的梯度消失,与激活饱和是叠加关系。
关卡四:LSTM 引入门控(输入门、遗忘门、输出门)与细胞状态:细胞状态沿时间是一条加法式的恒定传送带,梯度可以近似无衰减地流动(所谓恒等映射通路);遗忘门控制旧记忆保留多少,输入门控制新信息写入多少。说"缓解"是因为门控只是让网络学出一条"近似恒等"的通路,序列足够长、或门被学坏时,消失与爆炸仍会发生——治本要靠改变结构(如注意力机制的全局直连,下一编队的主角)。
把输出尺寸公式做成可执行的计算器并批量验算:
# 卷积输出尺寸计算器(含常见配置验算) def conv_out(size, kernel, stride, padding): return (size + 2 * padding - kernel) // stride + 1 cases = [ (32, 5, 1, 2), (32, 3, 2, 1), (28, 3, 1, 0), (56, 3, 1, 1), (64, 3, 2, 1), (8, 3, 1, 0), ] for s, k, st, p in cases: out = conv_out(s, k, st, p) print(f"输入 {s}×{s}, 核 {k}, 步长 {st}, 填充 {p} → 输出 {out}×{out}") # 输出: # 输入 32×32, 核 5, 步长 1, 填充 2 → 输出 32×32 # 输入 32×32, 核 3, 步长 2, 填充 1 → 输出 16×16 # 输入 28×28, 核 3, 步长 1, 填充 0 → 输出 26×26 # 输入 56×56, 核 3, 步长 1, 填充 1 → 输出 56×56 # 输入 64×64, 核 3, 步长 2, 填充 1 → 输出 32×32 # 输入 8×8, 核 3, 步长 1, 填充 0 → 输出 6×6
再算一笔参数账,看"参数共享"省了多少弹药:
# 参数量对比:全连接 vs 卷积(单层,输入输出同尺寸) H = 32 # 特征图边长 C_in, C_out = 3, 64 # 输入输出通道数 K = 3 # 卷积核边长 fc_params = (H * H * C_in) * (H * H * C_out) # 全连接:每个输出单元连所有输入 conv_params = K * K * C_in * C_out # 卷积:核参数 + 每输出通道一个偏置 print(f"全连接参数量 ≈ {fc_params:,}") print(f"卷积参数量 ≈ {conv_params:,}") print(f"压缩倍数 ≈ {fc_params / conv_params:,.0f} 倍") # 输出: # 全连接参数量 ≈ 201,326,592 # 卷积参数量 ≈ 1,728 # 压缩倍数 ≈ 116,457 倍
同层功能,参数差了五个数量级——这就是卷积能在当年算力下跑起来的物资基础。
同一组权重(隐藏状态之间的转移)被复制到每个时间步——参数共享在时间维度的镜像。损失在时刻三发生,梯度要沿橙色链回到时刻一,每一步都乘以同一组权重的导数,这就是关卡三 B 选项的图景。
易错点一:输出尺寸公式里忘记"加一"。记住公式的物理来源:核能放下几个位置,位置数就是尺寸;核从起点开始每步滑动一个步长,所以最后要加一。
易错点二:"参数共享意味着卷积对平移完全不变"。不准确。共享让同一模式在任意位置都能被检测(平移等变),但输出特征图会随目标位置移动而移动;真正的平移不变性还要靠池化或全局聚合近似获得。"等变"与"不变"是面试常考的精确区分。
变式一:问"感受野怎么算"。两层三乘三步长一卷积堆叠,第二层每个单元能看到第一层的三个相邻单元,对应原图七个像素——感受野七乘七。堆得越深看得越宽,这正是深层网络能捕捉大目标的原理;膨胀卷积则在不加参数的前提下跳格扫描、成倍扩大感受野。
变式二:把关卡三改成"为什么处理长文档不用 RNN 而用 Transformer"。答:注意力的任意两个位置之间梯度路径长度为一,长距离依赖不再受连乘衰减之苦;代价是序列长度的平方级计算量——用结构复杂度换梯度健康,这是两代结构的根本交易。
变式三:面试问"GRU 与 LSTM 的取舍"。答:GRU 把三门压两门(更新门、重置门),合并细胞状态与隐藏状态,参数少约四分之一、训练快,多数任务精度接近;追求极致表达或序列特性复杂时仍首选 LSTM。答得出参数比例的来源(门数量从三到二),说明不是背结论。
深度学习编队通关。卷积结构开赴第五章计算机视觉前线,序列问题交给第四章自然语言处理编队——那里的注意力机制正等着用你刚练出的梯度直觉。