多层前馈神经网络及BP算法

article/2025/8/23 19:55:30

一.多层前馈神经网络
首先说下多层前馈神经网络,BP算法,BP神经网络之间的关系。多层前馈[multilayer feed-forward]神经网络由一个输入层、一个或多个隐藏层和一个输出层组成,后向传播[BP]算法在多层前馈神经网络上面进行学习,采用BP算法的[多层]前馈神经网络被称为BP神经网络。给出一个多层前馈神经网络的拓扑结构,如下所示:
图1 多层前馈神经网络
神经网络的拓扑结构包括:输入层的单元数、隐藏层数[如果多于一层]、每个隐藏层的单元数和输出层的单元数。神经网络可以用于分类[预测给定元组的类标号]和数值预测[预测连续值输出]等。

二.后向传播[BP]算法详解
1.初始值权重
神经网络的权重被初始化为小随机数,每个神经元都有一个相关联的偏置,同样也被初始化为小随机数。
2.前向传播输入
以单个神经网络单元为例,如下所示:
这里写图片描述
给定隐藏层或输出层的单元 j j j,到单元 j j j的净输入 I j I_{j} Ij,如下所示:
I j = ∑ i w i j O i + θ j {I_j} = \sum\limits_i {{w_{ij}}{O_i} + {\theta _j}} Ij=iwijOi+θj
其中, w i j w_{ij} wij是由上一层的单元 i i i到单元 j j j的连接的权重; O i O_i Oi是上一层的单元 i i i的输出; θ j \theta_j θj是单元 j j j的偏置。需要说明的是偏置充当阀值,用来改变单元的活性。
给定单元 j j j的净输入 I j I_j Ij,单元 j j j的输出 O j O_j Oj,如下所示:
O j = 1 1 + e − I j {O_j} = \frac{1}{{1 + {e^{ - {I_j}}}}} Oj=1+eIj1
3.后向传播误差
[1]对于输出层单元 j j j,误差 E r r j Er{r_j} Errj用下式计算:
E r r j = O j ( 1 − O j ) ( T j − O j ) Er{r_j} = {O_j}\left( {1 - {O_j}} \right)\left( {{T_j} - {O_j}} \right) Errj=Oj(1Oj)(TjOj)
其中, O j O_j Oj是单元 j j j的实际输出,而 T j T_j Tj j j j给定训练元组的已知目标值。需要说明的是, O j ( 1 − O j ) {O_j}\left( {1 - {O_j}} \right) Oj(1Oj)是逻辑斯缔函数的导数。
[2]对于隐藏层单元 j j j,它的误差用下式计算:
E r r j = O j ( 1 − O j ) ∑ k E r r k w j k Er{r_j} = {O_j}\left( {1 - {O_j}} \right)\sum\limits_k {Er{r_k}{w_{jk}}} Errj=Oj(1Oj)kErrkwjk
其中, w j k w_{jk} wjk是由下一较高层中单元 k k k到单元 j j j的连接权重,而 E r r j Er{r_j} Errj是单元 k k k的误差。
[3]权重更新,如下所示:
Δ w i j = ( l ) E r r j O i w i j = w i j + Δ w i j \begin{array}{l} \Delta {w_{ij}} = \left( l \right)Er{r_j}{O_i} \\ {w_{ij}} = {w_{ij}} + \Delta {w_{ij}} \\ \end{array} Δwij=(l)ErrjOiwij=wij+Δwij
其中, Δ w i j \Delta {w_{ij}} Δwij是权重 w i j w_{ij} wij的改变量,变量 l l l是学习率,通常取0.0和1.0之间的常数值。
[4]偏置更新,如下所示:
Δ θ j = ( l ) E r r j θ j = θ j + Δ θ j \begin{array}{l} \Delta {\theta _j} = \left( l \right)Er{r_j} \\ {\theta _j} = {\theta _j} + \Delta {\theta _j} \\ \end{array} Δθj=(l)Errjθj=θj+Δθj
其中, Δ θ j \Delta {\theta _j} Δθj θ j \theta_j θj的改变量。
[5]权重和偏置更新
如果每处理一个样本就更新权重和偏置,称为实例更新[case update];如果处理完训练集中的所有元组之后再更新权重和偏置,称为周期更新[epoch update]。理论上,反向传播算法的数据推导使用周期更新,但是在实践中,实例更新通常产生更加准确的结果。
说明:误差反向传播的过程就是将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值,即权值调整的过程。
4.终止条件
如果满足条件之一,就可以停止训练,如下所示:
[1]前一周期所有的都太小,小于某个指定的阀值。
[2]前一周期误分类的元组百分比小于某个阀值。
[3]超过预先指定的周期数。
实践中,权重收敛可能需要数十万个周期。神经网络的训练有很多的经验和技巧,比如可以使用一种称为模拟退火的技术,使神经网络确保收敛到全局最优。

三.用BP训练多层前馈神经网络
举个例子具体说明使用BP算法训练多层前馈神经网络的每个细节,如下所示:
这里写图片描述
设置学习率为0.9,第一个训练元组为 X = { 1 , 0 , 1 } X = \left\{ {1,0,1} \right\} X={1,0,1},其类标号为1。神经网络的初始权重和偏置值如表1所示:
这里写图片描述
根据给定的元组,计算每个神经元的净输入和输出,如表2所示:
这里写图片描述
每个神经元的误差值如表3所示:
这里写图片描述
说明:从误差的计算过程来理解反向[BP]传播算法也许更加直观和容易。
权重和偏置的更新如表4所示:
这里写图片描述
说明:将该神经网络模型训练好后,就可以得到权重和偏执参数,进而做二分类。

四.用Python实现BP神经网络[3]
神经网络拓扑结构,如下所示:
这里写图片描述
解析:
1.第33和35行:l1和l2分别表示第1层和第2层神经元的输出。[第0层表示元组输入]
2.第37行:l2_error与相对应。
3.第40行:l2_delta与输出层误差相对应。
4.第42行:l1_error与相对应。
5.第43行:l1_delta与隐藏层误差相对应。
6.第45行:l1.T.dot(l2_delta)与相对应,而syn1与相对应。
7.第46行:l0.T.dot(l1_delta)与相对应,而syn0与相对应。
说明:一边代码,一边方程,做到代码与方程的映射。这是一个基础的三层BP神经网络,但是麻雀虽小五脏俱全。主要的不足有几点:没有考虑偏置;没有考虑学习率;没有考虑正则化;使用的是周期更新,而不是实例更新[一个样本]和批量更新[m个样本]。但是,足以理解前馈神经网络和BP算法的工作原理。神经网络和BP算法的详细数学推导参考[5]。

参考文献:
[1]数据挖掘:概念与技术[第三版]
[2]使用Python构造神经网络:http://www.ibm.com/developerworks/cn/linux/l-neurnet/
[3]一个11行Python代码实现的神经网络:http://python.jobbole.com/82758/
[4]用BP人工神经网络识别手写数字:http://blog.csdn.net/gzlaiyonghao/article/details/7109898
[5]反向传导算法:http://ufldl.stanford.edu/wiki/index.php/%E5%8F%8D%E5%90%91%E4%BC%A0%E5%AF%BC%E7%AE%97%E6%B3%95


http://chatgpt.dhexx.cn/article/U2QaEoat.shtml

相关文章

bp神经网络的拓扑结构,bp神经网络模型结构图

试画出BP神经网络结构输入层3节点,隐层5节点,输出层2节点 BP(BackPropagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。 …

人工神经网络的拓扑结构,三层神经网络结构图

人工神经网络的基本组成是什么啊 谷歌人工智能写作项目:小发猫 神经网络BP模型 一、BP模型概述误差逆传播(ErrorBack-Propagation)神经网络模型简称为BP(Back-Propagation)网络模型常见的神经网络结构。 PallWerbas博士于1974年在他的博士论文中提出了误差逆传播…

模式识别:三层BP神经网络的设计与实现

本文的目的是学习和掌握BP神经网络的原理及其学习算法。在MATLAB平台上编程构造一个3-3-1型的singmoid人工神经网络,并使用随机反向传播算法和成批反向传播算法来训练这个网络,这里设置不同的初始权值,研究算法的学习曲线和训练误差。有了以上…

数学建模常用模型21:BP神经网络(三层)

给大家安利一款朋友开发的自研国产数据分析基础工具,一键式自动分析,自动生成分析模板,5分钟掌握主流61个统计类数学模型(几乎涵盖SPSS绝大部分功能),以及23个有监督机器学习(包括随机森林&…

三层神经网络的BP(BackPropagation)算法推导

BP算法: 利用的是sigmoid函数来搭建的一个三层神经网络。假设其拓扑结构如图1-1所示。 图1-1 三层神经网络 该网络的运行流程为:当输入一个样例后,获得该样例的特征向量,再根据权向量得到感知机的输入值,然后使用si…

多层神经网络BP算法解释

# 多层神经网络BP算法解释 ## 前向传播 *** * 该项目采用反向传播算法描述了多层神经网络的教学过程。 为了说明这个过程,使用了具有两个输入和一个输出的三层神经网络,如下图所示: 每个神经元由两个单元组成。 第一单元添加权重系数和输入信号的乘积。 …

python实现神经网络_Python实现的三层BP神经网络算法示例

本文实例讲述了Python实现的三层BP神经网络算法。分享给大家供大家参考,具体如下: 这是一个非常漂亮的三层反向传播神经网络的python实现,下一步我准备试着将其修改为多层BP神经网络。 下面是运行演示函数的截图,你会发现预测的…

BP神经网络(3层)

终于放假啦,于是就想着把前一段时间学习的知识给整理一下,希望能够对小伙伴们有所帮助。 数学原理 BP(Back Propagation)(Rummelhart D, McClelland J.,1986)神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络。 三层BP神经网络的组成主要…

基于三层BP神经网络的人脸识别

实验四、基于三层BP神经网络的人脸识别 一、 实验要求 采用三层前馈BP神经网络实现标准人脸YALE数据库的识别,编程语言为C系列语言。 二、BP神经网络的结构和学习算法 实验中建议采用如下最简单的三层BP神经网络,输入层为 ,有n个神经元节点&a…

神经网络笔记1-三层BP神经网络

神经网络笔记1-三层BP神经网络 神经网络性质简介信息正向传输预期神经网络的获得误差反向更新(输出层→隐藏层)误差反向更新(隐藏层→输入层) 伪代码实现训练函数测试函数,用训练好的神经网络预测 手写数字识别举例识别…

BP神经网络的梯度公式推导(三层结构)

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 目录 一. 推导目标 1.1 梯度公式目标 1.2 本文梯度公式目标 二. 网络表达式梳理 2.1 梳理三层BP神经网络的网络表达式 三. 三层BP神经网络梯度推导过程 3.1 简化推导目标 3.2 输出层权重…

三层架构的搭建

目录 实验拓扑: 实验要求: 使用的技术有: ospf技术、NAT技术、静态、DHCP、VRRP 、STP、 VLAN、TRUNK 、 access接口模式、 以太网中继Eth-Trunk(华为) 技术、vlan管理技术 实验思路: 实验过程: IP地址的配置&am…

tfs路径映射已存在

环境:VS2019、Win10 最近公司服务器更换,想要将tfs项目映射到原来的工作区,提示“tfs-路径 XXX 已在工作区 XXX;XXX 中映射”,通过网络查找资料得知,需要修改Team Foundation的配置文件: 1.找到目录&#x…

TFS2012 权限设置

环境: TFS2012 win7 1.安装好TFS 2.创建系统用户组: TFSAdmins、TFSDevs、TFSUsers 分别为TFS管理人员组、TFS开发人员组、TFS普通用户组。 如下图: 这样我们在TFS的权限设置里,都只针对这三个组设权限,不会具体到…

TFS学习

一、TFS是什么 TFS全称是 Team Foundation Server,是 Microsoft 提供的 源代码管理、数据收集、报告和项目跟踪的平台工具。 主要功能 版本管理:工作区(workspace)、变更集(changeset)、标签并行开发支持…

tfs java_TFS (Team Foundation Server) 2013集成Maven构建

Team Foundation Server原生就支持跨平台的构建,包括Ant和Maven两种构建方式。通过配置构建服务器,连接TFS源代码库,可以实现持续集成构建,自动检测代码库健康状况,进而实现自动测试和部署。本文以Maven为例&#xff0…

Azure DevOps Server 2019 (TFS)安装教程

(1)安装教程: Azure DevOps Server 2019 (TFS)安装教程 - danzhang - 博客园 Azure DevOps Server 的安装教程_躺平佛系周大侠的博客-CSDN博客 1.配置数据库,使用默认的sql express 2.搜索配置, 使用默认…

TFS用户组说明和用户权限配置过程

一、TFS默认用户组的说明 服务器级别用户组: 1、TFS服务器/Team Foundation Valid Users:可以访问TFS服务器。 2、TFS服务器/Team Foundation Licensed Users:可以连接TFS服务器。这个组只在 Team Foundation Server Workgroup Edition 版本…

linux系统tfs安装,Jenkins使用TFS部署

之前发表过一篇Jenkins的文章《使用Jenkins部署.Net应用程序》,里面是使用GIT做的版本管理,今天更新下使用TFS做版本管理。 首先在插件管理中搜索tfs,我这里因为已经装了,所以在已安装列表里,没装的话在可选插件列表中…

TFS淘宝分布式文件核心存储引擎源码架构剖析实现

这里写目录标题 相关背景介绍相关设计思路介绍项目基础文件系统接口扇区文件结构关于inode为什么淘宝不用小文件存储淘宝网为什么不用普通文件存储海量小数据? 设计思路关键数据结构哈希表 代码日志mmp_file.hmmap_file.cppfile_op.hmain_mmap_op_file.cppindex_han…