14-2利用遗传算法求解BP神经网络初始化权值和阈值的最优问题(附matlab程序)

news2024/10/7 6:45:51

1.简述

      核心问题:

      BP网络是前向网络的核心部分,是神经网络中的最精华、最完美的部分,由于其简单的结构,可调整的参数多,训练算法也多,而且可操作性好,BP神经网络获得了非常广泛的应用,但是也存在着一些缺陷,例如学习收敛速度太慢、不能保证收敛到全局最小点、网络结构不易确定。另外,网络结构、初始连接权值和阈值的选择对网络训练的影响很大,但是又无法准确获得,针对这些特点可以采用遗传算法对神经网络进行优化。
 

 遗传算法优化BP神经网络主要分为:BP神经网络结构确定、遗传算法优化权值和阈值、BP神经网络训练及预测。其中,BP神经网络的拓扑结构是根据样本的输入/输出参数个数确定的,这样就可以确定遗传算法优化参数的个数,从而确定种群个体的编码长度。因为遗传算法优化参数是BP神经网络的初始权值和阈值,只要网络结构已知,权值和阈值的个数就已知了。神经网络的权值和阈值一般是通过随机初始化为[-0.5,0.5]区间的随机数,网络的训练结果是一样的,引入遗传算法就是为了优化出最佳的初始权值和阈值。

神经网络算法实现:
网络创建:BP神经网络的确定有以下两条重要的指导原则。
1.对于一般的模式识别问题,三层网络可以很好地解决问题。
2.在三层网络中,隐含层神经网络个数n2和输入层神经元个数n1之间有近似关系:
 

遗传算法实现:
        遗传算法优化BP神经网络是用遗传算法来优化BP神经网络的初始权重值和阈值,使优化后的BP神经网络能够更好地进行样本预测。遗传算法优化BP神经网络的要素包括种群初始化、适应度函数,选择算子、交叉算子和变异算子。
(1)种群初始化
        个体编码使用二进制编码,每个个体均为一个二进制串,由输人层与隐含层连接权值、隐含层阈值、隐含层与输出层连接权值、输出层阈值四部分组成,每个权值和阈值使用M位的二进制编码,将所有权值和阈值的编码连接起来即为一个个体的编码。


(2)适应度函数
        本案例是为了使BP网络在预测时,预测值与期望值的残差尽可能小,所以选择预测样本的预测值与期望值的误差矩阵的范数作为目标函数的输出。适应度函数采用排序的适应度分配函数:FitnV = ranking(obj),其中obj为目标函数的输出。


(3)选择算子
        选择算子采用随机遍历抽样(sus)。


(4)交叉算子
        交叉算子采用最简单的单点交叉算子。


(5)变异算子
        变异以一定概率产生变异基因数,用随机方法选出发生变异的基因。如果所选的基因的编码为1,则变为0;反之,则变为1。
 

遗传算法主函数
遗传算法主函数流程为:
(1)随机初始化种群。
(2)计算种群适应度值,从中找出最优个体。
(3)选择操作。
(4)交叉操作。
(5)变异操作。
(6)判断进化是否结束;若否,则返回步骤(2)。

比较使用遗传算法前后的差别
        经过遗传算法优化之后得到最佳的初始权值与阈值矩阵,可以将该初始权值和阈值回代入网络画出训练误差曲线、预测值、预测误差、训练误差等。使用以下代码可以比较优化前后的差别,其中bestX参数为前面优化得到的最优初始权重值和阈值矩阵。

2.代码

%% I. 清除环境变量
clear all
clc

%% II. 声明全局变量
global p     % 训练集输入数据
global t     % 训练集输出数据
global R     % 输入神经元个数
global S2    % 输出神经元个数
global S1    % 隐层神经元个数
global S     % 编码长度  其实就是连接权值个数和阈值个数的总和
S1 = 10;

%% III. 导入数据
%%
% 1. 训练数据     6-10-4   6*10+10*4+10+4
p = [0.01 0.01 0.00 0.90 0.05 0.00;
     0.00 0.00 0.00 0.40 0.50 0.00;
     0.80 0.00 0.10 0.00 0.00 0.00;
     0.00 0.20 0.10 0.00 0.00 0.10]';
t = [1.00 0.00 0.00 0.00;
     0.00 1.00 0.00 0.00;
     0.00 0.00 1.00 0.00;
     0.00 0.00 0.00 1.00]';
%%
% 2. 测试数据
P_test = [0.05 0    0.9  0.12 0.02 0.02;
          0    0    0.9  0.05 0.05 0.05;
          0.01 0.02 0.45 0.22 0.04 0.06;
          0    0    0.4  0.5  0.1  0;
          0    0.1  0    0    0    0]';

%% IV. BP神经网络
%%
% 1. 网络创建
net = newff(minmax(p),[S1,4],{'tansig','purelin'},'trainlm'); 

%%
% 2. 设置训练参数
net.trainParam.show = 10;
net.trainParam.epochs = 2000;
net.trainParam.goal = 1.0e-3;
net.trainParam.lr = 0.1;

%%
% 3. 网络训练
[net,tr] = train(net,p,t);

%%
% 4. 仿真测试
s_bp = sim(net,P_test)    % BP神经网络的仿真结果

%% V. GA-BP神经网络
R = size(p,1);
S2 = size(t,1);
S = R*S1 + S1*S2 + S1 + S2;        %计算过了刚才  114
aa = ones(S,1)*[-1,1];      

%% VI. 遗传算法优化
%%
% 1. 初始化种群
popu = 50;  % 种群规模
initPpp = initializega(popu,aa,'gabpEval',[],[1e-6 1]);  % 初始化种群      gabpEval   看一下这个函数,还调用了gadecod

%%
% 2. 迭代优化
gen = 100;  % 遗传代数
% 调用GAOT工具箱,其中目标函数定义为gabpEval     endpop  前114列吻合S,115列代表  适应度函数值
[x,endPop,bPop,trace] = ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,...
                           'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);
%%
% 3. 绘均方误差变化曲线
figure(1)
plot(trace(:,1),1./trace(:,3),'r-');
hold on
plot(trace(:,1),1./trace(:,2),'b-');
xlabel('Generation');
ylabel('Sum-Squared Error');

%%
% 4. 绘制适应度函数变化
figure(2)
plot(trace(:,1),trace(:,3),'r-');
hold on
plot(trace(:,1),trace(:,2),'b-');
xlabel('Generation');
ylabel('Fittness');

%% VII. 解码最优解并赋值
%%
% 1. 解码最优解
[W1,B1,W2,B2,val] = gadecod(x);

%%
% 2. 赋值给神经网络
net.IW{1,1} = W1;
net.LW{2,1} = W2;
net.b{1} = B1;
net.b{2} = B2;

%% VIII. 利用新的权值和阈值进行训练
net = train(net,p,t);

%% IX. 仿真测试
s_ga = sim(net,P_test)    %遗传优化后的仿真结果

3.运行结果

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

易基因:ChIP-seq等揭示METTL14调控哺乳动物二价结构域的表观遗传机制|科研进展

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 组蛋白及其翻译后修饰在调控基因表达和其他染色质模板化过程中起着重要作用。组蛋白H3赖氨酸4三甲基化(H3K4me3)和组蛋白H3K27me3分别在小鼠植入前胚胎的基因激活…

C盘中哪些文件可以删除?这些文件放心删!

我的c盘动不动就显示爆满,想删一些c盘的文件吧,又害怕误操作删了电脑的系统文件。有没有电脑高手能总结一下c盘里哪些文件可以删除呀! C盘作为我们默认的存储盘,会自动保存很多文件,久而久之我们可能会发现&#xff0c…

【保姆级教程】Vue项目调试技巧

前言 在Vue项目开发过程中,当遇到应用逻辑出现错误,但又无法准确定位的时候,知晓Vue项目调试技巧至关重要,debug是必备技能。 同后台项目开发一样,可以在JS实现的应用逻辑中设置断点,并进行单步、进入方法…

sqoop导入实战

Sqoop导入实战 Sqoop-import 案例1 表没有主键,需要指定map task的个数为1个才能执行 Sqoop导入原理: ​ Sqoop默认是并行的从数据库源导入数据。您可以使用-m或--num-mappers参数指定用于执行导入的map任务(并行进程)的数量。每个参数都取一个整数值&#xff0…

【软件工程题库】第六章 编码和测试

🕺作者: 迷茫的启明星 学习路线C语言从0到1C初阶数据结构从0到1 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

Python基础(15)——Python字典(dict)详解

Python基础(15)——Python字典(dict)详解 文章目录 Python基础(15)——Python字典(dict)详解课程:字典目标一. 字典的应用场景二. 创建字典的语法三. 字典常见操作3.1 增…

arm64架构的linux中断分析(一)

文章目录 1. 中断的概念和作用2. Linux中断处理机制2.1 中断请求2.2 中断处理2.3 中断完成2.4.中断触发和处理步骤详解2.4.1 异常向量表的解读 2.5 硬件中断号和软件中断号 1. 中断的概念和作用 当计算机的CPU需要在执行任务的同时响应外部事件时,中断是一种重要的…

Python基础(13)——Python列表(list)详解

Python基础(13)——Python列表(list)详解 文章目录 Python基础(13)——Python列表(list)详解课程:列表目标一. 列表的应用场景二. 列表的格式三. 列表的常用操作3.1 查找…

持 PMP®证书增持 CSPM-2证书,值不值?

2023年起,持有PMP证书的朋友可以直接增持一个同等级证书CSPM-2,不用重新考试,不用重新学习,原PMP证书不影响正常使用,相当于多了一个国标项目管理领域的证书。 第一步准备资料 1、填写能力评价表(简历和业绩不用填&am…

ChatGPT批量生成文章软件:创意无限,内容源源不断

ChatGPT是一种基于人工智能技术的自然语言处理模型,它能够生成各种主题的文章。这种软件具有创意无限、内容源源不断的特点,能够满足用户对于大量文章的需求。 方面一:文化艺术 ChatGPT软件可以生成关于文化艺术的文章,包括绘画、…

C++基础入门教程(2)

3 运算符 作用: 用于执行代码的运算 本章我们主要讲解以下几类运算符: 运算符类型 作用 算术运算符 用于处理四则运算 赋值运算符 用于将表达式的值赋给变量 比较运算符 用于表达式的比较,并返回一个真值或假值 逻辑运算符 用于根据表达式的…

DevExpress WPF功能区控件,更轻松创建商业应用工具栏!(下)

在上文中(点击这里回顾>>),我们主要介绍了DevExpress WPF的Ribbon、Toolbar和Menus组件支持MVVM、功能区命令栏和视图等,本文将继续介绍这些组件的自定义功能等。 DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超…

行业报告 | 生成式人工智能:人人可用的新时代

原创 | 文 BFT机器人 01 人工智能的发展迎来新拐点 ChatGPT 正在唤醒全球对人工智能 (AI)变革潜力的认知,激发起前所未有的关注和创造力浪潮。 该技术可以模仿人类的对话和决策能力,使我们站上了公众采用人工智能的第一个真正拐点。最终,所有…

k8s volume简单总结 —— 筑梦之路

Kubernetes目前支持的Volume类型包括Kubernetes的内部资源对象类型、开源共享存储类型、存储厂商提供的硬件存储设备和公有云提供的存储等。 将Kubernetes特定类型的资源对象映射为目录或文件,包括以下类型的资源对象: 类型描述ConfigMap应用配置Secret加…

WPF开发txt阅读器15:C#合并段落

文章目录 清理空格段落拼接去除空行按键事件 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录💎快捷键翻页字体控件绑定💎前景/背景颜色书籍管理系统💎用树形图管理书籍语音播放💎播放进度显…

Cell -- PARADIGM算法可预测药物与微生物组的关联关系

在癌症患者中,药物对肠道细菌群的影响很难确定。以往的研究主要关注抗生素对肠道微生物组的影响,而对非抗生素药物的影响在人体中了解较少,这是由于缺乏可靠的药物暴露数据和长期粪便样本的收集。 2023年6月8日发表于《Cell》的“High-resolu…

2023年北京/上海/深圳DAMA-CDGA/CDGP数据治理工程师认证报名

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

【openGauss基本概念---快速入门】

【openGauss简单使用---快速入门】 🔻 一、基本概念🔰 1.1 openGauss🔰 1.2 数据库(Database)🔰 1.3 数据块(Block)🔰 1.4 行(Row)🔰 …

Live800:企业如何提高服务数据可用性?

数据是现代企业的重要资源,蕴含着巨大的商业价值是企业运用科学管理、决策分析的基础。近几年来“大数据”一词的热度有目共睹,各行业根据自身特点和需求不断探索符合行业特性的大数据应用场景。那么对客服行业来说,大数据将对客户服务将产生…

基于C/S框架的医院LIS实验室检验系统源码

LIS系统功能 一、字典管理模块: 系统参数功能简介:集中设置系统使用过程中所需的参数值,一般由开发或实施人员进行设置。 标本管理功能简介:标本管理是对检验业务中涉及的检验标本类型进行初始化设置, …