Bp神经网络详解—matlab实现Bp神经网络

news/2024/10/27 20:35:49/

简介

大家好,我最近刚发完论文可以稍稍放松一段时间,之前就发现越来越多的人在学习神经网络的知识,而且有些同学对其也是十分推崇。其实也不奇怪,哈哈,结合当今地时代背景,不管是在什么领域,大家都希望我们身边地东西变得越来越智能,比如手机,电脑等,甚至像像华为公司开发地鸿蒙系统,把日常地电器和手机连接在一起,从而向用户提供更智能地服务。
在这里插入图片描述
(给文章加点图,要不然都是文字太难看了,侵权删)
但是如何才能让我们的生活更加智能呢?答案可能是让机器可以向人类一样进行思考,神经网络作为模仿人类大脑神经元的一种算法恰好可以提供这样的服务。本文仅对基本的Bp神经网络进行介绍,主要推导在BP神经网络反向传播的过程中参数如何调整,并且用matlab简单的模拟了一些BP神经网络的训练过程。
PS:简单介绍一下鸿蒙系统,目前手机主流的操作系统有鸿蒙,安卓以及苹果的系统,鸿蒙系统与他们的本质区别在于鸿蒙系统是面向5g的,有种希望实现万物互联的感觉,从5g的角度去看,鸿蒙确实有着跨时代的意义。

BP神经网络

BP神经网络的结构和过程其实很简单,其结构可以大致分为三部分:(1)输入层,输入数据;(2)隐藏层,处理数据;(3)输出层,输出结果。其过程可以分为正向传播过程和反向传播过程,在正向传播过程中,BP神经网络通过隐层神经元对数据进行处理,从而输出相应结果,在反向传播过程中BP神经网络通过对比真实结果与预测结果之间的误差E来不断调整各层神经元的参数值,从而减小误差,达到理想的效果。调整的原则是是误差不断减小,因此应使权值调整量与误差梯度下降成正比。

大家可以看一下下面的误差公式:

在这里插入图片描述
其中E代表误差,d_{k}代表输出层第k个神经元的真实值,后面的f为神经网络的激活函数,此公式代表单隐层的BP神经网络的误差,w_{jk}和v_{ij}为输入层和隐层,以及隐层和输出层之前的权值。

神经网络的权值调整量的求解如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
(中间过程实在懒得写了)
不过大家可以看出来,随着隐层的不断增多,需要求的在这里插入图片描述
类似这样的参数就越多,如何求出这种参数也是自己实现BP神经网络的关键,参考上面的过程,大家可以看出需要牵扯到符合函数求导的过程,单隐层很简单,单随着隐层数量不断增多,复合函数求导过程也就越复杂,对于多层复合函数需通过链式法则进行求解,但由于过程还是很抽象,大家可以先求解sin(sin2x)这样类推。

BP神经网络流程图

下面的流程图参考当时的教材,BP神经网络其实也分为两种,其区别在于对误差的调整,一种是每输入一个样本就计算相应误差对全职进行调整,也叫标准BP神经网络;二,则是计算所有样本的总误差,也称为屁训练BP神经网络,流程图如下所示:

在这里插入图片描述

我实现的是标准BP神经网络,代码如下:

input=[1,2,3;4,5,6;7,8,9];
output=[1,2;2,3;3,4];
num=[3,3,3,2];
layer=2;
error=0.1;
iter_time=100;
rate=0.1;
%不通过现有的matlab函数包实现BP神经网络功能
a1=size(input);%输入向量的维度,input的列的维度等于输入节点的个数,input行的维度等于输入数据的数量
a2=size(output);%输出向量的维度,output的列的维度等于输出节点的个数,output行的维度等于输出数据的数量
%初始化权重参数
parameters=cell(1,layer+1);
%layer为隐层的数目
for i=1:layer+1if i==1parameters{i}=rand(a1(2),num(i));elseif i==layer+1parameters{i}=rand(num(i-1),a2(2));elseparameters{i}=rand(num(i),num(i));end
end
%定义神经元的阈值
T=cell(1,layer+2);
for i=1:layer+2T{i}=ones(1,num(i));%num隐层节点个数
end
i=1;
Error=zeros(1,a1(1));
while i<=iter_timeresult=cell(1,layer+1);
%正向传播过程for j=1:a1(1)for k=1:layer+1if k==1result{k}=ones(1,num(k+1))./[1+exp(input(j,:)*parameters{k}-T{k}*parameters{k})];elseresult{k}=ones(1,num(k+1))./[1+exp(result{k-1}*parameters{k}-T{k}*parameters{k})];endend%计算第j个样本误差s=0;for t=1:a2(2)s=s+(output(j,t)-result{layer}(t));endError(j)=s^(0.5);%反向传播过程delta=cell(1,layer+1);%计算反向传播过程中可能需要的参数for t=1:a2(2)delta{layer+1}(t)=(output(j,t)-result{layer+1}(t))*result{layer+1}(t)*(1-result{layer+1}(t));endfor t=layer:-1:1middle=ones(1,num(t));for r=1:num(t)for l=1:num(t+2)middle(1,r)=middle(1,r)+delta{t+1}(l)*parameters{t}(r,l);enddelta{t}(r)=middle(r)*result{t}(r)*(1-result{t}(r));endend%调节参数for t=1:layer+1for r=1:num(t)for l=1:num(t+1)parameters{t}(r,l)=parameters{t}(r,l)+rate*delta{t}(l)*result{t}(l);endendend%检查误差是否符合要求E_MSE=(sum(Error.^(2))/a1(1))^(0.5);if E_MSE<errorbreak;endend
R=result{layer+1};
i=i+1;
end

这个并不能代表完整的BP神经网络算法过程,仅仅是实现了他模拟调整参数的过程,完整的过程还需要对神经网络进行训练,记录其训练好的参数,这样当有了新的输入才能给出准确的输出。

结语

BP神经网络的实现非常简单,但是利用人家·做好的函数可能并不能真正的理解他的原理和过程,虽然这只是重复他人的工作,但我觉得可以加深自己对神经网络的理解。就这样,哈哈哈 有错误或者其他问题欢迎交流。


http://www.ppmy.cn/news/594397.html

相关文章

Windows设置防火墙允许指定应用正常使用网络

文章目录 前言什么是Windows防火墙设置允许通过防火墙的应用防火墙中的专用和公用总结 前言 很长一段时间以来&#xff0c;防火墙这个神奇的“玩意”在我的电脑上基本属于名存死亡&#xff0c;因为做网络软件开发的缘故&#xff0c;经常需要别人连接我的电脑来进行测试&#x…

网络攻击介绍

网络攻击介绍 网络攻击简介&#xff1a; 网络攻击&#xff08;Cyberattack&#xff0c;也译为赛博攻击&#xff09;是指针对计算机信息系统、基础设施、计算机网络或个人计算机设备的&#xff0c;任何类型的进攻动作。 于计算机和计算机网络中&#xff0c;破坏、揭露、修改、…

计算机网络安全 第一章绪论

一&#xff0c;计算机网络面临的主要威胁 1&#xff0c;典型的网络安全威胁 威胁描述窃听网络中传输的敏感信息被窃听重传攻击者事先获得部分或全部信息&#xff0c;以后将此信息发送给接收者伪造攻击者将伪造的信息发送给接收者篡改攻击者对合法用户之间的通信信息进行修改&…

ConvNeXt网络详解

ConvNeXt 论文名称&#xff1a;A ConvNet for the 2020s 论文下载链接&#xff1a;https://arxiv.org/abs/2201.03545 论文对应源码链接&#xff1a;https://github.com/facebookresearch/ConvNeXt 视频讲解&#xff1a;https://www.bilibili.com/video/BV1SS4y157fu 文章目录…

模糊神经网络

参考&#xff1a; https://wenku.baidu.com/view/94f77a7384868762cbaed58f.html https://wenku.baidu.com/view/22590c72cc17552706220818.html 1.模糊系统与神经网络的区别与联系 (1)从知识的表达方式来看 模糊系统可以表达人的经验性知识&#xff0c;便于理解&#xff0c;…

复杂网络笔记

空间上网络 很容易形成高聚集性 存在距离上三角不等式 两边之和大于 第三边 你两个邻居跟你靠近 他们彼此之间也会靠近 &#xff08;因为上述&#xff09; 但是并不短 现实是无标度世界。攻击那些度大的点&#xff0c;会有特别大的攻击性。 弱连接就有强关系 √ 找工作要找…

神经网络算法

前馈神经网络 前馈神经网络&#xff08;FeedForward NN ) :是一种最简单的神经网络&#xff0c;采用单向多层结构&#xff0c;各神经元分层排列&#xff0c;每个神经元只与前一层的神经元相连。接收前一层的输出&#xff0c;并输出给下一层&#xff0c;各层间没有反馈。 前馈…

企业网络设计

企业网络设计 一、客户需求&#xff1a; 1.实现NAT地址专网&#xff0c;达到内网可以访问外网 2.公司内部的文件服务器和数据库服务器只允许内网的用户和出差的员工通过VPN进行访问 3.本单位的WWW网站服务器&#xff08;如Server3&#xff09;允许外网的主机访问 4.分部可以访问…