自组织映射(SOM)算法的原理与训练过程
字数 1299 2025-10-28 22:11:24
自组织映射(SOM)算法的原理与训练过程
题目描述
自组织映射(Self-Organizing Map, SOM)是一种无监督的神经网络算法,由Teuvo Kohonen提出,因此也称为Kohonen网络。它的核心目标是将高维输入数据映射到低维(通常是二维)的离散网格上,同时保持数据的拓扑结构(即原始空间中相近的样本在映射后仍相邻)。SOM常用于数据降维、聚类和可视化。例如,对客户行为数据生成二维特征地图,相似客户会聚集在相邻区域。
关键概念
- 拓扑结构:SOM由神经元网格(如二维平面)组成,每个神经元有一个与输入数据维度相同的权重向量。
- 竞争机制:对每个输入样本,找到权重向量最相似的神经元(胜者神经元,Winner)。
- 邻域函数:胜者神经元及其邻近神经元的权重会被更新,使它们更接近输入样本。
解题过程
-
初始化
- 设定网格大小(如5×5),随机初始化每个神经元的权重向量(维度与输入数据相同)。
- 定义初始学习率η₀(如0.1)和初始邻域半径σ₀(如网格半径的一半)。
-
迭代训练(重复以下步骤直到收敛)
步骤1:随机选择一个输入样本x- 例如,x是一个三维向量:[0.2, 0.8, 0.5]。
步骤2:寻找胜者神经元(Best Matching Unit, BMU)
- 计算x与所有神经元权重向量的欧氏距离,选择距离最小的神经元作为BMU。
- 公式:BMU = argminⱼ ||x - wⱼ||,其中wⱼ是神经元j的权重。
步骤3:更新胜者及其邻域神经元的权重
- 计算邻域函数(如高斯函数),确定每个神经元j的更新强度:
\[ h_{j,BMU}(t) = \exp\left(-\frac{d_{j,BMU}^2}{2\sigma(t)^2}\right) \]
其中d_{j,BMU}是神经元j与BMU在网格中的距离(非权重空间),σ(t)是随时间衰减的邻域半径。
- 更新权重:
\[ w_j(t+1) = w_j(t) + \eta(t) \cdot h_{j,BMU}(t) \cdot [x - w_j(t)] \]
其中η(t)是随时间衰减的学习率(如η(t) = η₀ exp(-t/T))。
步骤4:衰减参数
- 每轮迭代后,减小学习率η(t)和邻域半径σ(t),确保网络逐渐稳定。
- 收敛结果
- 训练完成后,相似输入样本会激活网格中相邻的神经元,形成拓扑保持的映射。
示例说明
假设输入是二维数据点(如[1.0, 0.5]),网格为2×2。
- 初始化:随机生成4个神经元的权重(如w₁=[0.2,0.8], w₂=[0.9,0.1], ...)。
- 选择样本x=[1.0,0.5],计算与w₁~w₄的距离,假设w₂最近(BMU)。
- 更新w₂及其邻居(如相邻的w₁和w₃):将它们的权重向x方向微调,调整幅度随距离衰减。
- 多次迭代后,数据点聚集到特定区域,形成有序映射。
核心特点
- 无监督学习,无需标签。
- 保持拓扑性质,适合可视化高维数据关系。
- 邻域更新机制是SOM与K-means的关键区别(K-means仅更新簇中心,SOM更新整个邻域)。