Vince Jiang

CSCI3230 / 辅导 · 本站更新

CSCI3230 T06 · Part 1/3 Concepts of CNN

课程:CSCI3230 (ESTR3108) Fundamentals of Artificial Intelligence · 2025T1 本讲:T06,第 1 部分 / 共 3 部分 · 原件 T06-CNN-Concepts-and-Practice-2025T1.pdf(本地课件) p.1–8 定位:先把空间结构、共享参数与维度公式讲清,再手算练习。 前后:下一份 Exercise

本文依据 2025T1 旧版材料重写,供基础学习与预习;不是 2026T1 新增要求或考试范围。补充数值例均另行标注。

整讲导航:

本次路线(p.1–3)

这次Tutorial不是再背一遍CNN术语,而是练三个动作:能说清一个核在做什么;能算每层的形状和参数;能把纸面形状对上代码。p.1封面,p.2列概念、练习、实践,p.3为概念分隔。

如果 L07卷积基础 还没读完,可以先在这里把空间尺寸与通道这两个轴理顺,再做下一篇四道题。这里使用高×宽×通道表示单张图;到了PyTorch实践,代码通常按批×通道×高×宽存放,数目相同、轴次序不同。

局部结构与共享(p.4–6)

p.4指出直接处理高维图像的代价,p.5用滑动核保留局部结构。别把它理解为全连接网络绝对不能处理图像;它能,只是普通连接方式不直接体现邻近关系,参数也可能很多。

用一维小例看“共享”(补充自取):输入 (1,3,2,5)(1,3,2,5),核权重 (1,−1)(1,-1),步长1,偏置0。三个位置分别算 1−3=−21-3=-2、3−2=13-2=1、2−5=−32-5=-3。三次都用同一套 (1,−1)(1,-1),所以只学两个权重,而不是六个。输出不同是因为输入窗口不同。

局部连接指每次只读取附近两格;权重共享指移动到新位置继续用同一组数。这两个约束一起让同种局部变化可以在不同位置被检测,但不表示所有核或所有层都相同。

p.6写translation invariance,数学上需细分:步长1卷积在合适边界下主要是平移等变,图像模式移到右边,响应也移到右边;不是输出地图完全不变。池化或全局汇聚可能使最终类别对某些位移较不敏感,仍受边界、裁剪和步长影响。

补充 · 为什么普通卷积的一个核要覆盖所有输入通道(通识讲解;演示数据不属于原题)。

RGB图像每个位置有红绿蓝三个数;普通卷积的一个输出通道在同一空间窗口内,会把三个通道各自加权后求和,再加一个偏置。因此3×3空间核、3个输入通道,一个输出核有27个权重,不是9个;做5个输出通道时有5套这样的权重,总参数为 (27+1)×5=140(27+1)\times5=140。

空间滑动复用同一套权重;不同输出通道通常有不同权重。把这两种“共享”区分开,就能解释为何输出图越大不增加核参数,却增加计算次数。这个计算针对普通、未分组卷积;若题目明确是分组或逐通道卷积,连接范围已改变,不能照搬覆盖全部输入通道的公式。

输出大小与参数(p.7–8)

p.7把设置拆成kernel、stride、padding、输入通道、输出通道。先分角色:kernel大小决定一次看几格;stride决定起点一次挪几格;padding决定边界额外补几格;输入通道决定每个位置有几种数;输出通道是用了几种不同的核。

一轴长度 WW,核宽 KK,每边补 PP,步长 SS。填后长度 W+2PW+2P;合法起点最大为 W+2P−KW+2P-K,从0每次走 SS,所以

Wout=⌊W+2P−KS⌋+1. W_{\rm out}=\left\lfloor\frac{W+2P-K}{S}\right\rfloor+1.

最后的1是在数第一个窗口。补充自取 W=6,K=3,P=0,S=2W=6,K=3,P=0,S=2,起点0、2可用,4放不下,得到2个输出;公式 ⌊3/2⌋+1=2\lfloor3/2\rfloor+1=2。高度同算。

参数数则另算:每个方核有 K2CinK^2C_{\rm in} 权重,另有1偏置,CoutC_{\rm out} 个核共

Nparam=(K2Cin+1)Cout. N_{\rm param}=(K^2C_{\rm in}+1)C_{\rm out}.

補充自取3×3核、输入2通道、输出4通道:每核 9⋅2=189\cdot2=18 权重加1偏置,总 19⋅4=7619\cdot4=76。无论输出地图2×2还是20×20,这76个数都在空间位置复用。

p.8图显示窗口与核对应相乘求和,得到一个位置的一个响应。RGB三通道要全部参与同一核的求和,不能漏乘输入通道。

小检查:把stride由1改为2,卷积参数数是否通常减半?

参考答案

不会。固定核大小与通道数时,参数不变;采样位置减少,输出激活和运算量会变。参数与激活是两本不同的账。

原页信息与完整卷积例(p.1、4、8)

主讲 Qianhan FENG,邮箱 [email protected],单位 CUHK CSE,办公室 IMIXR。p.4回顾线性回归、逻辑回归、SVM、聚类与线性神经网络,并以高维计算、空间结构、手工特征的限制引出CNN;这是设计动机,不是说这些算法在所有任务都不可用。

p.8图中左上角窗口和核分别为

Xwin=[00750758007580],K=[−1−2−1000121]. X_{\mathrm{win}}=\begin{bmatrix}0&0&75\\0&75&80\\0&75&80\end{bmatrix},\qquad K=\begin{bmatrix}-1&-2&-1\\0&0&0\\1&2&1\end{bmatrix}.

逐项相乘相加得到 0+0−75+0+0+0+0+150+80=1550+0-75+0+0+0+0+150+80=155,对应图中输出155。核比较上下两行的加权亮度,因而能响应垂直方向的亮度变化、提取水平边缘;中间一行乘0不参与这一输出。这里按深度学习常用的互相关计算,不先翻转核。

补充:同一个核,翻不翻会改变数值

自编一维输入 (1,2,4)(1,2,4)、核 (1,−1)(1,-1),步长1、无padding。若按深度学习常用的互相关约定不翻核,输出为 1−2=−11-2=-1 与 2−4=−22-4=-2;若按数学卷积先把核反向成 (−1,1)(-1,1),输出为 −1+2=1-1+2=1 与 −2+4=2-2+4=2。两种约定不能在同一手算过程里混用。

二维时对应核在两个空间轴上同时翻转;通道求和是另一件事,不是把输入输出通道也交换。课件与代码若把不翻核也称作convolution,按其实际计算定义走,并明确约定即可;名字差异不意味着库算错。

对可学习核,训练可以学到对应翻转的权重;但对题目给定的固定核,结果确实会不同。核对手算题时先在左上角窗口算一个输出,确认方向,再扩展到整张特征图,比最后才发现所有正负号反过来更容易定位。

本讲核心考点

  • 共享发生在同一滤波器的空间位置之间,不是所有层共用权重(p.4–8,C)。
  • 输出尺寸和参数公式与 HW03 的 CNN 计算同主题,正式题面见 L07。

附录

本部分没有需要另展的推导或题目演练。

来源与证据

  • 原件:T06-CNN-Concepts-and-Practice-2025T1.pdf(本地课件),p.1–8;均为当前 PDF 页号。
  • 本次重写核对本篇所列讲义页码;旧版作业/试题题面如保留,属于历史练习,不代表 2026T1 考核要求。未以未公开试题推断考试内容。
  • 往年卷仅证明相应年份考过;2024 卷及 2025 节选未公开的选择题不作推断。