原本这一篇是在介绍神经网络离线学习的研究结果的,不久前有人指出这里面存在的一些小问题,我重新整理了一遍,下面就是我重新整理过后的内容,如果有其他疑问的话,可以找我联系,想要学习的可以来看一下。

最近在做和FPGA神经网络有关的研究,研究有了大概的结果,设计的神经网络终于完成了离线学习,我们今天的目的就是展示神经网络的离线学习结果,所以这里对神经网络就不做过多介绍,先简单介绍一下神经网络的学习方法吧。

任何一个神经网络要实现某种功能必须先对它进行训练,让它学会他要做的事情,而学习过程实际上就是对网络权值的调整过程。学习完毕,网络连接权值也调整完毕,学习到的知识就分布记忆(存储)在网络中的各个连接权上。

神经网络的学习方法一般分为三类:有指导的学习,无指导的学习和灌输式学习。

1.有指导的学习:

有知道的学习是指在网络的学习过程中,对于网络的学习结果,即网络输出的正确性必须要有一个评价标准。这就要求在学习训练过程中,不断的为网络提供输入模式和期望输出模式对,网络将根据实际输出与期望输出的比较结果,判断差错的方向和大小,决定连接权值的调整方法,以使网络的实际输出结果接近期望输出结果。

2.无指导的学习:

无指导的学习是指在网络的学习过程中,没有来自外部的关于正确性评价的标准。这就需要在训练过程中不断的为网络提供动态输入信息,是的网络能够根据其特有的网络结构和学习规则,寻找可能存在的模式和规律,对属于同一类的模式进行自动分类,并同时根据网络的功能输出和输入信息自主的调整连接权值。

3.灌输式的学习:

在灌输式的学习方法中,神经网络的连接权值不是通过学习训练过程逐渐形成的,而是通过魔种设计方法得到的,连接权值设计完成后一次性的“灌输”给神经网络,并且将该值保留不再变化。

离线学习:

一个batch训练完才更新权重,这样的话要求所有的数据必须在每一个训练操作中(batch中)都是可用的,个人理解,这样不会因为偶然的错误把网络带向极端。

设计后的神经网络学习采用离线学习, 离线学习后的神经网络有固定的结构和固定的权值,能够对特定的问题进行处理。以单神经元为基本模块 ,构建一定规模的网络, 网络采用离线学习的方法,得到权值和阈值参数,将离线训练好的神经网络配置到FPGA中,并测试网络实际性能。

以函数逼近问题为例,网络输入信号 x,输入范围[-4 4],输出为对应的函数值 sin(x) sin(x)-cos(3x)。网络含一个隐藏层,隐含层激励函数为 Sigmoid 函数,输出 层激励函数为线性 函数,这就保证了网络的非线性和双极型输出(非 线性来自隐藏 层的 Sigmoid 函数)。通过改变隐藏层神经元个数,不断进行网络训练指导满足设定 的逼近误差要求。训练算法采用反向传播算法,在[-4,4]区间内每隔 0.05 取一个 x 值, 为网络产生训练数据,共 160 组输入/输出数据对。给定的均方误差 MSE=0.001,最大迭代周期数为 500,初始学习率设为 0.5,它在训练过程中自动减少。一开始在隐藏层使用 5 个神经元, 经过500个周期后,MSE 未能收敛。为证实训练结果,在[-4 4]范围内,取步长为 0.01 为测试输入数据,训练后的的神经网络输出与直接计算得到的理论值进行比较,其测试结果如图所示,从图中可以看出逼近误差较大。

 离线学习

依次增加隐藏层神经元个数,直到隐藏层神经元数为 10 时,经过 456 个周期后, MSE收敛。同上,测试结果如下图所示,从图中可以看出网络输出与理论输出重合,逼近性能非常理想。

网络结构为 1-10-1 三层网络,隐藏层神经元为 10,含一个偏置,网络参数如下:

输入层到隐藏层权值向量

 离线学习

隐藏层神经元偏置向量

 离线学习

隐藏层到输出层权值向量

 离线学习

 离线学习

输出神经元偏置向量

 离线学习

训练后的网络权值和偏置如所示。

 离线学习

 


相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-04-28
  • 2022-01-03
  • 2021-08-20
  • 2022-12-23
  • 2022-01-21
  • 2022-12-23
猜你喜欢
  • 2021-12-05
  • 2021-06-27
  • 2021-11-17
  • 2021-08-27
  • 2022-12-23
  • 2021-12-06
  • 2021-05-10
相关资源
相似解决方案