机器学习大作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机器学习大作业集团档案编码:[YTTR-YTPT28-YTNTL98-UYTYNN08]

题目:机器学习

授课老师:韩红

基于BP 神经网络的非线性函数拟合

摘要:BP(Back Propagation)神经网络是 1986年由 Rumelhart和 McCelland提出的,它是一种误差按反向传播的多层前馈网络,是目前应用最广泛的神经网络模型之一。 BP神经网络具有非常强的非线性映射能力,能以任意精度逼近任意连续函数,因此在人工智能的许多领域都得到了广泛的应用。

通常,BP算法是通过一些学习规则来调整神经元之间的连接权值,在学习过程中,学习规则以及网络的拓扑结构不变。然而一个神经网络的信息处理功能不仅取决于神经元之间的连接强度,而且与网络的拓扑结构(神经元的连接方式)、神经元的输入输出特性和神经元的阈值有关,因而神经网络模型要加强自身的适应和学习能力,应该知道如何合理地自组织网络的拓扑结构,知道改变神经元的激活特性以及在必要时调整网络的学习参数等。

1 BP神经网络概述

BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理, 直至输出层。每一层的神经元状态只影响下一层神经元状态。如果输出层得不到期望输出, 则转入反向传播,根据预测误差调整网络权值和阈值,从而使B P神经网络预测输出不断逼近期望输出。BP神经网络的拓扑结构如图

图1中, X

1, X

2

, …, X

n

是BP神经网络的输入值, Y

1

, Y

2

, …, Y

m

是BP神经网络的预测

值,ω

ij 和ω

jk

为BP神经网络权值。从图2可以看出, BP神经网络可以看成一个非线性函

数, 网络输入值和预测值分别为该函数的自变量和因变量。当输入节点数为n, 输出节点数为m时, BP神经网络就表达了从n个自变量到m个因变量的函数映射关系。

2 主要用途

BP网络主要用于:

(1)函数逼近:用输入矢量和相应的输出矢量训练网络逼近某个函数;

(2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来;

(3)分类:把输入矢量以所定义的合适的方法进行分类;

(4)数据压缩:减少输出矢量维数以便于传输或存储。

在人工神经网络的实际工程应用中,特别在自动控制领域中,大多数神经网络模型是采用BP 网络或它的变化形式,它也是前向网络的核心部分,体现了人工神经网络最精华的部分。

3.BP 算法的数学描述:

三层前馈网中,输入向量为:T n i x x x x X ),...,,...,,(21=;隐层输入向量为:

T m j y y y y Y ),...,...,,(21=;输出层输出向量为:T l k o o o o O ),...,...,,(21=;期望输出向量为:T l k d d d d d ),...,...,(21=。输入层到隐层之间的权值矩阵用V 表示,

Y m j v v v v V ),...,...,(21=,其中列向量j v 为隐层第j 个神经元对应的权向量;隐层到输出

层之间的权值矩阵用W 表示,),...,...,(21l k w w w w W =,其中列向量k w 为输出层第k 个神经元对应的权向量。

对于输出层,有

对于隐层,有

f(x)具有连续、可导的特点,且有)](1)[()('x f x f x f -=,以上共同构成了三层前馈网了的数学模型。

当网络输出和期望输出不相等时,存在输出误差E 如下:

将以上误差定义式展开至隐层,有

进一步展开至输入层,有

由上式可以看出,网络输入误差是两层权值W 和V 的函数,因此调整权值可以改变误差E 。

显然,调整权值的原则是使误差不断的减小,因此应使权值的调整量与误差的负梯度成正比,即:

式中负号表示梯度下降,常数)1,0(∈η表示比例系数,在训练中反映了学习速率。

容易看出,BP 学习算法中,各层权值调整公式形式上都是一样的,均有3个因素决定,即:学习速率、本层误差信号和本层输入信号X/Y 。其中输出层误差信号同网络的期望输出与实际输出之差有关,直接反映了输出误差,而各隐层的误差信号与前

面各层的误差信号都有关,是从输出层开始逐层反传过来的。在建立 BP 神经网络时,首先要根据应用的问题确定网络结构,即选择网络的层数和隐层节点数。由于本例中实验数据较少,采用最基本的两层网络就可以很好地逼近未知函数了。隐层节点数的选择在神经网络的应用中一直是一个复杂的问题:隐层节点数过多,将导致网

络的预测能力不够,并容易导致网络陷入局部极小值难以跳出;隐层节点数过少,网络训练不出来,或不能识别以前没有的样本,且容错性差。在设计中,比较实际的做法是通过对不同神经元数的网络进行训练、对比,找出网络效果最好时的隐层节点数。在本例中,经大量的训练、对比,最终取中间隐层节点数为 10。在建立模型的过程中也发现了一些问题,主要有两个方面:一是样本数过少,很难精确反映出待建模型的特性,而且容易导致网络在学习过程中难以退出局部极小值。解决的办法是在实验部分增加实验点以增加训练样本数。二是BP 网络本身存在的一些问题,主要表现在收敛速度很慢,有时在局部极小值收敛,不能找到全局极小值。针对这样的情况,可以考虑采用其他算法如:模拟退火、遗传算法等,以保证网络能收敛到全局极小值。神经网络的结构设计是一个非常重要但却十分复杂的问题。网络的结构设计主要指对于给定的任务:①如何选择网络层数?因为网络的输入和输出层易于确定,所以这一问题实际上就是隐层应该为几层;②每层应选多少神经元;③神经元的传递函数应如何选定。所有这些都是使用神经网络时必须加以解决的问题。但目前对此并没有一个确切的答案,MATLAB 下的神经网络工具箱也不例外。综合以往的研究成果,可以得到 BP 网络结构的一些结论:①对于3层(1个输入层、1个隐层和1个输出层)的 BP 网络,只要其隐层的神经元数可选,就可以任意精度逼近任何连续函数(Kolmogorov 定理);②随着所逼近函数的波动性增加,隐层的神经元数也应适当增加;③随着学习样本数的增加,隐层神经元数也应增加;④增加隐层数目可以减少各隐层的神经元数,减少陷入局部极小的机会;⑤随着网络复杂程度和学习样本数的增加,其收敛速度变慢,所以网络的规模不应随意增大。

四、BP网络实现

1.初始化

初始化隐层的权值向量和隐层到输出层的权值矩阵。确定每层的学习速率。设定最小误差率以及网络的最大迭代次数。生成sin(x)的训练样本集。

测试数据:P2=0.01*pi:0.02*pi:2*pi; 输入数据:P1=0.01*pi:0.02*pi:2*pi;

相关文档
最新文档