SOM网络

Posted by ZhengYang on 2016-08-25

SOM(Self-Organizing Map)网络

SOM网络又称Kohonen网络,自组织特征映射(SOFM)网。
SOM网络是一种竞争的无监督神经网络,是两层结构,将高维输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间的拓扑结构,即高维空间中相似的样例映射到网络输出层中的邻近神经元中。因此,SOM适用于聚类。SOM的训练目的就是为每个神经元找到合适的权向量,以达到保持拓扑结构的目的。

SMO (Sequential Minimal Optimiztion) 序列最小优化,是SVM的一个学习算法。虽然缩写相似,但两者是完全不同的算法。

SOM网络的来源?

Kohonen根据生理学发现,认为神经网络在接受外界输入时,将会分成不同的区域,不同的区域对不同的模式具有不同的响应特征。竞争学习规则的生理学基础是神经细胞的侧抑制现象,当一个神经细胞兴奋后,会对其周围的神经细胞产生抑制作用。

四个主要部分

  1. 初始化:所有连接的权值初始小的随机数
  2. 竞争:对每一个输入向量,计算相似度最小的值所对应的神经元获胜
  3. 邻域:对于获胜的神经元,找到其在输出层的邻域
  4. 调整:调整获胜神经元和邻域神经元的权值

数据说明

样本点是D维 $\mathbf x=\{x_i:i=1,…,D\}$
输入单元D个,每个输入单元的索引为$i$
输出神经元N个,每个神经元的索引为$j$,(二维有矩阵排列,六边形排列)
连接权值$\mathbf w_j={w_{ji}:j=1,2,…,N; i=1,…,D}$,网络全连接
w第一维是输出神经元,第二维是输入单元

SMO算法

  1. 所有连接$w_{ji}$ (D*N) 的权值初始化一个小的随机数
  2. 对每个输出神经元,计算与输入向量的相似度:
    $$d_j(\mathbf x)=\sum_{i=1}^D(x_i-w_{ji})^2$$
    找到最相似的输出神经元,表示为$I(\mathbf x)$
    也就是说,哪个神经元与输入向量最接近,哪个神经元就胜出。连续的输入空间,就被映射到离散的输出空间上。
  3. 找到激活的神经元$I(x)$后,找到它邻近的神经元。令$S_{jk}$表示输出神经元 j 和输出神经元 k 在平面上的(欧式)距离,分配给邻域内的神经元 j 一个更新权重,
    $$T_{j,I(\mathbf x)}=exp(-S^2_{j,I(\mathbf x)}/2\sigma^2(t))$$
    即每个输出神经元 j 对应一个权值,越靠近激活神经元$I(x)$,其权值越大
    $\sigma(t)$控制着邻域的大小,且规定邻域随着时间增加,范围减小,也就是$\sigma(t)$在随时间衰减,常见的是指数衰减,$\sigma(t)=\sigma_0exp(-t/\tau_{\sigma})$,$\sigma_0, \tau_{\sigma}$是超参数
  4. 获胜神经元和它的邻域都会调整权值,但调整幅度不同,
    $$w_{ji}=w_{ji}+\eta(t)T_{j,I(\mathbf x)}(x_i-w_{ji})$$
    调整量也随着时间减小,因此也可以用指数衰减表示学习率,$\eta(t)=\eta_0exp(-t/tau_{\tau})$,$\eta_0, \tau_{\eta}$是超参数
  5. 返回步骤2,迭代多次,直到权值调整量小于阈值$\epsilon$,停止。

SOM说明

  1. 在输入空间中,激活的输出神经元及其邻域的权值向量 会不断向 输入向量靠近
  2. 最终,展开后每个网格点就代表离它最近的输入空间的值,类似聚类中心,每个神经元代表一类,这一类所包含的数据,就是能够使它竞争获胜的那些数据。
  3. SOM需要确定输出层的神经元个数,排列方式,还有邻域和学习率的超参数
  4. 二维SOM是原分布到二维空间的非线性投影,该投影试图保持原空间的拓扑特征
  5. SOM缺乏具体的目标函数,只是找到与原始分布最近似的质心的拓扑集合

例子


蓝色的为训练集的数据分布,网格为SOM的输出层。

  1. 训练集随机选取一点,找到输出层中最近的神经元为激活神经元
  2. 将激活神经元及其邻域的权值向量向输入向量靠近
  3. 迭代多次,网格会充满训练集的分布

网格中的每个点代表着与它最近的原空间的点,反过来说,原空间的点会被聚集到网格点上。

Reference

http://www.cs.bham.ac.uk/~jxb/NN/l16.pdf
https://en.wikipedia.org/wiki/Self-organizing_map