【端到端可微1】端到端的训练,使用反向传播,要求过程可微分

2023-11-30 10:52

本文主要是介绍【端到端可微1】端到端的训练,使用反向传播,要求过程可微分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 背景
  • 想法: Weighted least-squares fitting
  • 方法: Backpropagating through the fitting procedure.
  • 温习之前的基础
    • 前向传播
    • 反向传播
  • 总结

背景

想做一个端到端训练的模型,将最小二乘嵌入其中。因此有了这系列文章。

想法: Weighted least-squares fitting

我们想把“最小二乘模块”嵌入深度学习中,将其作为一份子参与端到端的训练

我们设计了加权最小二乘问题。设W∈Rm×m是包含每个观测的权值wi的对角矩阵。在我们的框架中,观测结果将对应于图像参考框架中的固定(x, y)坐标,权重将由基于图像的深度网络生成。加权最小二乘问题是

在这里插入图片描述

方法: Backpropagating through the fitting procedure.

我们深度学习最后的卷积输出特征图,我们定义这个特征图为“一个加权像素坐标列表(xi, yi, wi)”。其中坐标(xi, yi)是固定的,而加权wi是由一个基于输入图像的深层网络生成的。我们可以利用这些值构造矩阵X, Y和w,求解加权最小二乘问题,通过加权像素坐标得到最佳拟合曲线的参数β。

与其将拟合过程作为一个单独的后处理步骤,我们可以反向传播它,并在兴趣β参数上应用一个损失函数,而不是间接地在网络产生的权值映射上。通过这种方式,我们获得了一个强大的工具,可以在深度学习框架中以端到端方式解决最小二乘的问题。

注意,方程3只涉及可微矩阵运算。因此,可以计算β对W的导数,从而也可以计算深度网络的参数。通过矩阵变换反向传播的细节已经很好地理解了。我们使用Cholesky分解推导这个问题的梯度。

β对W的导数表示为dβ/dW。这里的β和W都是变量,dβ/dW表示β对W的变化率。在求解这个导数时,我们需要将β作为独立变量,W作为因变量,然后对W进行求导。

具体的求导方法取决于β和W的具体形式和关系。如果β和W都是标量变量,那么可以直接对W求导得到dβ/dW。如果β和W是向量或矩阵变量,那么我们需要对每个元素或矩阵元素分别求导,得到一个与W相同形状的导数矩阵

需要注意的是,在求解dβ/dW时,我们通常将其他变量视为常数,即假设它们不随W的变化而变化。这是因为我们只关注β对W的导数,而不考虑其他变量对此导数的影响。
总之,β对W的导数表示为dβ/dW,具体的求导方法取决于β和W的形式和关系。

温习之前的基础

1、2月10日 感知器+浅层神经网络+反向传播+tensorflow
2、链式法则,论文:Introduction to Gradient Descent and Backpropagation Algorithm

在这里插入图片描述
在这里插入图片描述

BP 算法是一种参数学习方法,一般分为两个过程:前向传播(求误差),反向传播(误差回传)。

那么什么是前向传播、反向传播呢?这里先说结论:前向传播是为反向传播准备好要用到的数值,反向传播本质上是一种求梯度的高效方法。

求梯度是为了什么呢?就是为了更新模型的参数(权重 W 和偏置 b)。

所有参数值随机初始化(论文乱写一通),前向传播(提交论文),误差函数(审稿),反向传播(审稿人:你这不行,改!),参数更新(修改论文),前向传播,…;反反复复,论文发表(模型训练完毕)。

前向传播

在正式介绍前向传播前,先简单介绍计算图(Computational Graph)的概念, f ( x , y , z ) = ( x + y ) ∗ z 的计算图
在这里插入图片描述

分别赋值 x = − 2 , y = 5 , z = − 4 ,从计算图的左边开始,数据开始流动,依次计算出 q 、 f 。

最终得到计算图中那 6 个绿色的数字,这就是前向传播的结果。

反向传播

我们说了,反向传播本质上是一种求梯度的高效方法。

总结

这系列文章将逐步完成一个端到端可微的模型,挖个坑。
项目开启时间:2023-07-04

但是一直拖到了11月30,最近同事讨论问题才想起来继续实施。

这篇关于【端到端可微1】端到端的训练,使用反向传播,要求过程可微分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学