第五章 神经网络(下)

news2025/8/12 2:46:11

5.3 误差逆传播算法

多层网络地学习能力比单层感知机强的多。欲训练多层网络,之前的简单感知机学习规则显然不够用了,需要更强大的学习算法。误差逆传播(error BackPropagation,简称BP)算法就是其中最杰出的代表。现实任务中使用神经网络时,大多使用的BP算法进行训练,其不仅可用于多层前馈神经网络,还可用于其他类型额神经网络。通常的,BP网络一般指用BP算法训练的多层前馈神经网络。
给定训练集D={(x1,y1),(x2,y2),…,(xm,ym)},输入示例由d个属性描述,输出l维实例向量。下图给出了一个拥有d个输入神经元,l个输出神经元,q个隐层神经元的多层前馈网络结构。
在这里插入图片描述
BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计。BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。
BP算法的具体工作流程
1、先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;
2、然后计算输出层的误差,再将误差逆向传播至隐层神经元;
3、最后根据隐层神经元的误差来对连接权和阈值进行调整。
该迭代过程循环进行,直到某些停止条件为止,比如训练误差已经到了一个很小的值。
BP算法的目标是要最小化训练集D上的累计误差。标准BP算法每次仅对一个训练样例更新连接权和阈值,如果类似的推导出基于累积误差最小化的更新规则,就能得到累计误差逆传播算法

一般来说,标准BP算法每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现抵消现象,因此,为了达到同样的累积误差极小点,标准BP算法往往需要进行更多次数的迭代。累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数集进行更新,其参数更新频率低得多。在很多任务中,累积误差下降到一定程度后,进一步下降会非常缓慢,这时标准BP往往会更快获得较好的解,尤其是训练集非常大时更明显。

曾经有人证明,只需一个包含足够多的神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。对于如何设置隐层神经元的个数,实际应用中往往采用试错法

由于其强大的表示能力,BP神经网络经常遭遇过拟合,其训练误差持续降低,测试误差却可能上升。以下是两种用来缓解BP网络过拟合的常用策略。
一、早停:将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。
二、正则化:其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和。

5.4 全局最小与局部最小

若用E表示神经网络在训练集上的误差,则它显然是关于连接权w和阈值θ的函数。此时,神经网络的训练过程可看作一个参数寻优过程,即在参数空间中,寻找一组最优参数使得E最小。
直观的看,局部极小解是参数空间中的某个点,其邻域点的误差函数值均不小于该点的函数值;全局最小解则是参数空间中所有点的误差函数值均不小于该点的误差函数值。
在这里插入图片描述
现实任务中,人们往往采用以下几个策略来试图跳出局部极小,从而进一步接近全局最小:
1、以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果。
2、使用 “模拟退火" (simulated annealing)技 术。模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于 “跳出”局部极小。在每步迭代过程中,接受 “次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定。
3、使用随机梯度下降。与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素。于是,即便陷入局部极小点,它计算出
的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索。
此外,遗传算法(genetic algorithms)也常用来训练神经网络以更好地逼近全局最小.需注意的是,上述用于跳出局部极小的技术大多是启发式,理论上尚缺乏保障.

其他常见神经网络

5.5.1 RBF网络

RBF(Radial Basis Function,径向基函数)网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数,而输出层则是对隐层神经元输出的线性组合。具有足够多隐层神经元的RBF网络能以任意精度逼近任意连续函数。
通常采用两步过程来训练RBF网络:1、确定神经元中心,常用的方式包括随机采样,聚类等。2、利用BP算法来确定其他参数

5.5.2 ART网络

竞争性学习(competitive learning)是神经网络中一种常用的无监督学习策略,在该策略中,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元被抑制。这种
ART(Adaptive Resonance Theory自适应谐振理论)网络是竞争型学习的重要代表。该网络由比较层、识别层、识别阈值和重要模块构成。其中比较层负责接受输入样本,并将其传递给识别层神经元。识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。
神经元之间竞争的最简单方式是,计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者胜,胜者同时向其他识别层神经元发送抑制信号。

若输入向量与获胜神经元所对应的代表向量之间的相似度大于识别阈值,则当前输入样本将被归为该代表向量所属类别。同时,网络连接权将会更新,使得以后在接收到相似输入样本时该模式类会计算出更大的相似度,从而使该获胜神经元有更大可能获胜;若相似度不大于识别阈值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量。

显然,识别阈值对ART网络的性能有重要影响。当识别阈值较高时,输入样本将会被分成比较多、比较精细的模式类,而如果识别阈值较低,则会产生比较少、比较粗略的模式类。

ART比较好地缓解了竞争性学习中的“可塑性-稳定性”,可塑性是指神经网络要有学习新知识的能力,而稳定性则是指神经网络在学习新知识时要保持旧知识的记忆。这就使得ART网络具有一个很重要的优点:可进行增量学习在线学习

5.5.3 SOM网络

SOM(Self-Organizing Map,自适应映射)网络是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间(通常是二维),同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的临近神经元。
SOM的训练过程很简单:在接收到一个训练样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最近的神经元成为竞争获胜者,称为最佳匹配单元。然后,最佳匹配单元及其邻近神经元的权向量将被调整,以使得这些权向量与当前输入样本的距离缩小。这个过程不断迭代,直至收敛。
在这里插入图片描述

5.5.4 级联相关网络

一般的神经网络模型通常假定网络结构是事先固定的,训练目的是利用训练样本来确定合适的连接权、阈值等参数。与此不同,结构自适应网络则将网络结构也当作学习目标之一。并希望能在训练过程中找到最符合数据特点的网络结构。级联相关网络是结构自适应网络的重要代表
在这里插入图片描述

5.5.5 Elman网络

与前馈神经网络不同,递归神经网络允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号。如此一来,使得网络在输出状态不仅与当前的输入有关,还与之前的网络状态也有关。Elman网络是最常用的递归神经网络之一。
在这里插入图片描述

5.5.6 Boltzmann机

神经网络中有一类模型是为网络状态定义一个能量,能量最小化时网络达到理想状态,而网络的训练就是在最小化这个能量函数。Boltzmann机就是一种基于能量的模型。其神经元都是布尔型的,即只能取0、1两种状态。

5.6 深度学习

典型的深度学习模型就是很深层的神经网络。显然,对神经网络模型,提高容量的一个简单办法就是增加隐层的数目。隐层多了,相应的神经元连接权、阈值等参数就会更多。
在这里插入图片描述

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

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

相关文章

CPU受限直接执行

目录 1. 虚拟化CPU 2. 进程 2.1 进程的机器状态 2.2 进程创建 2.3 进程的状态 3. 受限直接执行 3.1 直接执行 3.2 受限制的操作 3.3 在进程之间切换 3.3.1 协作方式:等待系统调用 3.3.2 非协作方式:操作系统进行控制 3.3.3 保存和恢复上下…

油藏生产业务+机器学习代理优化算法

前前处理,把后台需要的参数都读出来。写进name.txt 生成新的sch文件,需要在data里追加新sch名字 没改变的井就不用重新卸载关键字里了。 重启动模型:制作出来是空的,得自己加别的东西 模型要准确,否则不好和历史模型…

【吴恩达机器学习笔记】二、单变量线性回归

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。 📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记&…

OpenGL原理与实践——核心模式(三):Texture-纹理系统理论与应用

目录 初识——纹理系统是什么?怎么用? Texture —— UV坐标系统 Texture Wrapping:UV超过了[0,1]怎么办? Texture Filter:UV经过计算得到的是浮点数怎么办? 在OpenGL中该怎么做呢? Texture Unit——…

列表和标签企业报告版的完整报告解决方案

列表和标签企业报告版的完整报告解决方案 无缝集成到所有主要开发环境和编程语言:Visual Studio、.NET/。NET核心(C#、VB.NET)、C/C、Delphi/VCL、Java、Progress、DataFlex、dBASE PLUS、Xbase等。 通过现代数据绑定灵活连接到任何数据源:List&Labe…

自适应点云配准(RANSAC、ICP)

点云配准 实验目标 任务一:将两个形状、大小相同的点云进行配准,进而估计两个点云之间的位姿。 任务二:将一些列深度图反向投影得到点云,经过配准后,得到每个深度图之间的位姿变换,并将相应的点云融合到一…

【云原生】Docker镜像的创建,Dockerfile

内容预知 1.Dokcer镜像的创建 1.1 基于现有镜像创建 1.2 基于本地模板创建 1.3 基于Dockerfile 创建 联合文件系统(UnionFS ) 镜像加载原理 容器中操作系统容量小的原因 Docker镜像结构的分层 Dockefile的引入 2. Dockerfile 操作命令的指令 2.1 FROM 镜像 2.2 MA…

股票接口实时交易数据怎么查询?

股票数据接口作为软件应用而言,很多资源和数据是由自身提供的,像其他一些功能还是需要调用第三方提供的服务,这其中就涉及到股票数据接口api的调用功能,通过api来获取实时交易数据查询更方便,因此,如果交易…

【学习笔记17】JavaScript作用域

笔记首发 一、作用域 😴我们学变量,不是在任何地方都可以使用😴变量有一个使用区间, 这个可以使用的区间就叫做作用域 1、全局作用域 😫 script标签内部声明的变量,就是全局作用域的变量😏在全局作用域声明…

计算机网络的定义和分类

计算机网络早期定义:自治互联的计算机集合 计算机网络系统的基本组成为:通信子网资源子网 计算机网络分类: 公用网通常是由电信公司出资建造的大型网络。 专用网通常是由某个部门为满足本单位特殊业务的需要建造的网络&#xff…

基于springboot+jpa+camunda实现简单的请假审批流程

整个camunda的绘图、具体使用,参照上一篇文章Camunda工作流引擎简记。 源码地址,相关技术储备如下 springboot–v2.5.4jpa–v2.5.4postgresql–v11camunda–v7.16.0 整个过程不需要建表,这就是JPA面向对象编程的好处,这也是我认…

33 - C++中的字符串类

---- 整理自狄泰软件唐佐林老师课程 1. 历史遗留问题 C语言 不支持真正意义上的字符串 C语言用 字符数组 和 一组函数 实现字符串操作 C语言 不支持自定义类型,因此无法获得字符串类型 解决方案 从C到C的进化过程 引入了 自定义类型在C中可以通过类完成字符串类型…

iOS上架app store详细教材

1、安装iOS上架辅助软件Appuploader 2、申请iOS发布证书(p12) 3、申请iOS发布描述文件(mobileprovision) 4、打包ipa 5、上传ipa到iTunes Conn 1、安装iOS上架辅助软件Appuploader2、申请iOS发布证书(p12)…

ImmunoChemistry艾美捷牛膜联蛋白V-荧光素凋亡检测试剂盒方案

ImmunoChemistry艾美捷牛膜联蛋白V-荧光素细胞凋亡检测试剂盒提供了一种经验证的方法,可使用重组荧光素结合的牛膜连蛋白V和碘化丙啶(PI)快速、轻松地区分两个死亡细胞群和活细胞群。这些细胞将被膜联蛋白V-荧光素(绿色荧光&#…

docker容器持久化

第六章容器持久化 容器数据卷 什么是容器数据卷? 容器之间可以有一个数据共享技术!docker容器中产生的数据,同步到本地! 这就是卷技术!目录的挂载,将我们容器内的目录,挂在到linux上面&#x…

线性时间选择(Top K)问题(Java)

线性时间选择(Top K)问题(Java) 文章目录线性时间选择(Top K)问题(Java)1、前置介绍2、分治法求解3、代码实现4、复杂度分析5、扩展6、参考资料1、前置介绍 定义 选择问题&#xff0…

docker可视化与制作和提交自己的镜像

第四章docker可视化 portainer docker的图形化管理工具!提供一个后台面板供我们操作! docker run -d -p 8080:9000 \--restartalways -v /var/run/docker.sock:/var/run/docker.sock --privilegedtrue portainer/portainer 访问测试:外网…

Python_数据容器_元组tuple

一、元组tuple定义 为什么需要元组 列表是可以修改的,如果想要传递的信息不被篡改,列表就不适合了 元组和列表一样,都是可以封装多个不同类型的元素在内 最大的不同点在于: 元祖一旦定义完成,就不可修改 所以&am…

SpringBoot中使用JDBC

JDBC基础使用&#xff1a; JDBC基础使用_做测试的喵酱的博客-CSDN博客 一、SpringBoot使用JDBC&#xff0c;依赖 依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId&…

linux zookeeper kafka_2.12-2.2.0 集群

文章目录一、zookeeper服务搭建1. 下载2. 解压3. 创建目录4. 调整配置5. 配置myid6. 开放防火墙7.启动验证zk二、kafka集群搭建2.1. 下载软件2.2. 解压2.3. 配置2.5. 启动kafka三、测试验证3.1. 创建一个主题3.2. 发送消息3.3. 消费消息预先准备&#xff1a;上传软件至服务器19…