浏览器本地计算
UNDERSTAND THE INTELLIGENCE

看见计算,理解智能。

跟随数据的旅程,把抽象的神经网络变成看得见的每一步。

交互学习系列 01 — 04

卷积神经网络Convolutional Neural Network

一张图像,如何一步步变成有用的特征?

数据的旅程

前向传播
点击节点查看步骤 · 点击特征图移动卷积核
5 × 5
3 × 3 卷积核
3 × 3
负数归零
300300300
3 × 3
2 × 2 取最大
2 × 2
正值负值数字是实际结果;色深表示绝对值大小
02 / 15
想知道每个数怎么算出来?展开逐项计算与完整池化

动手改一改

改变参数,结果即刻更新

也可以点击输入图像中的格子,绘制自己的图案。

-101-101-101
共享权重 · 步幅 1 · 无填充
−30+3

给每个卷积结果加上同一个数。

OPEN THE BLACK BOX

这个 3,究竟怎么算出来?

先看一个数的来历,再理解整层的变化。

逐步讲解
当前输出:第 1 行,第 1 列点击右侧输出格,或用箭头移动窗口。所有位置共享同一个卷积核。
1 / 9

① 选中图像区域 5 × 5

0010000100001000010000100

橙框里的 3 × 3 区域参与本次计算。

×

② 对应的权重 3 × 3

这里是逐项相乘,不是矩阵乘法。

=

③ 九个乘积 点击可追踪

同样的位置,用同样的边框标出来。

→

④ 填入输出 3 × 3

这里显示完整结果,选中格是本次要解释的数。

准备:框出输入区域
准备计算

先取出橙框里的九个像素,然后从左到右、从上到下逐项相乘。

已计算乘积的累计和00 / 9 项已计入
+ b (0)= 3

为什么结果会是 3?

zi,j=∑u=02∑v=02Xi+u,j+vKu,v+bz_{i,j}=\sum_{u=0}^{2}\sum_{v=0}^{2}X_{i+u,j+v}K_{u,v}+b

Σ 表示“把这些项相加”。X 是输入,K 是权重,u、v 从 0 到 2 遍历九个位置;b 最后只加一次。界面行列从 1 开始标记。

(0) + (0) + (1) + (0) + (0) + (1) + (0) + (0) + (1) + (0) = 3。偏置是 0,所以这里就是九个乘积相加。

为什么输出尺寸也是 3?

这是另一个问题:5 格的输入,用 3 格宽的核,每次移动 1 格,可从第 1、2、3 列开始。

Nout=⌊N+2P−KS⌋+1=5+0−31+1=3N_{out}=\left\lfloor\frac{N+2P-K}{S}\right\rfloor+1=\frac{5+0-3}{1}+1=3

N = 输入边长,P = 填充,K = 核大小,S = 步幅。这里无填充。负响应也可能表示方向相反的边缘;权重是手动设置的教学值,真实 CNN 通常通过训练学习权重。

小小的卷积核,为什么能发现边缘?

当左右两侧的像素差异很大,垂直边缘卷积核就会产生较大的响应。换一个图案或卷积核,看看哪里最“亮”。

ABOUT THIS EXPERIMENT

简化计算,不简化理解。

本实验展示单通道 CNN 的特征提取,采用固定卷积核;没有训练、分类器或识别准确率。 页面内所有运算均在本地完成。

想一想 · 检查理解

偏置增加 1,每个卷积结果会怎样?