深度学习基础知识总结(一):深入理解卷积(Convolution)

在深度学习的世界中,卷积(Convolution)无疑是最核心的概念之一。无论是图像识别、目标检测,还是语音处理、自然语言理解,卷积操作都扮演着"特征提取"的重要角色。今天我们就从最基础的角度,带你彻底搞懂卷积的原理与作用。

一、为什么需要卷积?

在卷积神经网络(CNN)出现之前,我们处理图像的方式往往依赖"全连接层"。但图像的像素数量巨大,例如一张 224×224 的彩色图片有超过 15 万个输入特征,这样的网络不仅参数多,而且难以捕捉局部信息。

卷积操作的出现,正是为了解决这两个问题:

  1. 参数共享(Parameter Sharing) ------ 一个卷积核在整个图像上滑动,同一个权重组反复使用,大幅减少参数数量。

  2. 局部感受野(Local Receptive Field) ------ 卷积操作只关注局部区域,能够有效捕捉局部特征,如边缘、角点等。

二、卷积的数学原理

以二维卷积为例,假设输入为一张灰度图像 III,卷积核(Filter)为 KKK,卷积操作可表示为:

通俗地说,就是把卷积核在图像上滑动,每次计算核内像素与图像对应区域像素的加权和。

复制代码
输入图像 (5×5)             卷积核 (3×3)
------------------         --------------
|1 2 3 0 1|                |1 0 1|
|0 1 2 3 1|                |0 1 0|
|1 0 1 2 3|                |1 0 1|
|2 1 0 1 2|
|3 2 1 0 1|

当卷积核位于图像左上角时,计算:

复制代码
(1×1 + 2×0 + 3×1 + 0×0 + 1×1 + 2×0 + 1×1 + 0×0 + 1×1) = 9

如此滑动卷积核,就得到了新的特征图(Feature Map)。

三、步长(Stride)与填充(Padding)

卷积并非只有"滑动+乘法"这么简单,步长填充是影响输出特征图大小的重要因素。

  • 步长(Stride) :卷积核每次滑动的像素数。步长越大,输出尺寸越小。 你可以把卷积核想象成一个"放大镜",在图像上滑动,观察局部区域。

  • 步长 = 1 时,相当于放大镜"挪一步看一格",观察得很仔细,每个像素几乎都被覆盖;

  • 步长 = 2 时,相当于"隔一格看一格",看得更快,但细节信息丢失一些;

  • 步长 = 3 时,就像"走大步子",只挑关键点看一眼,图像被大幅压缩。

  • 填充(Padding) :在图像边缘补零,使输出尺寸与输入一致(常见的有 samevalid 两种)。假设我们卷积一张 5×5 的猫脸图片,使用 3×3 卷积核。如果不填充,最外面一圈像素(比如猫的胡须)几乎不会被卷积核看到;如果我们 在四周补一圈 0(Padding=1),那么卷积核就可以"看到"整张猫脸的每个区域。

计算公式如下:

其中:

  • O:输出尺寸

  • W:输入尺寸

  • K:卷积核大小

  • P:填充大小

  • S:步长

四、卷积层在CNN中的作用

在深度学习模型中,不同层的卷积有不同的"职责":

卷积层类型 提取特征层次 举例说明
第一层卷积 低级特征 边缘、线条、颜色变化
中间层卷积 中级特征 纹理、形状、局部结构
深层卷积 高级特征 语义信息(如"猫的脸"、"汽车轮胎")

卷积层叠加后,网络就能逐渐从像素级信息中学习到抽象语义,这正是深度学习强大的原因所在。

五、卷积的类型

  1. 普通卷积(Standard Convolution)

    最常见的形式,卷积核在所有通道上作用。

  2. 深度可分离卷积(Depthwise Separable Convolution)

    被 MobileNet 等轻量化模型采用,先对每个通道独立卷积(Depthwise),再做通道融合(Pointwise)。

  3. 空洞卷积(Dilated Convolution)

    用于扩大感受野而不增加参数量,常见于语义分割网络(如 DeepLab)。

六、可视化卷积:看见模型在看什么

一个有趣的实践是"卷积可视化":

通过展示卷积核或特征图,我们可以看到网络学习到的模式。例如,第一层的卷积核通常类似"边缘检测器",而高层卷积核则捕捉到语义结构。

复制代码
# 示例代码:可视化卷积核
import torch
import torchvision.models as models
import matplotlib.pyplot as plt

model = models.vgg16(pretrained=True)
weights = model.features[0].weight.data  # 第一层卷积权重

plt.figure(figsize=(10, 10))
for i in range(16):
    plt.subplot(4, 4, i + 1)
    plt.imshow(weights[i][0].cpu(), cmap='gray')
    plt.axis('off')
plt.show()

七、总结

卷积的核心思想就是局部连接 + 参数共享,它让神经网络既高效又强大。理解卷积不仅能帮助我们掌握 CNN 的原理,也为后续学习池化(Pooling)、激活函数(ReLU)、批归一化(BatchNorm)等知识打下坚实基础。

在下一篇文章中,我们将继续深入讲解 ------ 激活函数(Activation Function) 的作用与设计思想。

相关推荐
X54先生(人文科技)17 分钟前
ELR-SELLM Edge 神经元网络架构评估报告
人工智能·深度学习·架构·开源
今年下半年26 分钟前
从零开始搭建一套大语言模型 + LangGraph 多智能体编排 + RAG 知识库检索** 的智能问答平台
人工智能·语言模型·自然语言处理
Lifangyun_WD33 分钟前
RTX 5090 与 RTX PRO 6000 怎么选?32GB 和 96GB 显存分别适合哪些 AI 任务
人工智能·aigc·gpu算力·芯片·gpu租赁
hqyjzsb35 分钟前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
微功夫信息技术43 分钟前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划
TechEdu2026061 小时前
[人工智能]AI芯片家族与产品目录指南
人工智能·ai
不会写代码的女程序猿1 小时前
中小康养门店选型参考|明理 AI 四诊仪场景适配与投入回报分析
大数据·人工智能·科技·ai·健康医疗
机器人猎头David1 小时前
VLA、世界模型、强化学习,在机器人里分别解决什么问题?
人工智能·机器人·机器人猎头·机器人猎头公司
dianziyao_1 小时前
第 4.1 篇:让 Codex 理解你的双链——AI 辅助发现笔记间的关联
人工智能·笔记
围炉聊科技1 小时前
网站把自己变成 MCP server:OpenAI 第一个用上 WebMCP
人工智能