主页 模型库 竞赛 学习中心 工具箱 论文库 前沿 建模空间 AI建模
学习中心 探索专题 机器学习 深度网络的零件

本页实验台

  1. 卷积核在做什么
  2. 池化与平移不变
  3. 嵌入向量
  4. 注意力权重
LAB 01

卷积核在做什么

手动改 3×3 的九个数,看边缘、模糊、锐化怎么出现

九个数加起来—
输出的取值范围—
输出的平均亮度—
这个核在干什么—
卷积核就是九个数。把它们在图上滑一遍,就得到一张新图。先看三个典型:拉普拉斯核(0,−1,0 / −1,4,−1 / 0,−1,0)的九个数加起来是 0,所以在亮度均匀的区域输出正好是 0(一片黑),只有在明暗交界处才有值——这就是边缘检测。均值模糊的九个数加起来是 1,它做的是加权平均,所以整体亮度不变,细节被抹掉。Sobel-x 只在横向有差异的地方有响应,所以竖直的边缘亮、水平的边缘暗——它是有方向的。现在拖那个"给中心加多少"的滑杆。从拉普拉斯核出发,把中心从 4 加到 5,核的和从 0 变成 1,输出立刻从"只剩边缘"变成"原图 + 边缘"——这正好就是锐化核。一个滑杆,把边缘检测变成了锐化。这说明"核的和"是一个很有用的判据:和为 0 的核测差异(高通),和为 1 的核测平均(低通)。最后要记住的是:在真正的卷积网络里,这九个数不是人设定的,是学出来的。训练完的第一层卷积核,画出来往往就是各个方向的边缘检测器和色块检测器——网络自己重新发现了这些人类用了几十年的算子。
LAB 02

池化与平移不变

把图整体挪两格,看哪一层的输出还认得出来

原图与平移图的相关性—
卷积输出之间的相关性—
池化输出之间的相关性—
池化带来的提升—
把图整体向右挪几格,四张输出摆在一起对比。卷积本身是"平移等变"的:图挪了,输出跟着一起挪,形状不变。这已经很有用——它意味着同一个模式不管出现在哪里,都会被同一个核检测到,不需要为每个位置各学一套权重。这是卷积相对全连接层最大的优势:参数共享。但"等变"不等于"不变"。如果下一层要做判断(比如"这张图里有没有一个圆"),我们希望的是不管圆在哪里,输出都一样——这才叫不变。池化就是把等变换成不变的那一步。它在一个小窗口里取最大值,于是窗口内部的位置变化被吞掉了。读数里三行相关性讲清了这件事:原图之间因为平移已经不太像了,卷积输出之间也差不多同样不像(等变,不解决问题),而池化之后相关性明显上升——窗口越大,上升越多。把池化窗口从 2 拖到 8 试试。代价也在同一个滑杆上:窗口越大,位置信息丢得越多。这就是为什么现代网络倾向于用小池化窗口、多层堆叠,一点点扩大感受野,而不是一步池化到底。(近几年也有不少结构干脆用步长卷积代替池化,理由是让网络自己决定要丢掉多少位置信息。)
LAB 03

嵌入向量

把离散的词放到平面上,相似的词自己聚到一起

最近邻和自己同类的比例—
同类之间的平均距离—
不同类之间的平均距离—
类间 / 类内—
"猫"和"狗"这两个符号之间没有距离。如果把词编成 one-hot 向量,任意两个词的距离都一样,模型学不到"猫和狗比猫和红色更像"这件事。嵌入做的就是给符号安排一个位置,让语义上相近的符号在几何上也相近。怎么安排?靠语境统计。这一页用的是最朴素的做法:数每个词和各个语境词共现了多少次,取对数,再用 PCA 压到二维。噪声为 0.4 时,二十四个词自动分成四簇——动物、水果、颜色、动作各在一角,95.8% 的词最近邻是同类。没有人告诉模型这四类是什么,结构完全来自"它们出现在相似的语境里"。这就是分布语义学那句名言的实现:「一个词的意思,由和它一起出现的词决定。」把噪声一路拖大:噪声 2.0 时最近邻同类比例掉到 54%,簇也糊在一起了。这个衰减说明嵌入的质量完全取决于语境统计的质量——真实的词向量之所以要在几十亿词的语料上训练,原因就在这里。再把维数从 2 加到 6:类间/类内的比值会上升,因为更高的维度能容纳更多互相正交的方向,不必把四个簇挤在一个平面上。(这也解释了为什么实际的词向量常用 128–1024 维:维度太低,语义关系挤不开;太高,数据不够撑不起来。)
LAB 04

注意力权重

一个最小的注意力头:看它把注意力放在了哪个位置

注意力分布的平均熵—
最大可能的熵(完全均匀)—
平均分给自己的注意力—
最强的一条注意力—
注意力做的事一句话就能说完:每个位置拿自己的"查询"去和所有位置的"键"做内积,得到一排分数,softmax 成权重,再按权重把"值"加起来。这张热力图画的就是那排权重:第 i 行是第 i 个词分配注意力的方式,每一行加起来正好是 1。把温度从 3.0 拖到 0.2,看这张图怎么从一片均匀变成几个亮点。温度大时,每个词几乎平均地看所有位置,熵接近最大值 ln n;温度小时,注意力集中到一两个位置上,熵掉下来。这个温度在真实的 Transformer 里就是那个 √d_k:内积的方差随维数增长,不除以 √d_k 的话,维数一高分数就会拉得很开,softmax 直接饱和成 one-hot,梯度也就没了。把"Q/K 向量的维数"从 1 拖到 16,你能看到同样的效应:维数越高,注意力越尖锐。注意力和卷积的根本区别在这里:卷积的"看哪儿"是固定的(就看旁边那几格,权重与内容无关),注意力的"看哪儿"由内容算出来,而且可以一步跨到很远。这就是为什么它在长距离依赖上远胜卷积和循环网络,也是为什么它的代价是 O(n²)——每个位置都要和所有位置算一次内积。(这一页加了一点位置偏置,所以对角线附近总是偏亮。真实模型里这种"就近看"的倾向也是学出来的,很多注意力头最后确实学成了局部算子。)

这一页想说的

四个零件,四个具体问题。卷积用参数共享换来平移等变,核的和决定它是高通还是低通;池化把等变换成不变,代价是丢位置信息;嵌入把离散符号放进有距离的空间,质量完全取决于语境统计;注意力让"看哪儿"由内容决定,代价是 O(n²),而 √d_k 是必须的。把这四件事想明白,深度网络就从"玄学"变成了"工程选择"。

接着看

← 返回模块 ← 返回探索专题