SOM(Self-Organizing Map)网络
SOM网络又称Kohonen网络,自组织特征映射(SOFM)网。
SOM网络是一种竞争的无监督神经网络,是两层结构,将高维输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间的拓扑结构,即高维空间中相似的样例映射到网络输出层中的邻近神经元中。因此,SOM适用于聚类。SOM的训练目的就是为每个神经元找到合适的权向量,以达到保持拓扑结构的目的。
SMO (Sequential Minimal Optimiztion) 序列最小优化,是SVM的一个学习算法。虽然缩写相似,但两者是完全不同的算法。
SOM网络的来源?
Kohonen根据生理学发现,认为神经网络在接受外界输入时,将会分成不同的区域,不同的区域对不同的模式具有不同的响应特征。竞争学习规则的生理学基础是神经细胞的侧抑制现象,当一个神经细胞兴奋后,会对其周围的神经细胞产生抑制作用。
四个主要部分
- 初始化:所有连接的权值初始小的随机数
- 竞争:对每一个输入向量,计算相似度最小的值所对应的神经元获胜
- 邻域:对于获胜的神经元,找到其在输出层的邻域
- 调整:调整获胜神经元和邻域神经元的权值
数据说明
样本点是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算法
- 所有连接$w_{ji}$ (D*N) 的权值初始化一个小的随机数
- 对每个输出神经元,计算与输入向量的相似度:
$$d_j(\mathbf x)=\sum_{i=1}^D(x_i-w_{ji})^2$$
找到最相似的输出神经元,表示为$I(\mathbf x)$
也就是说,哪个神经元与输入向量最接近,哪个神经元就胜出。连续的输入空间,就被映射到离散的输出空间上。 - 找到激活的神经元$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}$是超参数 - 获胜神经元和它的邻域都会调整权值,但调整幅度不同,
$$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}$是超参数 - 返回步骤2,迭代多次,直到权值调整量小于阈值$\epsilon$,停止。
SOM说明
- 在输入空间中,激活的输出神经元及其邻域的权值向量 会不断向 输入向量靠近
- 最终,展开后每个网格点就代表离它最近的输入空间的值,类似聚类中心,每个神经元代表一类,这一类所包含的数据,就是能够使它竞争获胜的那些数据。
- SOM需要确定输出层的神经元个数,排列方式,还有邻域和学习率的超参数
- 二维SOM是原分布到二维空间的非线性投影,该投影试图保持原空间的拓扑特征
- SOM缺乏具体的目标函数,只是找到与原始分布最近似的质心的拓扑集合
例子
蓝色的为训练集的数据分布,网格为SOM的输出层。
- 训练集随机选取一点,找到输出层中最近的神经元为激活神经元
- 将激活神经元及其邻域的权值向量向输入向量靠近
- 迭代多次,网格会充满训练集的分布
网格中的每个点代表着与它最近的原空间的点,反过来说,原空间的点会被聚集到网格点上。
Reference
http://www.cs.bham.ac.uk/~jxb/NN/l16.pdf
https://en.wikipedia.org/wiki/Self-organizing_map