自组织映射

自组织映射（SOM）或自组织特征映射（SOFM）是一种使用非監督式學習来产生训练样本的输入空间的一个低维（通常是二维）离散化的表示的人工神经网络（ANN）。自组织映射与其他人工神经网络的不同之处在于它使用一个邻近函数来保持输入空间的拓扑性质。

学习算法

自组织映射中学习的目标是使网络的不同部分对输入模式有相似的响应。这部分的灵感是来自于人类大脑皮层的不同部分处理视觉、听觉或其他感官信息的方式。

神经元的权重初始化为小随机值或均匀采样自两个最大的主成分特征向量范围。用后一种方法初始化，学习的速率就会更快，因为初始的权重已经是SOM权重的一个很好的近似了。

必须提供给网络大量的能够实例向量来尽可能近地表示映射中期望的那些类型的向量。这些例子通常在迭代中数次使用。

训练采用竞争性学习。当训练样本提供给网络的时候，就会计算它与每个权重之间的欧氏距离。权重向量与输入最相似的神经元称作最佳匹配单元（BMU）。SOM栅格中BMU的权重以及与其邻近的神经元会向着输入向量调整。从BMU变化的量会随着（栅格中）时间和距离而降低。拥有权值 Wv(s) 的神经元v的更新公式为
Wv(s + 1) = Wv(s) + Θ(u, v, s) α(s)(D(t) - Wv(s)),
其中 s 为步长指数，t 是训练样本的指数，D(t) 是输入向量，u 是 D(t) 的BMU指数，α(s) 是一个单调递减的学习系数；Θ(u, v, s) 是在步长为 s 下给出神经元 u 和神经元 v 之间距离的邻近函数。 根据实现的不同，t 可以系统地（ 0, 1, 2...T-1，然后重复，T 为训练样本的大小），也可以随机从数据集中取出（Bootstrap抽样），或采用其他一些抽样方法（如jackknifing）。

邻近函数Θ(u, v, s)取决于BMU（神经元u）与神经元v之间的栅格距离。在最简单的形式中，对所有足够接近BMU的神经元都是1，其余都是0，但高斯函数也是一种常见的选择。不管函数形式如何，邻近函数都会随着时间收缩。 在起初邻域范围很大的时候，自组织发生在全局范围内。当邻域范围缩小到仅有两个神经元时，权值会收敛于局部估计值。在一些实现中，学习系数α会随着增加s而平稳减小，另一些实现（特别是t扫描训练数据集的情况）中步进式地下降，每 T 步一次。

对每个输入向量这个过程都会重复（通常很多次）循环λ。该网络把输入数据集中的类别或模式与相关联的输出节点拉近。如果可以重新命名这些模式，这些名称就会附加到已训练的网络中的相关节点中。

在映射中，会有一个单一“获胜”神经元：该神经元的权重向量与输入向量最接近。这可以很容易由计算输入向量和权值向量的欧氏距离确定。

算法 
 随机排列映射中节点的权值向量
 取出一个输入向量 
 在映射中遍历每个节点
 使用欧氏距离公式得到输入向量和该映射节点的权值向量之间的相似度
 找出距离最小的节点（这个节点是最佳匹配单元，BMU）
 通过更新将BMU邻域内的节点（包括BMU本身）拉向输入向量。
 Wv(s + 1) = Wv(s) + Θ(u, v, s) α(s)(D(t) - Wv(s))
 增加 s 并回到第二步只要  就继续循环

参考资料 

人工神经网络
芬兰发明