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

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

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Python如何快速下载依赖

《Python如何快速下载依赖》本文介绍了四种在Python中快速下载依赖的方法,包括使用国内镜像源、开启pip并发下载功能、使用pipreqs批量下载项目依赖以及使用conda管理依赖,通过这些方法... 目录python快速下载依赖1. 使用国内镜像源临时使用镜像源永久配置镜像源2. 使用 pip 的并

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

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