自组织映射(SOM)算法的原理与训练过程
自组织映射(Self-Organizing Map, SOM)是一种无监督的神经网络算法,由Teuvo Kohonen提出,因此也称为Kohonen网络。它的核心目标是将高维输入数据映射到低维(通常是二维)的离散网格上,同时保持数据的拓扑结构。SOM常用于数据可视化、聚类和降维。
题目描述
假设我们有一组高维数据点(例如,每个点是一个10维向量),我们需要将这些数据映射到一个5x5的二维网格上,使得相似的输入数据在网格上位置相近。请解释SOM的工作原理和训练步骤。
解题过程
-
SOM的基本结构
SOM由两层神经元组成:- 输入层:每个神经元对应输入数据的一个维度。例如,10维输入数据有10个输入神经元。
- 输出层(竞争层):通常是一个二维网格(如5x5),每个网格节点是一个输出神经元,与输入层全连接。每个输出神经元有一个权重向量,维度与输入数据相同(如10维)。权重向量代表该神经元在输入空间中的位置。
-
初始化
- 随机初始化所有输出神经元的权重向量(例如,从输入数据中随机采样或使用小随机值)。
- 定义初始学习率(如0.5)和初始邻域半径(如覆盖整个网格的一半)。
-
训练步骤(逐样本迭代)
对每个训练样本(输入向量 \(\mathbf{x}\))执行以下操作:
a. 寻找最佳匹配单元(BMU)
计算输入向量 \(\mathbf{x}\) 与每个输出神经元权重向量 \(\mathbf{w}_j\) 的距离(常用欧氏距离):
\[ d_j = \|\mathbf{x} - \mathbf{w}_j\| \]
选择距离最小的神经元作为BMU(记作 $ c $):
\[ c = \arg\min_j \|\mathbf{x} - \mathbf{w}_j\| \]
BMU是网格上对当前输入最敏感的神经元。
b. 更新权重向量
调整BMU及其邻近神经元的权重向量,使其更接近输入向量 \(\mathbf{x}\)。更新公式为:
\[ \mathbf{w}_j(t+1) = \mathbf{w}_j(t) + \eta(t) \cdot h_{cj}(t) \cdot [\mathbf{x} - \mathbf{w}_j(t)] \]
其中:
- $ t $ 是当前迭代次数。
- $ \eta(t) $ 是随时间衰减的学习率(如 $ \eta(t) = \eta_0 \cdot e^{-t/T} $,其中 $ T $ 是总迭代次数)。
- $ h_{cj}(t) $ 是邻域函数,表示神经元 $ j $ 与BMU(神经元 $ c $)的拓扑距离影响。常用高斯函数:
\[ h_{cj}(t) = \exp\left(-\frac{\|\mathbf{r}_c - \mathbf{r}_j\|^2}{2\sigma(t)^2}\right) \]
$ \mathbf{r}_c $ 和 $ \mathbf{r}_j $ 是神经元在网格上的坐标,$ \sigma(t) $ 是随时间衰减的邻域半径(如 $ \sigma(t) = \sigma_0 \cdot e^{-t/T} $)。
邻域函数确保BMU附近的神经元也被更新,但更新幅度随距离增加而减小。
-
迭代与收敛
- 重复步骤3多次(如1000次迭代),每次使用一个训练样本(可随机采样或遍历数据集)。
- 随着迭代进行,学习率和邻域半径逐渐衰减至零。最终,权重向量会稳定,形成对输入数据的拓扑保持映射。
-
结果解释
- 训练完成后,每个输入数据点会被映射到其BMU所在的网格位置。相似的数据点会聚集在网格的相邻区域,形成“特征地图”。例如,在5x5网格上,不同簇的数据可能占据不同区域,便于可视化分析。
关键点
- SOM通过竞争学习(胜者全权)和邻域更新保持拓扑结构。
- 学习率和邻域半径的衰减是收敛的关键,避免过度振荡。
- SOM的网格可以揭示数据的内在聚类结构,如客户细分或图像特征组织。