跳到主要内容

自组织映射 — 无监督的邻居地图与全书收束

这一章讲三件事: 不用标签的「原型网络」怎么工作——没有标准答案, 靠什么组织自己;一张网格怎么保住高维数据的「邻居关系」; 以及用全书最后一条主走查收束整本书的主线。 读完你会拿到第四条架构先验:「离得近就是像」,和整本书的完整地图。

1. 问题:没有标签,怎么组织数据

第 10 章的 RBF 有老师(答案定输出权重);现在把老师拿走:手里只有数据, 要把几十万个高维样本(比如每个客户十几项属性)变成一张人能看的图。 聚类的老办法(第 03 章的 k-means)能把数据分成几堆,但堆与堆之间没有「远近」—— 它不知道「老年储户」和「中年储户」谁挨谁更近。

SOM(self-organizing map,自组织映射,又称 Kohonen 图,发明人 Teuvo Kohonen) 的增量就在这一格:把神经元排成一张二维网格,学习之后,相似的输入不仅归同一个神经元, 还落在网格上相邻的位置——行话叫拓扑保持:输入空间的邻居关系,在地图上被保住了1

2. 机制:竞争 + 合作,没有损失函数

SOM 的训练里没有任何损失函数、没有梯度(与第 05 章全套工具无关), 只有两条本能2:

  • 竞争:每个样本进场,所有神经元比谁最像它——算权重向量与输入的距离, 最近的那个获胜,称 BMU(best matching unit,最佳匹配单元);
  • 合作:BMU 和它网格上的邻居,一起把自己的权重朝输入挪一点—— 挪多少由学习率定,邻居受多大牵连由邻域函数定3
权重更新式(全章核心,与 RBF 的记忆公式同一地位):

W(t+1) = W(t) + η(t) · h(c,b) · (x − W(t))

图说:η 是学习率,h 是邻居牵连度(离 BMU 越远越接近 0),
(x − W) 是「自己与输入的差距」。三者相乘,就是「朝着输入挪一小步」。
η 和邻域半径都随时间衰减(下一节),先粗排、后细调。

训练收敛后,SOM 给你两张东西:每格的权重(该格代表的「典型客户」)、 以及每格之间的距离图(格子之间差异越大颜色越亮,行话叫 U 矩阵)—— 高维数据变成了一张可以指着的地图

3. 主走查:原书唯一算到底的一组数

原书 8.4 节给了全书最完整的一次手算,整段保留(所有数字都是书里的)4:

场景:3 个特征的输入,3×3 网格共 9 个输出神经元。
输入:x = [0.7, 0.6, 0.9]

① 竞争:算 9 个神经元与 x 的欧氏距离,最小者胜。
书里的结果:节点 3 距离 0.4,是全部节点里最小的 → BMU。
② 合作:以节点 3 为圆心确定邻域半径,圈内的节点都要动。
③ 挪动(以 BMU 自己为例,学习率 0.5):
旧权重 W = [0.39, 0.42, 0.45]
W₁' = 0.39 + 0.5 × (0.7 − 0.39) = 0.39 + 0.155 = 0.545
W₂' = 0.42 + 0.5 × (0.6 − 0.42) = 0.42 + 0.09 = 0.51
W₃' = 0.45 + 0.5 × (0.9 − 0.45) = 0.45 + 0.225 = 0.675
新权重 = [0.545, 0.51, 0.675] —— 每个分量都朝输入挪了一半的路。

图说:三步循环(竞争→合作→挪动)对每个样本重复,
网格逐渐「铺」到数据分布上。这一段是全书教学质量最高的走查。

每个数都经得起手验:0.545、0.51、0.675 三个结果用小学算术即可复核—— 这也是它比前几章的「贴代码」更可信赖的原因。

4. 收缩的邻域:先粗排,后细调

SOM 有个内置的日程表,两条衰减曲线(书里的公式)5:

  • 邻域半径 σ(t) = σ₀·exp(−t/λ):初期半径大,「一大片邻居一起挪」,网格快速铺开定大形;
  • 学习率 L(t) = L₀·exp(−t/λ):步子随时间越迈越小,末期只剩 BMU 自己微调;
  • 邻居的牵连度用高斯形状:离 BMU 越远,被带着挪的幅度越小。

原书还给了半径的经验值:数据标准化过(均值 0 方差 1)就取 σ≈4;数据在 [0,1] 就取 σ≈1; 网格 10×10 取 σ≈5,100×100 取 σ≈50——半径与网格同尺度6

这条曲线看着眼熟吗? 它和第 05 章优化器的「学习率退火」是同一个思想: 先大步找方向,再小步做精修。一个用在梯度下降里,一个用在无监督的网格上—— 「先粗后细」是训练类算法的通用节奏。

5. 用例:把可疑客户画出来

原书的实战场景:银行客户申请数据,用 MiniSom(一个 SOM 现成库)画客户地图。 流程7:

  1. 属性归一化到 [0,1] (十几个属性量纲不同,不归一等于让最大那项说了算);
  2. 10×10 网格、σ=1.0、学习率 0.5,训练;
  3. 画距离图(U 矩阵),再按「申请是否获批」给每个客户打点:红圈=未获批,绿方=获批;
  4. 读图抓欺诈:同时亮(离邻居都远、孤悬格点)又混着红圈的格子,就是可疑人群;
  5. 用 win_map 把可疑格子上的客户名单拉出来,反归一化回原始值,交给人工核查。

无监督异常检测的套路全在这里:不教它什么是欺诈,只画地图,异常自己浮出来

用例的三处硬伤,如实记: ① 8.5.1 给数据集配的统计(284,807 笔交易、492 笔欺诈、 V1-V28 主成分)是另一个公开信用卡数据集的数字,而代码与可视化讲的是「客户申请审批」 ——两个数据集的描述被缝在了一起;② 拉名单时用了 sc.inverse_transform, 但前面定义的变量叫 scaler,照抄会 NameError;③ 文字说「迭代 100 次」, 代码写的是 1000 次8思路真实,细节别照抄。

6. 作者的判断与证据

  • 可信的部分: 8.4 逐数走查(本组拆解第 3 节整段采用)、两条衰减公式、 MiniSom 用例的整体思路9
  • 水分最重的开头: 8.5 开篇用了整页「欺诈检测市场规模将达 333.9 亿美元」的 咨询报告式铺垫——与机制无关,纯凑篇幅10
  • 引用依旧擦边: 学生行为聚类、土壤水文、分子动力学——主题相邻,不支撑正文论断11
  • 书里没点破的一层关系(我们点破): SOM 与第 10 章的 RBF 共享同一套「原型」骨架 ——每个神经元一个模板、按距离响应。RBF 把模板的响应拿去加权求和预测答案(有监督), SOM 把模板的响应拿去抢地盘画地图(无监督)。同一思想,两副面孔。

判断(我们的,不是书里的): 这条「原型」亲缘,连同 §7 那张「遇到新架构先问 『它假设了数据有什么结构』」的复用法,是我们的判断,不是书里的:原书两章各自成章, 从未把 RBF 与 SOM 并置,也没提出「先验地图」这个读法。我们主张它成立,依据是两章的 机制同构(中心/模板 + 距离响应)与用途互补(预测 vs 可视化)。 如果错,会错在: 如果某类架构的机制无法归结为「对数据结构的假设」 (比如主要来自工程约束或硬件限制的设计),硬套这张地图就会强行归因—— 判据是:同一个架构换到一个数据结构明显不同的领域,它是否仍然成立;不成立, 说明它押的确实是数据结构,成立则说明押的只是工程便利,地图上就该给它换位置。

7. 全书收束:四种先验,一张地图

最后把整本书的主线合拢——这也是我们与原书目录最大的分岔:原书给了八个独立章节, 我们给一条线。每一种架构,都是往机器里塞进一条关于数据的假设(先验), 先验越贴合数据,要学的参数和要喂的数据就越少:

先验架构假设的一句话换来什么本组拆解
空间CNN图案平移了也该认识参数 10¹² → 几百06、07 章
时间RNN/LSTM上一步影响下一步长程因果可学08 章
博弈GAN分不出真假就是学到位无答案也能学分布09 章
距离RBF / SOM离得近就是像可解释、训练便宜10、11 章

第 06 章那条「约十个数量级」的参数链是这条线的数学锚点12; 第 04、05 章的零件与优化器是所有架构共用的地基; 第 02、03 章的经典工具箱是「先验革命」之前的旧大陆——今天在表格数据上仍是首选。

读别的书时,这张表可以直接复用: 遇到任何新架构,先问一句 「它假设了数据有什么结构?」——答案就是它在整张地图上的位置。

8. 可带走的

  1. SOM = 网格化的无监督原型网络;卖点只有一个词:拓扑保持——相似的输入落在相邻格子;
  2. 训练无损失无梯度,两条本能:竞争(选 BMU)+ 合作(邻居一起朝输入挪);
  3. 主走查三个数:距离 0.4 胜出、学习率 0.5、权重 [0.39,0.42,0.45] → [0.545, 0.51, 0.675];
  4. 邻域与学习率双双指数衰减(σ(t)=σ₀e^(−t/λ)):先粗排后细调——与优化器退火同一节奏;
  5. 半径经验值:标准化数据 σ≈4,[0,1] 数据 σ≈1,网格多大半径多大;
  6. 异常检测套路:U 矩阵亮区 + 类别标记(红圈绿方那类记号)重合的格子 = 可疑人群,名单拉出来给人工;
  7. 用例思路可用、细节别抄:数据集描述张冠李戴、变量名对不上、迭代次数文不对码;
  8. RBF 与 SOM 是「原型」思想的监督/无监督两副面孔;
  9. 全书一句话:架构 = 先验——空间、时间、博弈、距离,四条假设,一张地图。

9. 原文地图

主题原书章原文位置
SOM 定位与 Kohonen8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:31(搜「Kohonen」) · text/45-ch08-8-self-organizing-maps.txt:32(搜「competitive」)
无监督不靠标签8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:33(搜「unsupervised」)
拓扑保持8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:11(搜「topological」) · text/45-ch08-8-self-organizing-maps.txt:47(搜「topological ordering」)
网格与权重向量8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:38(搜「grid」) · text/45-ch08-8-self-organizing-maps.txt:78(搜「weight vector」)
竞争与合作8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:42(搜「competition and cooperation」) · text/45-ch08-8-self-organizing-maps.txt:41(搜「compete」)
BMU 定义8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:44(搜「BMU」) · text/45-ch08-8-self-organizing-maps.txt:88(搜「Euclidean distance」)
权重更新式8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:118(搜「weight update rule」) · text/45-ch08-8-self-organizing-maps.txt:120(搜「W ( t+1 )」)
η 与 h 随时间衰减8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:132(搜「decrease」)
3 特征 9 节点设定8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:192(搜「three features」) · text/45-ch08-8-self-organizing-maps.txt:192(搜「nine」)
输入 [0.7, 0.6, 0.9]8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:218(搜「0.7」)
欧氏距离公式8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:270(搜「Euclidean」) · text/45-ch08-8-self-organizing-maps.txt:276(搜「Mathematically」)
节点 3 距离 0.4 胜出8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:304(搜「node number 3」) · text/45-ch08-8-self-organizing-maps.txt:294(搜「smallest」)
邻域半径与时间衰减8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:318(搜「radius」) · text/45-ch08-8-self-organizing-maps.txt:343(搜「exp」)
半径经验值8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:365(搜「mean-zero」) · text/45-ch08-8-self-organizing-maps.txt:369(搜「10」)
权重更新三算式8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:414(搜「0.39」) · text/45-ch08-8-self-organizing-maps.txt:435(搜「0.545」)
L(t) 与 θ(t) 公式8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:441(搜「exp」) · text/45-ch08-8-self-organizing-maps.txt:14(搜「influence」)
MiniSom 用例参数8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:616(搜「grid_size」) · text/45-ch08-8-self-organizing-maps.txt:620(搜「MiniSom」)
可视化与红圈绿方8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:673(搜「distance_map」) · text/45-ch08-8-self-organizing-maps.txt:708(搜「didn」)
拉欺诈名单8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:720(搜「win_map」) · text/45-ch08-8-self-organizing-maps.txt:733(搜「inverse_transform」)
数据集描述张冠李戴8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:512(搜「284,807」) · text/45-ch08-8-self-organizing-maps.txt:516(搜「V1」)
sc/scaler 变量错位8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:733(搜「sc」) · text/45-ch08-8-self-organizing-maps.txt:589(搜「scaler」)
迭代次数文不对码8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:652(搜「1000」) · text/45-ch08-8-self-organizing-maps.txt:656(搜「100」)
市场规模废话开头8 Self-Organizing Mapstext/45-ch08-8-self-organizing-maps.txt:460(搜「33.19」)

Footnotes

  1. 出处:「8 Self-Organizing Maps」第 11 段(text/45-ch08-8-self-organizing-maps.txt:11,搜「topological」)与第 46 段(搜「topological ordering」)。原文:SOM 调整权重把输入映到网格上,保住数据点之间的拓扑关系;训练后网格上相邻神经元代表相似输入。

  2. 出处:「8 Self-Organizing Maps」第 42 段(搜「competition and cooperation」)与第 86 段(搜「compete」)。两大机制:神经元竞争成为最佳匹配;获胜者及其邻居一起更新。

  3. 出处:「8 Self-Organizing Maps」第 118 段(搜「weight update rule」)与第 120 段(text/45-ch08-8-self-organizing-maps.txt:120,搜「W ( t+1 )」)。更新式 W(t+1)=W(t)+η(t)×h(c,b)×(x−W(t));h 为邻域函数、决定 BMU(c) 对被更新神经元(b)的影响。

  4. 出处:「8 Self-Organizing Maps」第 218 段(text/45-ch08-8-self-organizing-maps.txt:218,搜「0.7」)(输入 [0.7,0.6,0.9]);第 304 段(搜「node number 3」)(节点 3 距离 0.4 为 BMU);第 414-435 段(:414,搜「0.39」;:435,搜「0.545」)(学习率 0.5 下三个分量的更新算式与结果)。三特征九节点的设定在第 192 段(搜「three features」)。

  5. 出处:「8 Self-Organizing Maps」第 343 段(搜「exp」)(σ(t)=σ0·exp(−t/λ),σ0 为初始宽度、λ 为时间常数)与第 441 段(搜「exp」)(L(t)=L0·exp(−t/λ));邻居牵连度的高斯形状 θ(t)=exp(−dist²/2σ(t)²) 在第 449 段(搜「influence」)。

  6. 出处:「8 Self-Organizing Maps」第 365 段(搜「mean-zero」)与第 369 段(搜「10」)。原文:标准化数据 σ≈4,[0,1] 数据 σ≈1;10×10 网格 σ≈5,100×100 网格 σ≈50。

  7. 出处:「8 Self-Organizing Maps」第 484 段(搜「Initialize the SOM」)起(七步流程);MiniSom 参数(10×10、sigma=1.0、学习率 0.5)在第 616-630 段(:616,搜「grid_size」);U 矩阵可视化与类别标记在第 667-710 段(:673,搜「distance_map」);红圈=未获批、白区=潜在欺诈在第 707-710 段;win_map 拉名单、反归一化在第 720-747 段。

  8. 出处:「8 Self-Organizing Maps」第 510 段(搜「284,807」)与第 516 段(搜「V1」)(284,807 笔/492 欺诈/V1-V28 的统计属于另一个信用卡交易数据集;补充(不在书里,来自通用知识):该组数字出自 Kaggle creditcard.csv 数据说明);变量错位在第 733 段(搜「sc」)对第 589 段(搜「scaler」);迭代次数在第 652 段(搜「1000」)对第 656 段(搜「100」)。

  9. 出处:「8 Self-Organizing Maps」第 192 段起(8.4 整节)与第 616 段起(用例);可信度评估汇总自本组拆解第 3、5 节的证据。

  10. 出处:「8 Self-Organizing Maps」第 460 段(text/45-ch08-8-self-organizing-maps.txt:460,搜「33.19」)。原文引 MarketsandMarkets 报告称欺诈检测与预防市场 2021 年将达 333.9 亿美元。

  11. 出处:「8 Self-Organizing Maps」第 768 段(搜「students」)与第 785 段(搜「soil」);分子动力学在第 781 段(搜「molecular」)。参考文献多为主题相邻的应用论文。

  12. 出处:「4 Convolutional Neural Networks」第 349 段(text/41-ch04-4-convolutional-neural-networks.txt:349,搜「1000」)、第 392 段(搜「4」)、第 446 段(搜「few hundred」)——参数量三级跳;本组拆解第 06 章 §1 有完整走查。