AI学习记录 - 模型训练中怎么反向传播以及学习率的影响

2024-08-29 08:44

本文主要是介绍AI学习记录 - 模型训练中怎么反向传播以及学习率的影响,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

画图不易,有用点赞

解释反向传播中具体的运行

假设我们有个简易的神经元连接,如下

在这里插入图片描述

目的是求解 绿色w = 5 权重对结果 60的影响程度,因为我们得知道 绿色w = 5 对结果的影响程度和影响方向,才好将 绿色w = 5 是增大还是缩小,增大多少或者减少多少。
我们知道神经元其实y = w * x + b,多层之后,如图所示

在这里插入图片描述

根据模型直接得出的结果是 60,但是假设真实值是 90,那么60太小了,我们需要增大 绿色w=5 的权重,让 60慢慢接近90,怎么做呢?

我们知道了求影响程度,也是一级一级的求,求的是当前公式对下一级的影响程度也就是导数,最后相乘叠加起来,上图知道 w = 5 对 60 的影响程度是 500,当 绿色w = 5 增加 1 , 60 变成 560, 在实际训练过程中,500太大了,也就是直接求出来的导数太大,我们会先使用学习率进行缩小计算:

500 * 0.01(学习率) = 5 (变化程度)
5(原权重) + 5 (变化程度) = 10 (新权重)

我们将 10 覆盖绿色框的 5 ,这不就更新权重了吗,更新权重之后,又将 红色框 2 输入,得出 1060, 哇。。。。。。,学习率太大了,可以变成0.00001试试。

在这里插入图片描述

在实际的场景中,计算公式种类铁定不会这么单一,会融合了超级多的复杂的数学公式,这就涉及到复合多元函数求导数了,我们要依据现行的导数公式进行拆分,拆分成n个小公式,分别对n个小公式求导,然后将所有的导数相乘,就可以得出任意一个权重和偏置对结果的影响程度,然后调整它。

小说一下
怎么求解其中一个变量对结果的影响程度?
假设对其中一个独立小公式变量求导,每一个公式都有其对应的导数公式,x输入到公式,输出y,那么x输入到其对应的导数公式,就得到了一个导数,也就是得到了当前公式对下一级的影响程度。一般一个公式会有很多的变量但是不需要拆分的情况,我们就直接把当前公式的上一级的输出当成是当前的公式的常量值即可。

        sum_h1 = self.w1 * x[0] + self.w2 * x[1] + self.b1h1 = sigmoid(sum_h1)sum_h2 = self.w3 * x[0] + self.w4 * x[1] + self.b2h2 = sigmoid(sum_h2)sum_o1 = self.w5 * h1 + self.w6 * h2 + self.b3o1 = sigmoid(sum_o1)y_pred = o1# --- Calculate partial derivatives.# --- Naming: d_L_d_w1 represents "partial L / partial w1"d_L_d_ypred = -2 * (y_true - y_pred)# Neuron o1d_ypred_d_w5 = h1 * deriv_sigmoid(sum_o1)d_ypred_d_w6 = h2 * deriv_sigmoid(sum_o1)d_ypred_d_b3 = deriv_sigmoid(sum_o1)d_ypred_d_h1 = self.w5 * deriv_sigmoid(sum_o1)d_ypred_d_h2 = self.w6 * deriv_sigmoid(sum_o1)# Neuron h1d_h1_d_w1 = x[0] * deriv_sigmoid(sum_h1)d_h1_d_w2 = x[1] * deriv_sigmoid(sum_h1)d_h1_d_b1 = deriv_sigmoid(sum_h1)
``# 画图不易,有用点赞

这篇关于AI学习记录 - 模型训练中怎么反向传播以及学习率的影响的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx