竞争神经网络原理

来源:互联网 发布:js的arguments例子 编辑:程序博客网 时间:2024/06/05 15:48

         竞争学习神经网络原理

生物学原理:

 在人眼的视网膜中存在一种侧抑制现象,即一个神经细胞兴奋后,会对周围的神经细胞产生抑制作用。这种侧抑制使神经细胞之间呈现出竞争,开始可能多个细胞同时兴奋,但兴奋程度最强的神经细胞对周围的神经细胞的抑制作用也越强,其结果使周围神经细胞的兴奋度减弱,从而该神经细胞是这次竞争的胜者。

竞争学习神经网络:

  如下图为一个竞争学习神经网络的结构:


  其中Xi(i=1,2...n)为输入模式,Wij为m行n列的权值矩阵矩阵,cj(j=1,2,3...m)为输出


 在竞争学习策略采用的典型学习规则为胜者为王。该算法可分为3个步骤:

1.向量归一化

首先将自组织网络中的当前输入模式X和权值W1j,W2j,W3j…Wnj(j=1,2,3…m)归一化.

得到X^,Wi^(i=1,2,3…n).归一化方法为:

  2.寻找优胜神经元:

当网络得到一个输入模式时,竞争层所有的神经元对应的权值向量Wj^(i=1,2,3...m)均与X^进行比较,将与X^最为相似的Wi^判定为获胜神经元。测量相似性的方法是对Wi^与X^计算欧式距离(或夹角余弦)。

1.欧式距离:

 

因此要使单位向量的欧式距离最小,只需两向量的点积最大:

                 max  :Wj^*X^(j=1,2,3...m)

  3.网络输出与权值调整:

获胜神经元的输出c为1,其余为0.即为:

      oj=1 where Wj^*X^ is max else 0

 只有获胜神经元才能调整权值Wj^:

      Wj=Wj^+a*(X^-Wj^)(调整权值)

      Wj^=Wj/||Wj||  (重新归一化)

式子中 a:[0,1]为学习率,一般其值随着学习的进展而减小。

步骤3完成后,重复1,2,3,直到a衰减为0



原理:

设输入模式为二维向量,归一化后其矢端可以认为在单位圆上的点,设竞争层有两个神经元。归一化后的W也为单位圆上的点,从输入到输出可以看出其大体上分为两个簇。当向网络输入X,获胜的W的方向会不断调整,最终W会稳定如图:


.

从而模式X被分为两类W1,W2.


以下是github的python源代码:

https://github.com/Masksky/competitive-network





    










原创粉丝点击