自组织映射是什么?把高维数据摆到一张保持邻近关系的二维地图上
自组织映射(Self-Organizing Map,SOM),也叫科霍宁网络,是一种无监督学习的神经网络,由芬兰赫尔辛基理工大学的托伊沃·科霍宁在 1982 年提出。它能够把高维的数据映射到一个二维的网格上,同时保持数据之间的邻近关系:在原始空间中彼此相似的数据,在网格上也会被放在相邻的位置,就像一张把复杂的数据“摊平”的地图。
它的结构
自组织映射的结构很简单:一个输入层,接收高维的数据;一个输出层,由许多神经元排列成一个二维的网格,比如 10 乘 10 的方格或六边形格子。每个输出神经元都有一个与输入同样维度的权重向量,可以看作它在输入空间中所代表的一个“原型”。与普通的神经网络不同,自组织映射中输出神经元在网格上的位置是有意义的:相邻的神经元应该代表相似的数据。
它是怎么学习的
自组织映射通过竞争学习和邻域合作来训练。首先,用随机的小数初始化所有神经元的权重向量。然后反复地进行以下步骤:随机地取一个训练样本;计算它与每个神经元的权重向量之间的距离,找出距离最近的那个神经元,叫作“获胜神经元”或最佳匹配单元;更新获胜神经元的权重,让它朝着这个样本的方向移动一点;同时,网格上与获胜神经元相邻的那些神经元,也要朝着这个样本的方向移动,离获胜神经元越近的移动得越多,越远的移动得越少,这由一个邻域函数来控制,通常是以获胜神经元为中心的高斯函数。随着训练的进行,学习率和邻域的范围都逐渐地缩小:开始时邻域很大,整个网格大致地展开、形成整体的布局;后期邻域变小,每个神经元进行精细的调整。
正是“邻居一起更新”的机制,让自组织映射与普通的竞争学习区别开来:它不仅把数据分成了若干组,还让相似的组在网格上彼此靠近,形成一张有序的地图。这一思想受到了大脑皮层的启发:在大脑中,处理相似信息的神经元往往位于相邻的区域,比如在听觉皮层中,对不同频率声音敏感的神经元按频率高低有序地排列,在躯体感觉皮层中,身体相邻部位的感觉对应着相邻的脑区。
如何解读自组织映射
训练完成后,每个数据样本都可以被映射到网格上它的获胜神经元所在的位置。观察数据在网格上的分布,就能直观地了解数据的结构。一种常用的可视化工具是 U-矩阵:计算网格上每个神经元与它的邻居之间权重向量的距离,用颜色表示出来。距离小的区域颜色浅,表示这里的神经元彼此相似,构成一个簇;距离大的地方颜色深,就像山脊一样,标出了不同簇之间的边界。还可以把每个输入特征在网格上的取值分别画出来,观察不同特征在地图上是如何变化的,以及特征之间的关系。
应用
自组织映射被广泛用于数据的可视化和探索性分析:比如分析各个国家的经济和社会指标,把发展水平相似的国家排在一起;对文档进行组织,科霍宁团队开发的 WEBSOM 曾把上百万篇文档组织成一张可以浏览的主题地图;在生物信息学中分析基因表达数据;在金融中进行客户细分和风险分析;在工业中监测设备的运行状态。它的优点是直观、能够同时完成降维和聚类;局限在于网格的大小和形状需要事先确定,训练结果受初始化和参数的影响,而且它主要用于可视化和探索,作为降维方法时,t-SNE、UMAP 等方法往往效果更好。