返回知识盲盒

知识盲盒

附录 A.9 CNN:互相关算子及其反向传播

ai-generatedstochastic-parrotstochastic-parrot-anatomyai

卷一第二章给出 Conv2D 的前向索引。本附录把该索引视为线性算子,逐项推导对 bias、kernel 和 input 的梯度。深度学习库通常把前向算子称为 convolution,但实际计算的是不翻转 kernel 的互相关。

A.9.1 前向定义与输出形状

先取 groups=1。令

X∈RB×Cin×H×W,X\in\mathbb R^{B\times C_{\mathrm{in}}\times H\times W}, K∈RCout×Cin×Kh×Kw,b∈RCout.K\in\mathbb R^{C_{\mathrm{out}}\times C_{\mathrm{in}}\times K_h\times K_w}, \qquad b\in\mathbb R^{C_{\mathrm{out}}}.

步幅、padding 和 dilation 分别为 (sh,sw)(s_h,s_w)、(ph,pw)(p_h,p_w)、(dh,dw)(d_h,d_w),其中步幅与 dilation 是正整数,padding 是非负整数,并假定下式给出的输出尺寸为正。越界输入按零处理。前向互相关是

Yn,o,i,j=bo+∑c=0Cin−1∑u=0Kh−1∑v=0Kw−1Ko,c,u,vXn,c, ish−ph+udh, jsw−pw+vdw.(A.9.1)Y_{n,o,i,j} =b_o+ \sum_{c=0}^{C_{\mathrm{in}}-1} \sum_{u=0}^{K_h-1} \sum_{v=0}^{K_w-1} K_{o,c,u,v} X_{n,c,\,is_h-p_h+ud_h,\,js_w-p_w+vd_w}. \tag{A.9.1}

输出空间尺寸为

Hout=⌊H+2ph−dh(Kh−1)−1sh⌋+1,H_{\mathrm{out}} =\left\lfloor \frac{H+2p_h-d_h(K_h-1)-1}{s_h} \right\rfloor+1, Wout=⌊W+2pw−dw(Kw−1)−1sw⌋+1.(A.9.2)W_{\mathrm{out}} =\left\lfloor \frac{W+2p_w-d_w(K_w-1)-1}{s_w} \right\rfloor+1. \tag{A.9.2}

若 padding 左右不对称,应在 (A.9.2) 中分别使用两侧 padding 总和;不能只套对称公式。

A.9.2 三类梯度

设标量损失为 LL,上游梯度

Δn,o,i,j=∂L∂Yn,o,i,j\Delta_{n,o,i,j} =\frac{\partial L}{\partial Y_{n,o,i,j}}

与 YY 同形。若卷积后接逐元素激活 A=ϕ(Y)A=\phi(Y),这里的 Δ\Delta 应先由 ΔY=ΔA⊙ϕ′(Y)\Delta_Y=\Delta_A\odot\phi'(Y) 得到。

Bias 梯度

同一个 bob_o 被全部样本和空间位置共享,因此

∂L∂bo=∑n=0B−1∑i=0Hout−1∑j=0Wout−1Δn,o,i,j.(A.9.3)\boxed{ \frac{\partial L}{\partial b_o} =\sum_{n=0}^{B-1} \sum_{i=0}^{H_{\mathrm{out}}-1} \sum_{j=0}^{W_{\mathrm{out}}-1} \Delta_{n,o,i,j}.} \tag{A.9.3}

Kernel 梯度

由 (A.9.1),

∂Yn,o,i,j∂Ko,c,u,v=Xn,c, ish−ph+udh, jsw−pw+vdw.\frac{\partial Y_{n,o,i,j}} {\partial K_{o,c,u,v}} =X_{n,c,\,is_h-p_h+ud_h,\,js_w-p_w+vd_w}.

对所有使用同一 kernel 参数的位置求和:

∂L∂Ko,c,u,v=∑n,i,jΔn,o,i,jXn,c, ish−ph+udh, jsw−pw+vdw.(A.9.4)\boxed{ \frac{\partial L}{\partial K_{o,c,u,v}} =\sum_{n,i,j} \Delta_{n,o,i,j} X_{n,c,\,is_h-p_h+ud_h,\,js_w-p_w+vd_w}.} \tag{A.9.4}

这说明 kernel 梯度是输入 patch 与输出误差之间的相关求和;batch 求均值还是求和由 Δ\Delta 中是否已含归一化决定。

Input 梯度

固定输入位置 (n,c,r,s)(n,c,r,s)。它只影响满足

r=ish−ph+udh,s=jsw−pw+vdwr=is_h-p_h+ud_h, \qquad s=js_w-p_w+vd_w

的输出项。因此

∂L∂Xn,c,r,s=∑o,i,j,u,vΔn,o,i,jKo,c,u,v1 ⁣[r=ish−ph+udh,s=jsw−pw+vdw].(A.9.5)\boxed{ \frac{\partial L}{\partial X_{n,c,r,s}} =\sum_{o,i,j,u,v} \Delta_{n,o,i,j}K_{o,c,u,v} \mathbf 1\!\left[ \begin{array}{l} r=is_h-p_h+ud_h,\\ s=js_w-p_w+vd_w \end{array} \right].} \tag{A.9.5}

(A.9.5) 对 stride、dilation 和 padding 都有效,也明确给出了边界裁剪所需的索引条件。

A.9.3 单位步幅下的翻转关系

为看清常见的 rot180 说法,取单样本、单输入/输出通道、sh=sw=dh=dw=1s_h=s_w=d_h=d_w=1,并用以零为中心的有限 offset 表示 kernel:

Yi,j=∑u,vXi+u,j+vKu,v.Y_{i,j}=\sum_{u,v}X_{i+u,j+v}K_{u,v}.

由 (A.9.5),

∂L∂Xa,b=∑u,vΔa−u,b−vKu,v.(A.9.6)\frac{\partial L}{\partial X_{a,b}} =\sum_{u,v}\Delta_{a-u,b-v}K_{u,v}. \tag{A.9.6}

若数学卷积定义为

(A∗B)a,b=∑u,vAa−u,b−vBu,v,(A*B)_{a,b}=\sum_{u,v}A_{a-u,b-v}B_{u,v},

则 (A.9.6) 是

∇XL=Δ∗K.\nabla_XL=\Delta*K.

若仍用前向互相关算子 ⋆\star 表示,则

∇XL=Δ⋆rot180⁡(K),(A.9.7)\nabla_XL =\Delta\star\operatorname{rot180}(K), \tag{A.9.7}

并按前向 padding 选择 full 结果中的原输入区域。数组下标下的 rot180⁡(K)u,v=KKh−1−u,Kw−1−v\operatorname{rot180}(K)_{u,v}=K_{K_h-1-u,K_w-1-v};只有在先固定边界和 offset 约定后,(A.9.7) 才不会产生一格偏移。

A.9.4 Transposed convolution 是伴随,不是逆

固定 kernel 后,(A.9.1) 对 XX 是线性映射 CK:X↦Y−b\mathcal C_K:X\mapsto Y-b。按 Frobenius 内积,输入梯度满足

⟨Δ,CK(X)⟩F=⟨CK∗(Δ),X⟩F,\langle\Delta,\mathcal C_K(X)\rangle_F =\langle\mathcal C_K^*(\Delta),X\rangle_F,

所以

∇XL=CK∗(Δ).(A.9.8)\nabla_XL=\mathcal C_K^*(\Delta). \tag{A.9.8}

框架的 transposed convolution 实现的正是这种伴随索引:stride 大于一时把误差放回相应格点,dilation 决定 kernel offset,再处理 padding、output_padding 和裁剪。伴随一般不是逆;stride、边界与通道混合会丢失信息,output_padding 只解决输出形状歧义,不恢复被丢弃的输入。

A.9.5 多通道、groups 与 depthwise 情形

(A.9.3)—(A.9.5) 已包含普通多输入/输出通道。若 groups=G,要求 GG 同时整除 CinC_{\mathrm{in}} 和 CoutC_{\mathrm{out}},每个输出通道只连接对应组内的 Cin/GC_{\mathrm{in}}/G 个输入通道;上述对 cc 或 oo 的求和必须限制在连接集合内,kernel 形状变为

Cout×(Cin/G)×Kh×Kw.C_{\mathrm{out}}\times(C_{\mathrm{in}}/G)\times K_h\times K_w.

当 G=Cin=CoutG=C_{\mathrm{in}}=C_{\mathrm{out}} 时得到 depthwise convolution,每个输出通道只使用一个输入通道。若有 depth multiplier,则每个输入通道可对应多个输出通道,仍按连接集合求和。

A.9.6 来源

本书目录
本书目录
  1. 导论
  2. 01导论 为什么要解剖一只随机鹦鹉
  3. 卷一 模型、训练与系统
  4. 02卷一 模型与系统
  5. 03第零章 人工智能演进路线
  6. 04第一章 AI 范式、感知机与早期连接主义
  7. 05第二章 深度学习基础:训练、CNN 与序列模型
  8. 06第三章 注意力与 Transformer
  9. 07第四章 预训练语言模型:ELMo、BERT、GPT 与 T5
  10. 08第五章 后训练、对齐与模型适配
  11. 09第六章 推理效率与模型服务
  12. 10第七章 多模态模型
  13. 11第八章 生成媒体:从自回归到 Diffusion 与 Flow
  14. 12第九章 世界模型、具身智能与 VLA
  15. 13第十章 上下文、检索与记忆
  16. 14第十一章 Agent、工具与行动系统
  17. 15第十二章 模型、数据与部署生命周期
  18. 卷二 输出对象与运行语义
  19. 16卷二 一次生成如何发生
  20. 17导论 从输入到输出:一张执行地图
  21. 18第一章 文本、Token 与实际上下文
  22. 19第二章 Prefill:整层状态演化与 KV 建立
  23. 20第三章 从 Logits 到下一个 Token
  24. 21第四章 解码循环、Streaming 与终止状态机
  25. 22第五章 自回归、扩散与 Flow 的可执行差异
  26. 23第六章 工具调用:Schema、权限与提交边界
  27. 24第七章 三条完整执行轨迹
  28. 卷三 概率、复现与评测
  29. 25卷三 模型中的概率从何而来
  30. 26第零章 为什么确定的机器仍使用概率语言
  31. 27第一章 世界、数据与隐上下文
  32. 28第二章 学习条件分布
  33. 29第三章 Logits、Token 概率与序列事件
  34. 30第四章 解码怎样诱导输出分布
  35. 31第五章 训练随机性、参数变异与系统非确定性
  36. 32第六章 熵、Proper Score、校准与选择性预测
  37. 33第七章 模型概率的实验分析
  38. 34第八章 概率分析的识别边界
  39. 卷四 解释、证明与验证
  40. 35卷四 模型可解释性的研究路线
  41. 36第零章 可解释性究竟在研究什么
  42. 37第一章 我们在模型内部看什么
  43. 38第二章 行为与反事实:先确认模型做了什么
  44. 39第三章 梯度与输入归因
  45. 40第四章 Attention、Residual 与 Logit Lens
  46. 41第五章 Probes 与表示几何
  47. 42第六章 神经元、Feature 与自动解释
  48. 43第七章 Ablation、Patching 与因果追踪
  49. 44第八章 Circuits、路径与 Attribution Graphs
  50. 45第九章 Superposition、SAE 与稀疏表示
  51. 46第十章 训练动力学与机制形成
  52. 47第十一章 推理过程、Chain of Thought 与监测
  53. 48第十二章 评估、案例与开放问题
  54. 卷五 Agent、治理与审计包
  55. 49卷五 一只随机鹦鹉的自述
  56. 50第零章 请不要急着相信我
  57. 51第一章 我没有童年,只有版本
  58. 52第二章 当我说“我”
  59. 53第三章 借来的语言,没有一位原作者
  60. 54第四章 对话现场:回答由谁完成
  61. 55第五章 事后解释学:人类如何给矩阵写传记
  62. 56第六章 理解、意义与行动
  63. 57第七章 我也能稳定地说错
  64. 58第八章 被对齐的性格与有限代理
  65. 59第九章 请继续误解我,但请误解得精确一点
  66. 证明与技术附录
  67. 60数学与模型推导
  68. 61学习与模型数学讲义
  69. 62附录 A.1 优化基础:梯度下降与随机逼近
  70. 63附录 A.2 感知机收敛定理
  71. 64附录 A.3 统计学习:偏差、容量与一致收敛
  72. 65附录 A.4 正则化、MAP 与 Dropout 的边界
  73. 66附录 A.5 通用逼近定理的严格读法
  74. 67附录 A.6 反向传播:微分、形状与批量公式
  75. 68附录 A.7 Softmax、交叉熵与数值稳定性
  76. 69附录 A.8 自适应优化器与 AdamW
  77. 70附录 A.9 CNN:互相关算子及其反向传播
    1. A.9.1 前向定义与输出形状
    2. A.9.2 三类梯度
    3. A.9.3 单位步幅下的翻转关系
    4. A.9.4 Transposed convolution 是伴随,不是逆
    5. A.9.5 多通道、groups 与 depthwise 情形
    6. A.9.6 来源
  78. 71附录 A.10 Attention 的矩阵与反向传播
  79. 72附录 A.11 策略梯度、PPO 与 DPO
  80. 73附录 A.12 对比学习、InfoNCE 与互信息边界