3

竞争神经网络&LVQ

 2 years ago
source link: https://www.guofei.site/2017/12/12/competitive.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

竞争神经网络&LVQ

2017年12月12日

Author: Guofei

文章归类: 2-2-上世纪神经网络 ,文章编号: 256


版权声明:本文作者是郭飞。转载随意,但需要标明原文链接,并通知本人
原文链接:https://www.guofei.site/2017/12/12/competitive.html

Edit

关键词:
竞争神经网络
WTA学习法则

自组织竞争神经网络是一种无监督学习算法

竞争神经网络

ann_competitive.png

输入层记为第I层,输出层记为第J层

1. 归一化

X^=X∣∣X∣∣,W^j=Wj∣∣Wj∣∣X^=X∣∣X∣∣,W^j=Wj∣∣Wj∣∣

2. 寻找获胜神经元

寻找获胜神经元,编号为j∗j∗
所谓获胜神经元,指的是 最相似 的神经元。
最相似神经元的编号j满足j∗=argminj∈{1,2,...n}∣∣X^−W^j∣∣j∗=arg⁡minj∈{1,2,...n}∣∣X^−W^j∣∣

又因为∣∣X^−W^j∣∣=(X^−W^j)(X^−W^j)T−−−−−−−−−−−−−−−−−√=2(1−W^X^T)−−−−−−−−−−√∣∣X^−W^j∣∣=(X^−W^j)(X^−W^j)T=2(1−W^X^T)
所以,最相似 的神经元等价于使得W^X^TW^X^T最大的神经元

所以,只需要寻找j∗=argmaxj∈{1,2,...n}X^W^Tjj∗=arg⁡maxj∈{1,2,...n}X^W^jT

3. 网络输出

根据WTA学习规则(Winner Takes All),获胜神经元输出1,其它神经元输出0
即:yj(t+1)={10j=j∗j≠j∗yj(t+1)={1j=j∗0j≠j∗

4. 权值调整

只有获胜的神经元才调整权值
即Wj(t+1)={W^j(t)+ΔWj=W^j(t)+α(X^−W^j)Wj(t)j=j∗j≠j∗Wj(t+1)={W^j(t)+ΔWj=W^j(t)+α(X^−W^j)j=j∗Wj(t)j≠j∗

其中,αα是学习率,随着学习的进展,逐渐趋近于0

这样的学习规则下,权重始终满足这个性质:
∣∣Wj∣∣=1∣∣Wj∣∣=1(简单列式可以证明)

其它trick

整个学习过程中,可能出现这种情况:
某些神经元从头到尾都没有竞争胜出,叫做 死神经元 。如果死神经元过多的话,分类不够精细。
采用这种策略:每次迭代中,对于那些从未胜出的神经元,设定一个较大的bias,使得这些神经元更加可能胜出,一旦曾经胜出,就把bias设为正常值。

LVQ

学习矢量量化(Learning Vector Quantization, LVQ),于1988年由Kohonen提出的 有监督学习 算法,
根据各种改进版本,分为 LVQ1、LVQ2和LVQ3,其中 LVQ2 的应用最为广泛和有效。

LVQ1 每次只更新最胜出的1个神经元,LVQ2又引入了 次获胜 神经元,这里只写LVQ2的算法步骤,LVQ1更加简单一些。

LVQ2的算法步骤

输入:

数据集 D={(x1,y1),(x2,y2),...,(xm,ym)}D={(x1,y1),(x2,y2),...,(xm,ym)};
类别个数为q
神经元中的向量(叫做 原型向量 ){p1,p2,...,pq}{p1,p2,...,pq}
学习率η∈(0,1)η∈(0,1)

学习过程

step1:输入一个样本x,计算它到每个原型向量的距离
step2:在这些距离中,找到最小的两个,标号i,j(距离本身定义为di,jjdi,jj)

step3:(一堆if,分开写)
如果最近的两个距离,其值差不多(定义为min{didj,djdi}>ρmin{didj,djdi}>ρ)那么,跳到step4(LVQ2更新规则),否则跳到step5(LVQ2更新规则)

step4(LVQ2更新规则):
如果i的类别正确,wi:=wi+η(x−wi),wj:=wj−η(x−wj)wi:=wi+η(x−wi),wj:=wj−η(x−wj)
如果j的类别正确,wi:=wi−η(x−wi),wj:=wj+η(x−wj)wi:=wi−η(x−wi),wj:=wj+η(x−wj)
跳到step1,进行下一步循环

step5(LVQ更新规则):
如果i标签正确wi:=wi+η(x−wi)wi:=wi+η(x−wi) 如果i标签不正确wi:=wi−η(x−wi)wi:=wi−η(x−wi)

LVQ的缺点

  1. 有可能不收敛。想象数据中有错误的标签,权重会一直来回跳动。
  2. 各个维度重要性一样。这个问题来自使用的是欧氏距离。

LVQ的应用

Matlab提供了实现

newlvq
learnlvq, learnlvq2

应用的话,找到两个

  1. 乳腺癌诊治。典型的一个有监督问题。
  2. 人脸朝向识别。输入数据需要用其它算法或人工把眼睛位置特征提取出来,然后人脸朝向是5个类别。也是典型的有监督问题。(更新这部分是2020年,这个应用已经完成历史使命了)

参考文献

《神经网络原理及应用》朱大奇,史慧,科学出版社
《人工神经网络理论及应用》韩立群,机械工业出版社 《Matlab神经网络原理与实例精解》陈明,清华大学出版社
《神经网络43个案例》王小川,北京航空航天大学出版社
《人工神经网络原理》马锐,机械工业出版社


您的支持将鼓励我继续创作!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK