从零学卷积神经网络——梯度下降,反向传播,卷积核权重视觉对比

张开发
2026/4/17 23:10:17 15 分钟阅读

分享文章

从零学卷积神经网络——梯度下降,反向传播,卷积核权重视觉对比
很多人在刚接触卷积神经网络时会被满屏的矩阵数字搞晕。其实卷积核并不是冰冷的算式你可以把它想象成一副副“神奇眼镜”。比如这张 7×7 的图像左上和右下是亮区其他地方是暗区。现在我们让它分别戴上五种不同的“眼镜”看看会发生什么。场景 S1卷积核的权重视觉对比首先是最简单的“单位核”。中心是 1周围全是 0。它就像白开水一样图像穿过它原封不动地输出来。这证明了卷积核的权重分布直接控制着信息的去留。注意看这两个核。当我们把权重设为左边正、右边负时它会对垂直边界产生剧烈反应特征图上的亮线清晰可见。反之上下权重的差异则能帮我们瞬间捕捉到水平线条。甚至我们可以通过平均分配权重来平滑像素实现“模糊”效果或者通过强化中心权重来“锐化”边缘。所以卷积核的本质就是特征提取器。在真正的 CNN 中这些权重并不是我们手动填写的而是通过成千上万次的学习让电脑自己找到最能看清特征的那组数字。看到这里你可能会好奇为什么那一串小小的数字就能像变魔术一样改变图像 其实每一个卷积核都是一个“加权平均器”。它的每一格权重都代表了它对周围像素的“偏好”。看这个“单位核”。它中心是 1周围是 0。这意味着它只看中心像素完全无视周围。所以图像穿过它就像照镜子一样原封不动。想要模糊一张图那就把权重全部设为1它会把周围 9 个像素的亮度搅匀、抹平。这就好比透过一块磨砂玻璃看世界锐利的边缘都被“均摊”了。最巧妙的是这种边缘检测核。比如水平边缘核它的左边是正数右边是负数。想象一下如果左边很亮右边很暗正负抵消后会剩下一个很大的正值特征图就会亮起如果左右亮度一样正负抵消就变成了 0。这就是它能“嗅”到边界的秘密。至于锐化则是把中心放大到 8 倍再减去周围的一圈。只要中心稍微比周围亮一点这个差距就会被无限放大。所以卷积核的权重分布本质上定义了它对哪种“像素变化”最敏感。在深度学习中我们不再手动填写这些数字。成千上万个卷积核会像“进化”一样自动学出最能看清猫、看清狗、或者看清路标的那组权重组合。不过细心的朋友可能发现了刚才 7乘以7 的图经过 3乘以3 的核输出竟然缩水成了 5乘以5。在实际搭建网络时如果我们想控制输出的大小或者想让卷积核滑动的步子迈得更大一点该怎么办呢接下来我们就聊聊控制卷积节奏的2个关键参数Stride步长与padding操作场景 S2Stride 步长 · 跳格滑动演示刚才我们看到卷积核在逐行逐列地扫描但这并不是唯一的“步法”。在卷积神经网络中有一个关键参数叫 Stride步长。它定义了卷积核每次滑动时“跨”过了多少个像素。看左边当 Stride 等于 1 时卷积核表现得非常耐心。它一格一格地挪动对图像进行“地毯式搜索”。这样做的优点是信息保留完整但代价是输出的特征图依然很大计算量也随之攀升。再看右边当我们将 Stride 设为 2 时卷积核就开始“跳格子”了。它每次跨过两格扫描变得非常稀疏。你可以直观地发现同样的 5乘以5 输入Stride等于1 能得到 3乘以3 的输出而 Stride等于2 只能得到 2乘以2 的结果。为什么要让它跳着走呢步长增大特征图就会迅速缩小。 这不仅能成倍减少计算量还能让深层的卷积核拥有更广阔的“感受野”——也就是一眼能看到更大的区域。这就像是我们在看报纸Stride等于1 是在读每一个字而 Stride等于2 则是在快速扫视标题和重点。但是细心的你可能发现了当步长变大或者卷积核太大时图像的边缘往往会显得“缩手缩脚”甚至有些像素根本没被扫到。为了解决这种边缘信息的丢失我们需要给图像穿上一层“保护套”。Padding填充操作padding操作我们上期有详细的介绍这里不再赘述。场景 S3输出尺寸公式推导搞定了卷积的各种“步法”和“眼镜”现在我们需要回答一个工程上最重要的问题卷积之后图像到底会变成多大别被这一堆字母吓到我们用一种最直观的方式把这个公式“拼”出来。首先原始高度是H如果我们在四周补上一圈零Padding那么总长度就变成了 7乘以7这就是卷积核能活动的总空间。 接着卷积核本身占了 3乘以3的9个格子。所以剩下的区域就是卷积核在空间里真正能“滑动”的范围。既然是滑动就得看步长用滑动范围除以步长我们就得到了它能走多少步。最后别忘了加上它起跑的那个初始位置。看这就是卷积输出尺寸的万能公式如果除不尽我们通常向下取整丢弃掉那些不够滑动的边缘像素。让我们快速验证一下最基础 5乘以5 的图3乘以3 的核不补零一步一走输出就是3乘以3加 Padding 还是同样的配置只要补一圈零P等于1输出就奇迹般地回到了 5乘以5实现了尺寸对齐。大步长 如果步长设为 2输出会迅速腰斩。掌握了单张特征图的计算你已经踏入了门槛。但在真实的神经网络里一层卷积往往会同时戴上几十、甚至上百副“眼镜”。当这些特征图重叠在一起构成“厚度”时神经网络又是如何处理的呢接下来我们挑战更高维度——多卷积核并行处理。场景 S4多卷积核并行处理在之前的演示中我们每次只用了一个卷积核。但在现实的神经网络里这显然是不够的。想象一下如果你想在一张照片里同时找猫的胡须、耳朵的轮廓以及毛发的颜色一副“眼镜”怎么够用呢所以我们会让图像同时通过多个卷积核。比如这四个红色的负责找水平线绿色的搜寻垂直线黄色的盯着对角线而蓝色的则在分析颜色和纹理。它们就像一个专业的“侦查小队”各司其职。每个卷积核都会生成一张属于自己的特征图。既然有四个核我们就得到了四张各具特色的特征图。关键的一步来了我们将这四张图按顺序“堆叠”在一起。原本平面的特征图现在变成了一个有厚度的“特征立方体”。记住这个逻辑卷积核的数量 N直接决定了输出结果的“深度”或者说“通道数”。在复杂的网络中这一层的深度可能是 64下一层变成 128。这种层层堆叠让神经网络能够从最简单的线条逐渐勾勒出复杂的万物。理论说了那么多卷积核在实战中到底表现如何我们准备了一张包含“十字形”亮区的简单图片。接下来我们将给它换上四种不同的“卷积眼镜”看看神经网络眼中的世界是什么样的。首先是水平边缘检测核。注意看右侧的特征图它敏锐地捕捉到了十字图案的左右边界原本的竖线被高亮显示而横线却因为左右亮度一致而被完全忽略了。换上垂直边缘检测核情况正好相反。它只对上下方向的亮度变化有反应于是横线亮了竖线消失了。如果我们想要整个轮廓呢使用拉普拉斯算子它能同时放大中心与周围的差异。看整个十字的边界都被勾勒了出来。甚至我们可以用它来做“减法”。高斯模糊核通过加权平均抹平了所有的尖锐边界让图像变得平滑柔和。这就是卷积的神奇之处同一张原图乘以不同的权重矩阵就能提取出截然不同的结构特征。卷积神经网络正是通过成百上千个这样的核把一张照片拆解成点、线、面最终识别出复杂的物体。看到这里你可能会想既然这种“矩阵滑动”这么好用那它和我们之前学过的全连接神经网络Fully Connected到底有什么本质区别为什么在处理图像时全连接层会显得笨重不堪而卷积层却能轻装上阵卷积到底比传统方法聪明在哪里接下来我们进入一场“效率与智慧”的对决卷积 vs 全连接。场景 S6卷积 vs 全连接层既然卷积能提取特征那我们以前学过的“全连接层”不行吗答案是理论上行但实际上……它太笨重了。看左边。在全连接层里每一个输出神经元都要和每一个输入像素“握手”。如果图像只有 6 个像素还好但如果是 224乘以224 的高清图这种“每个人都要认识所有人”的模式会让参数量瞬间爆炸到天文数字。更糟糕的是它完全无视了图像的空间结构把画面拆得稀碎。而卷积层则聪明得多它有两个制胜法宝。第一局部感知。每个输出只盯着自己的一亩三分地局部邻域不该管的绝不瞎看。第二也是最关键的——权重共享。你发现了吗无论卷积核滑到哪里它用的都是同一组权重也就是刚才说的同一副“眼镜”。既然“垂直边缘”在图片左上角是特征在右下角肯定也是。所以我们根本不需要为每个位置都训练一套新参数。结果显而易见处理同样一张 224乘以224 的图片全连接层可能需要几十亿个参数而卷积层只需要一万多个。少了整整一百万倍的负担 这就是为什么卷积能让 AI 真正“看清”世界的基石。我们来拆解一下一个卷积层到底有多少个需要学习的数字首先每个卷积核的大小是 Cin 乘以K 乘以K但它要同时处理输入的所有通道 接着我们有 Cout个这样的卷积核在并行工作。最后别忘了给每个输出通道配上一个“偏置项”Bias。把它们组合起来就得到了这个神奇的公式来看三个真实的例子VGG 第一层 只有 1792 个参数。即使它要处理整个画面的特征负担也极其微小。VGG 深层 尽管通道数增加到了 256参数量也才 59万 左右。全连接层对比 注意看仅仅是一个处理 28乘以28 小图的普通全连接层参数量就瞬间飙升到了 10万 以上。为什么差距这么大因为卷积实现了“权重共享”。同一组参数既在左上角检测横线也在右下角检测横线。它不关心特征出现在哪只关心特征“有没有出现”。这种平移不变性让卷积层用最少的参数干了最重的活。参数虽然省下来了但问题也随之而来如果每个卷积核只看那么一丁点地方它是怎么知道整张图片里画的是一只大象还是一座大山的这就涉及到卷积神经网络中最具哲理的机制。接下来我们聊聊“以小见大”的艺术——感受野Receptive Field。场景 S8感受野Receptive Field· 以小见大之前的视频里我们提到卷积核每次只看 3乘以3 那么一丁点地方。那么问题来了如果每个神经元都只有“鼠目寸光”的视野神经网络是怎么识别出像大象、汽车这样巨大的物体的呢秘密就在于——感受野Receptive Field。看第一层卷积Layer 1。这里的每个神经元对应原始图像中 3乘以3 的区域。此时它的感受野就是 3。它能看清线条但看不出形状。精彩的在第二层Layer 2。这里的神经元看的是第一层的 3乘以3 区域。但别忘了第一层的这 3乘以3 个点每一个都自带了原始图像的视野。这一叠合Layer 2 的一个点实际上已经“间接”看到了原始图像中 5乘以5 的范围。到了第三层感受野进一步扩大到 7乘以7。随着网络越深每个神经元站得更高、看得更远。底层的神经元在看“笔画”中层的在看“零件”而高层的神经元已经能俯瞰“全身”了。如果配合上池化层或大步长卷积这种视野的扩张速度还会成倍递增。这就是为什么深层网络能拥有“全局观”从局部纹理中抽象出复杂的语义信息。到此为止我们已经拆解了卷积的所有“生理结构”眼镜、步法、外壳、视野。但最后一个终极谜题依然存在卷积核里的那些数字权重到底是怎么“学”出来的谁告诉它该去检测边缘而不是去检测噪音的最后一章我们开启神经网络的“进化论”——反向传播与学习的直觉。反向传播与学习的直觉看了这么多卷积操作你有没有产生过一个疑问这些卷积核里密密麻麻的数字到底是怎么定下来的是数学家们通宵达旦、一个一个填进去的吗当然不是。在卷积神经网络的世界里参数不是“被设计”出来的而是通过海量数据在无数次失败与尝试中“自动学”出来的。而实现这一奇迹的幕后功臣就是反向传播。首先我们要进行一次前向传播。想象一下我们把一张猫的照片丢进网络。经过卷积层的提取、ReLU的激活以及全连接层的分类网络会给出一个它的“猜测”。比如它觉得这张图只有 10% 的概率是猫。但我们的真实标签明明写着它是“猫”这中间的巨大差距就被记录在损失函数Loss Function里。此时的 Loss 就像是一个刺眼的红色警告告诉网络“你猜错了”光发现错误还不够我们要追责。这就进入了第二步反向传播。这股红色的信号就是传说中的梯度。它带着损失函数的命令从终点逆流而上。它会经过每一层、每一个神经元告诉它们“刚才的预测失误你负有多少责任你的权重应该往哪个方向微调才能让下次的损失变小一点”这一连串的数学信号就像是在黑暗中为权重指明方向的灯塔。拿到了“责任清单”也就是梯度后我们终于可以对卷积核动刀了。这就是神经网络最核心的修正逻辑梯度下降更新规则。我们用当前的权重减去学习率与梯度的乘积。这里的学习率 就像是步长决定了我们修正的胆量而梯度则指明了方向。减号的存在确保了我们始终是在往“错误更少”的方向迈进。如果数学公式让你头疼我们可以把它想象成一个“下山”的过程。假设这个山谷就是损失函数山坡越高代表 Loss 越大预测越离谱。我们的卷积核参数就像是这颗随机落在山坡上的红色小球。反向传播计算出的梯度会告诉小球“喂下坡往这边走”经过一次次微小的滚动小球最终会停留在山谷的最底部。此时损失达到了最小我们也终于找到了那组能精准识别图像的最优权重。让我们最后复盘一下这个天才的设计第一步前向传播让网络大胆猜测并计算误差第二步反向传播逆流而上寻找每个权重的“责任”第三步梯度下降沿着坡度微调权重。这个过程在训练中会重复数万次。原本杂乱无章的随机数字就在这不断的“跌倒”与“爬起”中自动进化成了能够洞察图像特征的超级过滤器。这就是卷积神经网络“学习”的全部真相。现在你已经掌握了 CNN 的全部底层逻辑从卷积操作到激活函数从前向预测到反向进化。通过以上学习你是不是完全掌握了 CNN 卷积操作了呢若还是不了解 CNN 的操作逻辑可以继续学习以前的内容哟我们下期再见更多transformerVITswin tranformer 参考头条号人工智能研究所 v号人工智能研究Suo, 启示AI科技动画详解transformer 在线视频教程

更多文章