2020年人工神经网络第二次作业-参考答案第二题
如下是 2020年人工神经网络第二次作业 中第二题的参考答案。
➤01 第二题参考答案
1.题目分析
(1) 训练样本
训练样本是低分辨率(5×5)字符,可以使用长度为25的向量表示,下面就是字母C,I,T对应的向量,以及由它们组成的训练样本矩阵x_data。
c_data = [0,1,1,1,0,1,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0,1,1,1,0]
i_data = [0,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,0]
t_data = [1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0]
x_data = array[c_data, i_data, t_data]
训练样本是由上述三个无噪声样本通过增加海明距离(Hamming Distance)为1的噪声,即两个二值向量之间不相同元素的个数为1产生。
请注意,作为训练样本的数据集合中,C字符数据与I,T两个字符数据相距比较远。I,T两个字符数据向量之间的距离比较近。这种情况为后面使用竞争网络进行聚类增加了困难。
(2) 网络结构
- 网络结构:
- 输入节点个数:25
- 竞争层节点个数:3
▲ 网络结构
(3) 显示权系数
由于输入样本和权系数是长度为25的向量,它们代表着5×5的字符。为了显示出25维向量的意义,通过绘制坐标系中的散点图来显示它们对应的字符形式。
下面是使用python中的matplotlib函数绘制出没有添加噪声的x_data形态。
def plotw(w, title):plt.clf()for id,ww in enumerate(w):x = id * CHAR_DIST * DOT_SIZEfor hid,v in enumerate(ww):line = hid // 5col = hid % 5yy = (5-line) * DOT_SIZExx = x + col * DOT_SIZEarea = v * 500plt.scatter(xx, yy, s=area, c='b', alpha=0.5)
▲ 三个训练样本显示的情况
▲ 添加噪声后的训练样本
2.求解过程
求解过程中相关程序参见后面附录中 作业中的程序。
(1) 随机初始化开始
在开始,选择学习速率固定位η=0.1\eta = 0.1η=0.1,训练周期N=100。
按照题意,将三个神经元随机初始化。将权系数对应的图像如下:
▲ 三个神经元随机初始化
下面是训练过程权系数演变过程。可以看到第一个神经元在整个过程中都没有胜出,所以它始终保持在初始化状态。神经元2对于I,T两个字符都有响应。它最终演变成I,T的平均值。第3个神经元响应C字符的输入,它最终演变成字符C的形状。
▲ 训练过程中权系数演变过程
下面选择学习速率是一个线性递减的过程。从0.5 经过N=100个训练周期之后,递减至0。
下面是重新初始化后,三个权系数对应的信息:
▲ 神经元初始化过程
下面是训练过程中,三个神经元演变的过程。这一次,是第三个神经元始终没有胜出。第一个神经元对I,T两个字符有响应。第二个神经元对于字符C有响应。
▲ 训练过程中三个神经元演变过程
以上两个例子说明,对于竞争网络从随机初始化其,很大可能性会造成部分神经元在整个训练过程中始终无法胜出,而另外神经元则可能对于一个,或者多个样本进行学习。对应多个样本学习的神经元最终形成这些样本的平均值。
(2) 使用原字符初始化
下面是对竞争神经元初始化成三个样本加五个噪声的情况。
▲ 三个神经元初始化后的情况
学习速率固定位η=0.1\eta = 0.1η=0.1,经过100次训练之后,三个系数的演变过程为:
▲ 竞争演变过程
通过上面训练最后,可以看到三个神经原分别收敛到三个字符的形态。这说明它们各自对三个字符能够进行响应,从增加有1个噪声点的训练样本集合中学习到了三个字符类别。
(3) 使用更多噪声样本训练
为了避免随机初始化的竞争神经元存在死神经元–也就是在整个训练过程中始终没有响应,下面使用添加有更多噪声的样本进行训练。
下面分别使用添加有4个噪声,5个噪声的样本进行训练。可以看到它们从随机初始化开始,三个神经元最终都能够有响应。
在训练过程中,学习速率线性降低到0。训练循环次数为:N=100。
▲ 使用增加4个噪声样本进行训练
▲ 使用增加5个噪声点样本训练过程
看到上面训练到最后,学习速率线性降低到0的时候,三个神经元分别对应着三个字符,这样就说明竞争网络学习之后,可以正确区分这三个字符了。
3.结果讨论
- 训练竞争神经网络,通常设置学习速率从一个较大的值,逐步降低到0。这样可以保证最终网络收敛到一个比较准确的值;
- 竞争网络的结果依赖于初始化的值。如果随机对竞争神经元进行初始化,往往会造成部分神经元在整个训练过程没有响应,形成死神经元,从而使得学习效果降低;
- 将竞争网络初始化为随机的训练样本可以改善学习效果;
- 使用增加有更多噪声的样本进行训练,也可以有效提高竞争神经元学习的效果。
➤※ 作业中的程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# HW22.PY -- by Dr. ZhuoQing 2020-11-24
#
# Note:
#============================================================from headm import *#------------------------------------------------------------
c_data = [0,1,1,1,0,1,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0,1,1,1,0]
i_data = [0,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,0]
t_data = [1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0]
x_data = array([c_data, i_data, t_data]).astype('float32')Wcit = random.rand(3, x_data.shape[1]) # initialize NN
#Wcit = x_data#------------------------------------------------------------
def shufflenoise(x, nn=1): # Shuffle data and add one noise
# random.shuffle(x)for xx in x:for i in range(nn):id = random.randint(x.shape[1])if xx[id] < 0.5: xx[id] = 1.0else: xx[id] = 0return x#Wcit = shufflenoise(x_data.copy(), 5)#------------------------------------------------------------
def WTA2(x, w):""" Win-Take-AllIn: x-sample(x1,x2)w-net argumentRet: id-Win ID of w"""dist = array([(x-ww).dot(x-ww) for ww in w])return list(where(dist==amin(dist)))[0][0]#------------------------------------------------------------
def compete(x, w, eta):for xx in x:id = WTA2(xx, w)w[id] = w[id] + eta * (xx - w[id])return w#------------------------------------------------------------
DOT_SIZE = 1
CHAR_DIST = 7plt.draw()
plt.pause(.2)def plotw(w, title):plt.clf()for id,ww in enumerate(w):x = id * CHAR_DIST * DOT_SIZEfor hid,v in enumerate(ww):line = hid // 5col = hid % 5yy = (5-line) * DOT_SIZExx = x + col * DOT_SIZEarea = v * 500plt.scatter(xx, yy, s=area, c='b', alpha=0.5)plt.xlabel("x")plt.ylabel("y")plt.axis([-1.0, 19, -1, 7])plt.grid(True)plt.title(title)plt.tight_layout()plt.draw()plt.pause(0.002)#------------------------------------------------------------
pltgif = PlotGIF()plotw(x_data,'Initial')for i in range(100):eta = 0.5 - (0.5 * i/99)x = shufflenoise(x_data.copy(), 4)Wcit = compete(x, Wcit, eta)plotw(Wcit, 'Step:%d, eta:%4.2f'%(i+1, eta))
# plotw(x, "Noise:%d"%i)pltgif.append(plt)pltgif.save(r'd:\temp\1.gif')
plt.show()#------------------------------------------------------------
# END OF FILE : HW22.PY
#============================================================
2020年人工神经网络第二次作业-参考答案第二题相关推荐
- 2020年人工神经网络第二次作业-参考答案第一题
如下是 2020年人工神经网络第二次作业 中第一题的参考答案. ➤01 第一题参考答案 1.题目分析 (1) 已知条件 本题中的建立的是一个由两个竞争节点组成的竞争网络.竞争层的神经元和五个训练样本都 ...
- 2021年春季学期-信号与系统-第二次作业参考答案-第十小题
本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第十题 10 从网络学堂下载代表两个信号的音频文件: 音频文件: f1(t)f_1 \left( t \right)f1( ...
- 2021年春季学期-信号与系统-第二次作业参考答案-第九小题
本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第九题 9. 已知三个系统的输入输出关系分别为: 把上述三个子系统进行如下的级联,求系统的输入输出关系,它是线性.时不变系统 ...
- 2021年春季学期-信号与系统-第二次作业参考答案-第七小题
本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第七题 7. 判断下列系统是否可逆.若可逆,给出它的逆系统:若不可逆,指出使该系统产生相同输出的两个输入信号. 判断系统是否 ...
- 2021年春季学期-信号与系统-第二次作业参考答案-第六小题
本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第六题 6. 有一线性时不变系统, 当激励e1(t)=u(t)e_1 \left( t \right) = u\left( ...
- 2021年春季学期-信号与系统-第二次作业参考答案-第五小题
本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第五题 5. Consider a LTI systems whose response to the singal x1( ...
- 2021年春季学期-信号与系统-第二次作业参考答案-第四小题
本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第四题 4 .试写出下图所示的系统输入.输出关系. 求解: (1)第一小题 在原来系统框图的基础上,增加节点变量y′(t), ...
- 2021年春季学期-信号与系统-第二次作业参考答案-第三小题
本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第三题 3.已知序列f[n]f\left[ n \right]f[n]如下图所示,画出下列格式的波形. 注:(4)(5)为选 ...
- 2021年春季学期-信号与系统-第二次作业参考答案-第二小题
本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第二题 2. 已知下图(a)中的xe(t)x_e \left( t \right)xe(t)是信号x(t)x\left( ...
最新文章
- 聊聊reactive streams的schedulers
- Angular4 组件通讯方法大全
- tomcat5应用移植到WAS5.1中的一些问题及解决
- [学习笔记] Cordova+AmazeUI+React 做个通讯录 - 单页应用 (With Router)
- JSON解析---初识
- [html] 页面上的登录表单记住了密码(显示星号),但我又忘了密码,如何找回这个密码呢?
- 【C语言】请输入一个n(n=10)并输出一个n行n列的杨辉三角
- CCF201609试题
- Spark内核解析之一:内核概述
- 书接上文——python实现感知分类器模型分类过程动态可视化
- python arma_Python实现ARMA模型
- Material Design 总结
- 论文摘要6 - board planar antenna with Circular Polarization
- 这次的室温超导爆炸性发现,会是人类的进步?
- 如意人生守护·典藏版:论赔付力度,这款产品是碾压级的!
- 基于SSM美食食谱管理系统Java家庭食谱安排系统的设计与实现(源码调试+讲解+文档)
- LabVIEW如何实现高性能串口助手-附代码
- opencv blur函数——均值滤波
- (每日水题004-1)(DP,滚动数组)洛谷P1508 Likecloud-吃、吃、吃
- 复杂图形求面积c语言,用CAD计算复杂图形面积的方法