竞争神经网络原理
竞争学习神经网络原理
生物学原理:
在人眼的视网膜中存在一种侧抑制现象,即一个神经细胞兴奋后,会对周围的神经细胞产生抑制作用。这种侧抑制使神经细胞之间呈现出竞争,开始可能多个细胞同时兴奋,但兴奋程度最强的神经细胞对周围的神经细胞的抑制作用也越强,其结果使周围神经细胞的兴奋度减弱,从而该神经细胞是这次竞争的胜者。
竞争学习神经网络:
如下图为一个竞争学习神经网络的结构:
其中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