• 基于神经网络的函数逼近


    I任务要求

    1.1求解函数逼近问题

      有21组单输入矢量和相对应的目标矢量,试设计神经网络来实现这对数组的函数关系

      P = -1 : 0.1 : 1

      T=[ -0.96  -0.577  -0.0729  0.377  0.641  0.66  0.461  0.1336

        -0.201   -0.434  -0.5   -0.393  -0.1647  0.0988  0.3072

        0.396  0.3449  0.1816  -0.0312  -0.2183  -0.3201]

      测试集

      P2= -1 : 0.025 : 1

    II BP神经网络

    2.1 神经网络

      神经网络是模拟人脑生物过程的具有人工智能的系统,是由大量非线性处理单元连接而成的网络,具有高度非线性等特点,可以根据给定的学习样本,不需要进行任何假设,建立系统的非线性输入、输出映射关系。神经网络具有自学习、容错能力强、并行计算等许多优点,被广泛应用于线性系统的建模。

      神经网络模型可以分为前馈网络、反馈网络、自组织网络和混合神经网络。其中,前馈网络的神经元分层排列,有输入层、隐含层和输出层,每一层神经元只接受前一层的输入,并输出到下一层,网络中没有反馈,实现信号从输入空间到输出空间的变换,其信息处理能力来源于简单非线性函数的多次复合。这种结构的网络通畅比较适合预测、模式识别、非线性函数的逼近等,误差反向传播(BP)网络、线性网络和径向基函数(RBF)网络就属于此类网络。[1]

    2.2 BP网络

      前馈网络中获得最广泛应用的是BP网络,它是一种单向传播的多层前馈网络,网络除输入、输出层节点外,还包括一层或多层隐含层节点,每一层节点的输出只影响下一层节点的输入。BP网络主要用于系统辨识、模式识别、图像处理、函数逼近、优化计算、最优预测和自适应控制等领域。

    2.2.1 BP网络模型

      BP网络是一种多层前馈神经网络,包括输入层,隐层(中间层)和输出层,其中 隐层可以是一层也可以是多层,一般而言,三层BP神经网络就可以解决大部分比较简单的问题。BP网络前后层之间实现全连接,每层神经元之间无连接。

    图1 BP神经网络图

      图 1所示为一个四层 BP网络 ,其中隐层(中间层)为两层,隐层的神经元个数为3个,输入层、输出层的神经元个数均为 2个。学习样本给了BP网络后,各神经元响应输入,信号从输入层,经隐层(中间层),向输出层传播,根据减少预期输出与实际输出差距这一原则,从输出层,经过各中间层,最后回到输入层 , 逐层修正各个连接权值 ,这种算法被称为 “误差逆传播算法”,简称BP算法,随着误差逆传播的不断进行网络响应输入的正确率也不断上升。

    2.2.2算法过程

       BP算法的过程大致如下 :

      (1)将各权值、阈值置为小的随机数;

      (2)从训练数据中挑选一组数据(),将输入数据X加到BP神经网络的输入层,T为预期输出数据,上标K为训练数据号;

      (3)由计算从第一层直至输出层各节点j的输出,其中上标m为BP网络的层标号,F为神经元的激励函数,为BP网络m-1层的i节点的输出,为M-1层的i节点到m层的j节点的连接权值,M=M,M-1,···,1。

     

    2.2.3 基于BP神经网络的函数逼近

      (1)隐层神经元数目的选择需要经验和多次试验来确定,隐层神经元的数目与问题的复杂程度、输入输出神经元的数目都有关系,隐层神经元太多会导致网络结构复杂,学习时间长等问题。

      (2)传递函数的选择十分重要,BP神经网络的传递函数是处处可微的,常用的传递函数有Sigmoid型的对数函数、正切函数和线性函数。

      (3)训练函数对BP网络的性能也有影响,可分为普通训练函数和快速训练函数。普通训练函数主要有两种,一种是批梯度下降训练函数(traind),另一种是动量批梯度下降训练函数(traingdm)。前者是根据批梯度下降算法,沿网络性能参数的负梯度方向去调节BP神经网络的权值和阈值,后者是引入一个动量项,每次BP网络权值和阈值改变量中加入前一次的改变量。快速训练函数分自适应修改学习率算法、弹回的BP算法、共轭梯度算法等。

    III 函数逼近MATLAB实现

    3.1 运行程序

      当输入为P = -1 : 0.1 : 1时,MATLAB代码[3]为:

      通过改变n的值、更换传递函数和训练函数等可以得到不同的拟合效果。

    3.2 运行结果

      最佳运行选择函数:隐层传递函数为tansig,输出层传递函数为tansig,训练函数为trainglm,隐层神经元数目为1~16时,最佳拟合效果如下:

    图2 神经网络函数逼近拟合曲线

    3.3 结果分析

    3.3.1 隐层神经元数目分析

      当采用同样的传递函数和训练函数时,隐层神经元数目不同导致结果不同,

    图3 n=4时神经网络运行状态及结果

    图4 n=9时神经网络运行状态及结果

    图5  n=16时神经网络运行状态及结果

      可见,当N=8/9是最合适的,网络结构相对简单,收敛速度也快,拟合效果较佳。

    3.3.2 训练函数分析

    图6 训练函数为trainrp 拟合结果

    图7 训练函数为traincgp 拟合结果

    图8 训练函数为traingdx 拟合结果

      可见,traingd、traingdm是较差的训练函数,收敛时间长;而训练函数trainrp/traincgp等性能一般,trainlm是较佳的训练函数,训练时间短,拟合效果佳。

    3.4 函数关系式

      MATLAB代码输入

      得结果为:simy =

    2/(exp(2534319068038565/(562949953421312*(exp((3631672591091961*x)

    /140737488355328+6863392162896721/281474976710656)+1)) + 5718237858863659/(18014398509481984*(exp((7444114435060467*x)/281474976710656-2920590510334957/281474976710656)+1)) -4407302316599713/(2251799813685248*(exp(-(3121532728107483*x)/140737488355328 - 4422873762208683/281474976710656) +1))  +

    6681843142583089/(18014398509481984*(exp(1623302466041475/70368744177664-(7266061041617473*x)/281474976710656)+1)) - 1132865518096015/(562949953421312*(exp(2512097340583147/1125899906842624-(1559249268373737*x)/140737488355328)+1)) + 6045060497805921/(4503599627370496*(exp(5296108181129999/562949953421312-(1862916351889959*x)/140737488355328)+1)) - 4804294000663935/(4503599627370496*(exp((847671511961421*x)/35184372088832+3450827515650845/562949953421312)+1)) + 6639507791072923/(9007199254740992*(exp(- (7400247294894263*x)/281474976710656 - 3347678857733481/1125899906842624) +1))   +

    5470015743536569/(4503599627370496*(exp(- (1964472234771961*x)/70368744177664 - 3192411785409777/281474976710656) + 1)) + 18338633840740381/18014398509481984) + 1) - 1

    参考文献

      [1] 郝丽娜.计算机仿真技术及CAD.[M].北京.高等教育出版社.2014

      [2] 孙帆,施学勤.基于MATLAB的BP神经网络设计[J].计算机与数字工程,2007,35(8)

      [3]郑阿奇,曹戈.MATLAB实用教程[M].北京:电子工业出版社,2004,1-3

     

  • 相关阅读:
    找出文件1中有而文件2中没有的数据
    读取文件内容返回List<String>类型
    【概率论与数理统计】小结6
    【概率论与数理统计】小结5
    【概率论与数理统计】小结4
    【概率论与数理统计】小结3
    【概率论与数理统计】小结2
    记Angular与Django REST框架的一次合作(2):前端组件化——Angular
    记Angular与Django REST框架的一次合作(1):分离 or 不分离,it's the question
    【概率论与数理统计】小结1
  • 原文地址:https://www.cnblogs.com/Sonny-xby/p/12372022.html
Copyright © 2020-2023  润新知