2020年人工神经网络第二次作业-参考答案第一题
如下是 2020年人工神经网络第二次作业 中第一题的参考答案。
➤01 第一题参考答案
1.题目分析
(1) 已知条件
本题中的建立的是一个由两个竞争节点组成的竞争网络。竞争层的神经元和五个训练样本都分布在二维坐标系的单位圆上。因此,对于本题在挑选胜出者神经元的时候采用向量内积来度量输入样本 x i = { x i 1 , x i 2 } x_i = \left\{ {x_{i1} ,x_{i2} } \right\} xi={xi1,xi2}与神经元内星向量 w 1 = { w 11 , w 12 } w_1 = \left\{ {w_{11} ,w_{12} } \right\} w1={w11,w12}之间的相似度。内积越大,相似程度越强。
⟨ x i , w j ⟩ = x i 1 w j 1 + x i 2 w j 2 \left\langle {x_i ,w_j } \right\rangle = x_{i1} w_{j1} + x_{i2} w_{j2} ⟨xi,wj⟩=xi1wj1+xi2wj2
根据给定的五个训练样本对应的角度, ∣ x i ∣ = 1 , x i = { 45 , 90 , 130 , 180 , − 135 } \left| {x_i } \right| = 1,\,\,x_i = \left\{ {45,90,130,180, - 135} \right\} ∣xi∣=1,xi={45,90,130,180,−135}
可以获得五个训练样本的空间坐标: x i 1 = cos ( x i ) , x i 2 = sin ( x i ) x_{i1} = \cos \left( {x_i } \right),x_{i2} = \sin \left( {x_i } \right) xi1=cos(xi),xi2=sin(xi)
(2) 求解算法
对于选定的输入样本 x i = { x i 1 , x i 2 } x_i = \left\{ {x_{i1} ,x_{i2} } \right\} xi={xi1,xi2},寻找与它夹角最小的 w j w_j wj: j = arg min n ( x i , w n ) j = \mathop {\arg \min }\limits_n \left( {x_i ,w_n } \right) j=nargmin(xi,wn)
对 w j w_j wj进行学习: w j ← w j + η ⋅ ( x i − w j ) w_j \leftarrow w_j + \eta \cdot \left( {x_i - w_j } \right) wj←wj+η⋅(xi−wj)
然后在进行归一化: w j ← w j ∣ w j ∣ w_j \leftarrow {{w_j } \over {\left| {w_j } \right|}} wj←∣wj∣wj
2.求解过程
(1) 求解程序
使用Python编写求解过程中相关程序参见后面附录中 作业中的程序。
(2) 迭代 一次的结果
w1=[-0.87642497 0.48153841]
w2=[-0.45765242 -0.8891312 ]
- 1
- 2
▲ 迭代一次后的结果
(3) 多次学习过程
- 学习速率: η = 0.05 \eta = 0.05 η=0.05,迭代次数 N = 100 N = 100 N=100;
学习速率相对比较低,两个神经元的位置随着学习过程逐步靠近平衡位置。
▲ 迭代一百次的学习过程
- 学习速率 η = 0.2 \eta = 0.2 η=0.2,迭代次数 N = 100 N = 100 N=100。
学习速率比较大的情况下,最终两个神经元的位置在平衡位置附近抖动。
▲ 迭代100次训练过程
- 学习速率 η = 0.005 \eta = 0.005 η=0.005,迭代次数 N = 100 N = 100 N=100。
学习速率过小,两个神经元移动缓慢。在有限的步骤(N=100)之内无法运动到最佳的位置。
▲ 迭代100次的收敛过程
- 变速率学习:学习速率线性下降,从0.2,经过100步线性下降到0.
▲ 学习速率线性下降
▲ 变学习速率的训练过程
3.结果讨论
-
如果训练样本和网络的权系数都进行了归一化之后,可以通过比较样本与神经元的权系数向量内积来选择获胜的神经元。
-
神经元经过学习之后还需要重新进行归一化,为后面的竞争做准备。
-
学习速率对于竞争网络的收敛情况起到非常重要的作用。通过学习速率的逐步降低,可以保证最终训练结果收敛到一个比较稳定的结果。
➤※ 作业中的程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# HW21.PY -- by Dr. ZhuoQing 2020-11-24
#
# Note:
#============================================================
from headm import *
#------------------------------------------------------------
sample_angle = [45, 90, 130, 180, -135]
sample_xy = array([[cos(a*pi/180), sin(a*pi/180)] for a in sample_angle]).astype('float32')
W12 = array([[1,0], [0,-1]]).astype('float32')
plt.draw()
plt.pause(.2)
#------------------------------------------------------------
def shownet(s, w, title):
plt.clf()
plt.scatter(s[:,0], s[:,1], c='b', s=20.0, alpha=1)
plt.scatter(w[:,0], w[:,1], c='r', s=30.0, alpha=1)
a = linspace(0, 2*pi, 100)
plt.plot(cos(a), sin(a), 'g--', linewidth=1)
plt.xlabel("x1")
plt.ylabel("x2")
plt.grid(True)
plt.title(title)
plt.tight_layout()
# plt.show()
plt.draw()
plt.pause(.001)
#------------------------------------------------------------
def WTA1(x, w):
""" Win-Take-All
In: x-sample(x1,x2)
w-net argument
Ret: id-Win ID of w
"""
innerdot = w.dot(x)
return list(where(innerdot==amax(innerdot)))[0][0]
def normvect(v):
m = v.dot(v)
return v/sqrt(m)
#------------------------------------------------------------
def compete(s, w, lr=0.1):
for ss in s:
winid = WTA1(ss, w)
w[winid] = normvect(w[winid] + lr * (ss - w[winid]))
return w
#------------------------------------------------------------
pltgif = PlotGIF()
sxy = sample_xy
for i in range(100):
random.shuffle(sxy)
eta = 0.2 - 0.2 * i / 99
W12 = compete(sxy, W12, eta)
shownet(sample_xy, W12, 'Step:%d, η=%4.2f'%(i, eta))
pltgif.append(plt)
pltgif.save(r'd:\temp\1.gif')
printf('w1=%s'%W12[0])
printf('w2=%s'%W12[1])
plt.show()
#------------------------------------------------------------
# END OF FILE : HW21.PY
#============================================================
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuoqing.blog.csdn.net/article/details/110085738
- 点赞
- 收藏
- 关注作者
评论(0)