机器学习系列手记(五):非监督学习之自组织映射神经网络

非监督学习

自组织映射神经网络

      自组织映射神经网络(Self-Organizing Map,SOM)是无监督学习方法中一类重要的方法,可用作聚类、高维可视化、数据压缩、特征提取等多种途径。自组织映射神经网络融入了大量人脑神经元的信号处理机制,有着独特的结构特点。

1、自组织映射神经网络的工作流程

      自组织映射神经网络本质上是一个两层的神经网络,包含输入层和输出层(竞争层)。输入层模拟感知外界输入信息的视网膜,输出层模拟做出响应的大脑皮层。输出层中神经元的个数通常是聚类的个数,代表每一个需要聚成的类。训练时采用“竞争学习”的方式,每个输入的样例在输出层中找到一个和它最匹配的节点,称为激活节点,也叫winning neuron;紧接着用随机梯度下降法更新激活节点的参数;同时,和激活节点临近的点也根据它们距离激活节点的远近而适当的更新参数。这种竞争可以通过神经元之间的横向抑制连接(负反馈路径)来实现。自组织映射神经网络的输出层节点是有拓扑关系的,这个拓扑关系依据需求而定,如果想要一维的模型,那么隐藏节点可以是“一维线阵”,如果想要二维拓扑关系,那么就形成一个“二维平面阵”。
      假设输入空间是 D D D 维,输入模式为 x = x= x={ x i , i = 1 , 2 , . . . , D x_i,i=1,2,...,D xi,i=1,2,...,D},输入单元 i i i 和神经元 j j j 之间在计算层的连接权重为 w = w= w={ w i , j , j = 1 , . . . , N , i = 1 , . . . , D w_{i,j},j=1,...,N, i=1,...,D wi,j,j=1,...,N,i=1,...,D},其中 N N N 为神经元的总数。自组织映射神经网络的自组织学习过程可归纳为:
      (1)初始化。所有连接权重都用小的随机值进行初始化。
      (2)竞争。神经元计算每一个输入模式各自的判别函数值,并宣布具有最小判别函数值的特定神经元为胜利者,其中每个神经元j的判别函数为 d ( j ) ( x ) = ∑ i = 1 D ( x i − w i , j ) 2 d_(j)(x)=\sum_{i=1}^{D}(x_i-w_{i,j})^2 d(j)(x)=i=1D(xiwi,j)2
      (3)合作。获胜神经元 I ( x ) I(x) I(x) 决定了兴奋神经元拓扑邻域的空间位置。确定激活节点 I ( x ) I(x) I(x) 之后,我们希望更新和它临近的节点。更新程度计算如下:
在这里插入图片描述
其中 S i j S_{ij} Sij 表示竞争层神经元 i i i j j j 之间的距离, σ ( t ) = σ 0 e x p ( − t τ σ ) \sigma(t)=\sigma_{0} exp(-\frac{t}{\tau_{\sigma}}) σ(t)=σ0exp(τσt)随时间衰减;简单说,临近的节点距离越远,更新的程度要打更大折扣。
      (4)适应。适当调整相关兴奋神经元的连接权重,使获胜的神经元对相似输入模式的后续应用的响应增强: △ w j i = η ( t ) ⋅ T j , I ( x ) ( t ) ⋅ ( x i − w j i ) △w_{ji}=\eta(t) \cdot T_{j,I(x)}(t) \cdot (x_i-w{ji}) wji=η(t)Tj,I(x)(t)(xiwji),其中依赖于时间的学习率定义为: η ( t ) = η 0 e x p ( − t τ n ) \eta(t)=\eta_0exp(-\frac{t}{\tau_n}) η(t)=η0exp(τnt)
      (5)迭代。继续回到步骤(2),直到特征映射趋于稳定。
      在迭代结束后,每个样本所激活的神经元是它对应的类别。
      自组织映射神经网络具有保序映射的特点,可以将任意维输入模式在输出层映射为一维或者二维图形,并保持拓扑结构不变。这种拓扑映射使得“输出层神经元的空间位置对应于输入空间的特定域或特征”。由其学习过程可以看出,每个学习权重更新的效果等同于将获胜的神经元及其邻近的权向量 w i w_i wi 向输入向量 x x x 移动,同时对该过程的迭代进行会使得网络的拓扑有序。
      在自组织映射神经网络中,获胜的神经元将使得相关的各权重向更加有利于它竞争的方向调整,即以获胜神经元为中心,对近邻的神经元表现出兴奋性侧反馈,而对远离的神经元表现出抑制性侧反馈,近邻者互相激励,远离者相互抑制。近邻和远离均有一定范围,对远离的神经元则表现弱激励的作用。

2、自组织映射神经网络与K均值算法的区别

      (1)K均值算法需要实现定下类的个数,也就是K的值。而自组织映射神经网络则不用,隐藏层中的某些节点可以没有任何输入数据属于它,因此聚类结果的实际簇数可能会小于神经元的个数。而K均值算法受K值设定的影响要更大一些。
      (2)K均值算法为每个输入数据找到一个最相似的类后,只更新这个类的参数;自组织映射神经网络会更新临近的节点。所以,K均值算法受noise data的影响比较大,而自组织映射神经网络的准确性可能会比K均值算法低(因为也更新了临近节点)。
      (3)相比而言,自组织映射神经网络的可视化比较好,而且具有优雅的拓扑关系图。
3、设计自组织映射神经网络
      (1)设定输出层神经元的数量
      输出层神经元的数量和训练集样本的类别数相关。若不清楚类倍数,则尽可能设定较多的节点数,以便较好的映射样本的拓扑结构,如果分类过细再酌情减少输出节点。这样可能会带来少量从未更新过权值的“死结点”,但一般可通过重新初始化权值来解决。
      (2)设计输出层节点的排列
      输出层的节点排列成哪种形式取决于实际应用的需要,排列形式应尽量直观地反映出实际问题的物理意义。例如,对于一般的分类问题,一个输出节点能代表一个模式类,用一维线阵既结构简单又意义明确;对于颜色空间或者旅行路径类的问题,二维平面则比较直观。
      (3)权值初始化
      可以随机初始化,但尽量使权值的初始位置与输入样本的大概率分布区域充分重合,避免出现大量的初始“死节点”。一种简单易行的方法是从训练集中随机抽取 m m m 个输入样本作为初始权值。
      (4)设计拓扑领域
      拓扑领域的设计原则是使领域不断缩小,这样输出平面上相邻神经元对应的权值向量之间既有区别又有相当的相似性,从而保证当获胜节点对某一类模式产生最大响应时,其领域节点也能产生较大响应。领域的形状可以是正方形、六边形或菱形。优势领域的大小用领域的半径表示,通常凭借经验来选择。
      (5)设计学习率
      学习率是一个递减的函数,可以结合拓扑邻域的更新一起考虑,也可以分开考虑。在训练开始时,学习率可以选取较大的值,之后以较快的速度下降,这样有利于很快地捕捉到输入向量的大致结构,然后学习率在较小的值上缓降至0值,这样可以精细地调整权值使之符合输入空间的样本分布结构。

你可能感兴趣的:(机器学习系列手记,机器学习,神经网络,算法)