IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【BP预测】基于原子搜索算法优化BP神经网络实现数据预测matlab源码 -> 正文阅读

[人工智能]【BP预测】基于原子搜索算法优化BP神经网络实现数据预测matlab源码

?1? BP神经网络预测算法简介

1.1 BP神经网络的原理介绍

神经网络是深度学习的基础,在机器学习和深度学习中应用比较广泛,如函数逼近模式识别分类模型图像分类基于深度学习的CTR预估数据压缩数据挖掘等都离不开神经网络。下面主要介绍BP神经网络的原理。

一个最简单的三层BP神经网络如下图

img

包含输入层、隐含层、输出层,节点与节点之间有权重。一个样本有m个输入特征,包括ID特征或连续特征。隐含层可以有多个,关于隐含层节点个数的选取,一般设置为2的n次方,例如512,256,128,64,32等。n个输出结果,通常输出结果就一个,例如分类模型或回归模型。

在1989年,Robert Hecht-Nielsen证明了对于任何闭区间内的一个连续函数都可以用一个隐含层的BP网络来逼近,这就是万能逼近定理。所以一个三层的BP网络就可以完成任意的m维到n维的映射。BP神经网络主要分为两个过程

  1. 工作信号正向传递子过程

  2. 误差信号反向传递子过程

1 工作信号正向传递子过程

设节点i与节点j之间的权重为ω{ij},节点j的偏置为b{j},每个节点的输出值为x_{j},每个节点的输出值是根据上层所有节点的输出值、当前节点与上一层所有节点的权值和当前节点的偏置还有激活函数来计算的。具体计算公式如下

img

其中f为激活函数,一般选取S型函数或tanh函数。正向传递过程比较简单,从前往后计算即可。

2 误差信号反向传递子过程

在BP神经网络中,误差信号反向传递子过程比较复杂,它是基于Widrow-Hoff学习规则的。假设输出层的所有结果为d_{j},回归模型的误差函数如下

BP神经网络的主要目的是反复修正权值和偏置,使得误差函数值达到最小。Widrow-Hoff学习规则是通过沿着相对误差平方和的最速下降方向,连续调整网络的权值和偏置,根据梯度下降法,权值矢量的修正正比于当前位置上E(w,b)的梯度,对于第j个输出节点有

假设选择激活函数为

对激活函数求导,得到

img

那么接下来针对ω_{ij},有

img

其中

同样对于b_{j},有

这就是著名的δ学习规则,通过改变神经元之间的连接权值来减少系统实际输出和期望输出的误差,这个规则又叫做Widrow-Hoff学习规则或者纠错学习规则

上面是对隐含层和输出层之间的权值和输出层的偏置计算调整量,而针对输入层和隐含层和隐含层的偏置调整量的计算更为复杂。假设ω_{ki}是输入层第k个节点和隐含层第i个节点之间的权值,那么有

img

其中有

img

有了上述公式,根据梯度下降法,那么对于隐含层和输出层之间的权值和偏置调整如下

img

而对于输入层和隐含层之间的权值和偏置调整同样有

img

上述就是BP神经网络原理的公式推导。

2 原子搜索算法

原子搜索优化算法(Atom Search Optimization)是于2019提出的一种基于分子动力学模型的新颖智能算法.模拟在原子构成的分子系统中,原子因相互间的作用力和系统约束力而产生位移的现象.在一个分子系统中,相邻的原子间存在相互作用力(吸引力和排斥力),且全局最优原子对其他原子存在几何约束作用 .引力促使原子广泛地探索整个搜索空间,斥力使它们能够有效地开发潜在区域 。具有寻优能力强,收敛快的特点。
1.原子优化算法原理

?在这里插入图片描述

?在这里插入图片描述

3 ASO优化BP神经网络的步骤

Step1:初始化BP神经网络的权值和阈值
Step2:计原子搜索优化算法的决策变量长度,选取均方误差作为优化的目标函数。
Step3:设置算法停止准则,使用遗传优化算法优化神经网络的权值和阈值参数。
Step4:将优化得到的权值和阈值参数赋给BP神经网络。
Step5:优化后的BP神经网络训练与测试,与优化前的BP神经网络进行误差分析和精度对比。

4 演示代码


%--------------------------------------------------------------------------
% Atom Search Optimization.
function [X_Best,Fit_XBest,Functon_Best]=ASO(alpha,beta,Fun_Index,Atom_Num,Max_Iteration)

% Dim: Dimension of search space.
% Atom_Pop: Population (position) of atoms.
% Atom_V:  Velocity of atoms.
% Acc: Acceleration of atoms.
% M: Mass of atoms. 
% Atom_Num: Number of atom population.
% Fitness: Fitness of atoms.
% Max_Iteration: Maximum of iterations.
% X_Best: Best solution (position) found so far. 
% Fit_XBest: Best result corresponding to X_Best. 
% Functon_Best: The fitness over iterations. 
% Low: The low bound of search space.
% Up: The up bound of search space.
% alpha: Depth weight.
% beta: Multiplier weight

alpha=50;
beta=0.2;


   Iteration=1;
   [Low,Up,Dim]=Test_Functions_Range(Fun_Index); 
 
   % Randomly initialize positions and velocities of atoms.
     if size(Up,2)==1
         Atom_Pop=rand(Atom_Num,Dim).*(Up-Low)+Low;
         Atom_V=rand(Atom_Num,Dim).*(Up-Low)+Low;
     end
   
     if size(Up,2)>1
        for i=1:Dim
           Atom_Pop(:,i)=rand(Atom_Num,1).*(Up(i)-Low(i))+Low(i);
           Atom_V(:,i)=rand(Atom_Num,1).*(Up(i)-Low(i))+Low(i);
        end
     end

 % Compute function fitness of atoms.
     for i=1:Atom_Num
       Fitness(i)=Test_Functions(Atom_Pop(i,:),Fun_Index,Dim);
     end
       Functon_Best=zeros(Max_Iteration,1);
       [Max_Fitness,Index]=min(Fitness);
       Functon_Best(1)=Fitness(Index);
       X_Best=Atom_Pop(Index,:);
     
 % Calculate acceleration.
 Atom_Acc=Acceleration(Atom_Pop,Fitness,Iteration,Max_Iteration,Dim,Atom_Num,X_Best,alpha,beta);


 % Iteration
 for Iteration=2:Max_Iteration 
           Functon_Best(Iteration)=Functon_Best(Iteration-1);
           Atom_V=rand(Atom_Num,Dim).*Atom_V+Atom_Acc;
           Atom_Pop=Atom_Pop+Atom_V;     
    
    
         for i=1:Atom_Num
       % Relocate atom out of range.  
           TU= Atom_Pop(i,:)>Up;
           TL= Atom_Pop(i,:)<Low;
           Atom_Pop(i,:)=(Atom_Pop(i,:).*(~(TU+TL)))+((rand(1,Dim).*(Up-Low)+Low).*(TU+TL));
           %evaluate atom. 
           Fitness(i)=Test_Functions(Atom_Pop(i,:),Fun_Index,Dim);
         end
        [Max_Fitness,Index]=min(Fitness);      
     
        if Max_Fitness<Functon_Best(Iteration)
             Functon_Best(Iteration)=Max_Fitness;
             X_Best=Atom_Pop(Index,:);
          else
            r=fix(rand*Atom_Num)+1;
             Atom_Pop(r,:)=X_Best;
        end
     
      % Calculate acceleration.
       Atom_Acc=Acceleration(Atom_Pop,Fitness,Iteration,Max_Iteration,Dim,Atom_Num,X_Best,alpha,beta);
 end

Fit_XBest=Functon_Best(Iteration); 

5 仿真结果

6 参考文献

《基于BP神经网络的宁夏水资源需求量预测》

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-24 10:34:02  更:2021-09-24 10:34:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:49:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码