依赖反向传播改进神经网络数据处理的精确度

2024-04-30 22:18

本文主要是介绍依赖反向传播改进神经网络数据处理的精确度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在前几节,我们一直强调,人工智能运行的一个基本原理是,由人分析具体问题然后抽象出问题与数据间的逻辑关系,这种逻辑关系往往是一个数学模型。计算机的任务是根据大量数据的分析来确定数学模型中的各种参数。前面我们详细讨论过的一个例子就是二维平面上点集的划分。

这里写图片描述

如上图,由人对问题进行抽象分析后得出,两组数据可以用一条通过圆点的直线分割开来。直线所对应的方程就是问题与数据间的逻辑关系,也就是数学模型,模型的参数就是直线的斜率,这条直线与横坐标成多大的夹角才能更好的将两组数据区分开来。计算机的任务就是根据输入的大量点坐标,然后根据给定算法步骤把这个夹角计算出来。计算的办法就是开始先随机设置这个夹角值,然后检测直线区分数据的效果,如果数据集中总共有100个点,其中60个点属于红点,但是当前直线只能将30个点识别为红点,那么误差就是30个点,根据这个误差,算法调节直线夹角,使得调整后能正确识别的红点数量越来越多,这就是人工智能运转的基本原理。

前面说过,神经网络模型中,需要修正的参数是神经元链路之间的权重值,问题在于如何修改,如下图,假定最后神经元输出结果,跟正确结果比对后得到一个误差,那么我们如何根据误差来修正W(1,1) 和 W(2,1)呢?

这里写图片描述

神经网络模型的问题在于,任何一个节点链路权重的改变都会对最终结果产生影响。所以当我们拿到计算结果产生的误差后,不可能仅仅修改其中某一个权重,而是所有权重都要相应修改。接下来问题是,权重参数有多个,而最终误差只有一个,那么如何把误差分配给每个权重进行调整呢?一种做法是把误差平均分配给每个权重,如下图:

这里写图片描述

但这种大锅饭机制不合理,因为W(1,1)权重大,传送给输出节点的信号量就强,因此最终结果的误差来自于这条链路的贡献相对就大,因此要调整的话,这个权重的调整幅度肯定要比下面链路权重的调整幅度要大,因此合理的做法是,根据权重的比值进行相应的调整,因此网络要把误差的四分之三传递给W(1,1), 四分之一传递给W(2,1),于是误差反向传播的模式如下图:

这里写图片描述

这个误差回传机制继续运用到后续节点链路上,这就是所谓的反向传导。当前模型中,输出节点只有一个,如果输出节点有多个怎么办?例如下图:

这里写图片描述

上图网络有两个输出节点,两个节点的输出结果跟正确结果都会产生偏差,其处理方式跟一个节点时一样,每个节点拿到误差后,根据进入其节点的链路权重,等比例的返回给后面节点。如果第一个节点的输出结果为O1, 对应的正确结果为T1, 那么第一个输出节点的误差就是E1 = T1 - O1.从上图可以看出E1会根据W(1,1)和W(2,1)的相互比值,同比例的返回给第一层的节点1和节点2.误差E2的分配也同理。这么算来,用于调整权重W(1,1)的误差比值为:

这里写图片描述

同理用于调整权重W(2,1)的误差比值为:

这里写图片描述

举个实际例子,假定E1= 9, W(1,1) = 6, W(2,1) = 3, 那么用于调整W(1,1)的误差值为 9 * (6 / (6+3)) = 6, 用于调整W(2,1)的误差值为 9 *(3/(3+6)) = 3。同理E2也依据相同原则分配给W(1,2)和W(2,2).

如果网络有三层,那么误差以相同机制反向传播,如下图:

这里写图片描述

误差先从最外层节点开始,根据链路的权重比例返回给中间隐藏层节点1,隐藏层节点1和输入层节点1之间,在根据两者的链接链路比重把中间层节点1接收到的误差同比例分配给权重W(i,h)。如果还有更多的层级,这个反向传播机制就一直进行下去。我们用一个具体实例把误差的反向传播机制走一遍。

这里写图片描述

最外层输出两个输出节点的误差分别为1.5和0.5,中间层节点1与最外层节点1之间的链路权重为2.0,中间层节点1与最外层节点2的链路权重为1.0,中间层节点2与最外层节点1的链路权重为3.0,中间层节点2与最外层节点2的链路权重为4.0,于是最外层节点1反向传导给中间层节点1的误差为 1.5 * (2 / (2+3)) = 1.5 * (2/5) = 0.6, 最外层节点2反向传导给中间层节点1的误差为 0.5 * (1 / (1+4)) = 0.5 *(1/5) = 0.1, 因此中间层节点1接收到的总误差为0.7.

中间层节点1与最外层节点2间链路权重为1.0,因此最外层节点1反向传播给中间层节点2的误差为1.5 * (3.0 / (2.0 + 3.0)) = 1.5 * (3/5) = 0.9,中间层节点2与最外层节点2的链路权重为4.0,因此最外层节点2反向传播给中间层节点2的误差为0.5 * (4.0 / (1.0 + 4.0)) = 0.5 * (4/5) = 0.4, 由此中间层节点2获得的误差为1.3.

我们以同样的方法将误差从中间层传到回最外层,如下图:

这里写图片描述

最外层节点1与中间层节点1的链路权重为3.0,最外层节点2余中间层节点1链路权重为2.0,因此中间层节点1反向传导给最外层节点1的误差为 0.7 * (3.0 / (3.0+2.0) ) = 0.7 * (3/5) = 0.42, 中间层节点1反向传导给最外层节点2的误差为 0.7 * (2.0 / (3.0 + 2.0) ) = 0.28.

最外层节点1与中间层节点2的链路权重为1.0,最外层节点2与中间层节点2的链路权重为7.0,因此中间层节点2反向传导给最外层节点1的误差为 1.3 * (1.0 / (1.0 + 7.0) ) = 1.3 * (1/8) = 0.1625, 中间层节点2反向传导给最外层节点2的误差为1.3 * (7.0 / (7.0 + 1.0) ) = 1.1375.

由此最外层节点1获得的总误差为 0.42 + 0.1625 = 0.5825, 最外层节点2获得的误差为0.28 + 1.1375 = 1.4175.

通过反向传播,我们就能把最外层节点获得的误差传导给神经网络每一层的每个节点,每个节点再根据获得的误差调整它与下一层网络节点的链路权重,这个误差回传过程就是神经网络中经常提到的反向传播机制。

下一节我们看看如何使用矩阵快速实现反向传播误差的计算。

更详细的讲解和代码调试演示过程,请点击链接

更多技术信息,包括操作系统,编译器,面试算法,机器学习,人工智能,请关照我的公众号:
这里写图片描述

这篇关于依赖反向传播改进神经网络数据处理的精确度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/950063

相关文章

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

使用maven依赖详解

《使用maven依赖详解》本文主要介绍了Maven的基础知识,包括Maven的简介、仓库类型、常用命令、场景举例、指令总结、依赖范围、settings.xml说明等,同时,还详细讲解了Maven依赖的... 目录1. maven基础1.1 简介1.2 仓库类型1.3 常用命令1.4 场景举例1.5 指令总结

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

python中poetry安装依赖

《python中poetry安装依赖》本文主要介绍了Poetry工具及其在Python项目中的安装和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前言1. 为什么pip install poetry 会造成依赖冲突1.1 全局环境依赖混淆:1

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是