矩阵求导中的分子布局和分母布局

news2024/11/17 3:51:30
1.求偏导的自变量的符号区别

使用标量、向量和矩阵总共有九种可能性。请注意,当我们考虑每个自变量和因变量中更多数量的分量时,我们可能会留下非常多的可能性。下表收集了最能以矩阵形式最整齐地组织的六种导数。

在这里,我们使用了最一般意义上的术语“矩阵”,认识到向量和标量只是分别具有一列和一行的矩阵。此外,我们使用粗体字母表示向量,使用粗体大写字母表示矩阵。此表示法自始至终使用。

请注意,我们还可以讨论向量相对于矩阵的导数,或者我们表中的任何其他未填充单元格。然而,这些导数最自然地组织在秩高于2的张量中,因此它们不能整齐地拟合到矩阵中。在以下三节中,我们将定义这些导数中的每一个,并将它们与数学的其他分支联系起来。有关更详细的表格,请参阅布局约定部分。(摘自维基百科)

所以说向量对矩阵,矩阵对向量,矩阵对矩阵的导数尚无统一的看法,不过我们可以根据我们的需要对他们进行定义;

 

2.分子布局与分母布局

维度为m的一个向量𝐲对一个标量𝑥的求导,那么结果也是一个m维的向量:∂𝐲/∂𝑥。这个m维的求导结果排列成的m维向量到底应该是列向量还是行向量?

这个问题的答案是:
行向量或者列向量皆可! 毕竟我们求导的本质只是把标量求导的结果排列起来,至于是按行排列还是按列排列都是可以的。但是这样也有问题,在我们机器学习算法法优化过程中,如果行向量或者列向量随便写,那么结果就不唯一,乱套了。

为了解决矩阵向量求导的结果不唯一,我们引入求导布局。最基本的求导布局有两个:分子布局(numerator layout)和分母布局(denominator layout )。对于分子布局来说,我们求导结果的维度以分子为主,比如对于我们上面对标量求导的例子,结果的维度和分子的维度是一致的。对于分母布局来说,我们求导结果的维度以分母为主。

但是在机器学习算法原理的资料推导里,我们并没有看到说正在使用什么布局,也就是说布局被隐含了,这就需要自己去推演,比较麻烦。但是一般来说我们会使用一种叫混合布局的思路,即如果是向量或者矩阵对标量求导,则使用分子布局为准,如果是标量对向量或者矩阵求导,则以分母布局为准。对于向量对对向量求导,有些分歧,按分子布局的向量对向量求导的结果矩阵,我们一般叫做雅克比 (Jacobian)矩阵。按分母布局的向量对向量求导的结果矩阵,我们一般叫做梯度矩阵。

3.分子布局与分母布局

引用蒲公英书背后的数学基础里矩阵微积分章节所说的一段话开始我们的话题:

矩阵微积分的表示通常有两种符号约定:分子布局( Numerator Layout )和分母布局( Denominator Layout ).两者的区别是一个标量关于一个向量的导数是写成列向量还是行向量。(除特别说明外,本书默认采用分母布局.)

按照笔者的理解时是这样的,一般情况下:

  • 分子布局:偏导后得出的矩阵是和分子的维度是一致的;
  • 分母布局:偏导后得出的矩阵是和分母的维度是一致的;

而我们很多资料好像都是默认利用分母布局来进行算的,因为这样更多的使我们的结果也会成为列向量的形式(我们的自变量往往定义成列向量的形式),同时这样也更有利于我们去理解实值函数相对于实向量的求偏导:逐次对实向量每个元素求偏导,这样得到的结果自然和实向量的维度是一致的;

但是我们仍需注意到两个问题(摘自维基)

  1. 尽管使用了术语“分子布局”和“分母布局”,但实际上涉及两个以上的可能的符号选择。原因是分子与分母(或在某些情况下,分子与混合)的选择可以独立地用于标量按向量,逐标量,向量逐向量和标量矩阵导数,并且许多作者以各种方式混合和匹配其布局选择。
  2. 在下面的介绍部分中选择分子布局并不意味着这是“正确”或“优越”的选择。各种布局类型有优点和缺点。严重错误可能是由于不小心组合在不同布局中编写的公式,并且从一个布局转换为另一个布局需要小心避免错误。因此,在使用现有公式时,最佳策略可能是确定所使用的布局并保持其一致性,而不是尝试在所有情况下都使用相同的布局。

就是指我们更应该注意作者的真实意图或者使“混合布局”,而我们使用时也非常建议保持一致性;

参考资料:矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇) - 知乎

https://www.cnblogs.com/Linkdom/p/16183282.html#tid-cX4btK

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

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

相关文章

AI配套的技术: 矢量数据库的概念

一、说明 随着人工智能的快速采用和围绕大型语言模型发生的创新,我们需要在所有这些的中心,能够获取大量数据,将其上下文化,处理它,并使其能够有意义地搜索。 为原生整合生成式 AI 功能而构建的生成式 AI 流程和应用程…

Java+Redis:布隆过滤器,打造高效数据过滤神器!

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是尘缘,一个在CSDN分享笔记的博主。📚📚 👉点击这里,就可以查看我的主页啦!👇&#x…

基于蝴蝶优化的BP神经网络(分类应用) - 附代码

基于蝴蝶优化的BP神经网络(分类应用) - 附代码 文章目录 基于蝴蝶优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蝴蝶优化BP神经网络3.1 BP神经网络参数设置3.2 蝴蝶算法应用 4.测试结果:5.M…

IIC学习笔记(参考小梅哥教程)

IIC: inter-integrated circuit bus ,即 集成电路总线,串行通信,多主从架构,半双工(对讲机),小数据量场合,短距离传输。 速率:100kb/s 、 400kb/s 、 3.4Mkb/s 传输单位&#xff1…

《C和指针》笔记31:多维数组的数组名、指向多维数组的指针、作为函数参数的多维数组

文章目录 1. 指向多维数组的数组名2. 指向多维数组的指针3. 作为函数参数的多维数组 1. 指向多维数组的数组名 我们知道一维数组名的值是一个指针常量,它的类型是“指向元素类型的指针”,它指向数组的第1个元素。那么多维数组的数组名代表什么呢&#x…

【C++】你看懂C++的类和对象了么

目录 类 默认成员函数 构造函数 析构函数 拷贝构造函数 赋值运算符重载 运算符重载 赋值运算符重载 前置和后置重载 const成员 取地址及const取地址操作符重载 再谈构造函数 构造函数体赋值 初始化列表 explicit关键字 static成员 友元 友元函数 友元类 内…

Springboot+vue的时间管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的时间管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的时间管理系统,采用M(model&#xff0…

计算机毕设 大数据工作岗位数据分析与可视化 - python flask

文章目录 0 前言1 课题背景2 实现效果3 项目实现3.1 概括 3.2 Flask实现3.3 HTML页面交互及Jinja2 4 **完整代码**5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要…

使用VSCode插件开发Hyperledger Fabric智能合约(链码)

背景 开发Fabric链码对于开发者而言步骤繁琐:需要部署节点、安装链码、重启网络等操作。当前VSCode中的插件“Hyperledger Fabric Debugger”可以帮助我们迅速开发智能合约。 使用步骤 安装插件 在VSCode中安装Hyperledger Fabric Debugger插件 打开要开发链码的…

【LeetCode热题100】--35.搜索插入位置

35.搜索插入位置 使用二分查找&#xff1a; class Solution {public int searchInsert(int[] nums, int target) {int low 0,high nums.length -1;while(low < high){//注意每次循环完都要计算midint mid (low high)/2;if(nums[mid] target){return mid;}if(nums[mid]…

SE、CBAM、ECA 、CA注意力机制

文章目录 1. SE (Squeeze-and-Excitation)2. CBAM (Convolutional Block Attention Module)3. ECA (Efficient Channel Attention)4. CA (Coordinate Attention) 1. SE (Squeeze-and-Excitation) SENet是通道注意力机制的典型实现 对于SENet而言&#xff0c;其重点是获得输入进…

螺杆支撑座有哪些品牌?

螺杆支撑座是机械设备中重要的支撑部件&#xff0c;用于固定和支撑螺杆&#xff0c;以确保机械设备的稳定性和精度。以下是一些生产螺杆支撑座的品牌以及它们的特点&#xff1a; 1、NSK&#xff1a;提供各种高质量的轴承和机械部件&#xff0c;他们的螺杆支撑座采用先进的制造技…

2023.9.26 IO 文件操作详解

目录 文件 文件路径 文件类型 Java 文件操作 文件系统操作 文件内容操作 字节流 InputStream OutputStream 字符流 Reader Writer 补充 close 的必要性 Scanner 的基本了解 文件 当前指硬盘上的文件和文件夹相对于 变量 在内存中&#xff0c;文件 则是在硬盘上 …

竞赛选题 机器视觉目标检测 - opencv 深度学习

文章目录 0 前言2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 0 前言 &#x1f5…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 2 - 改善深层神经网络 - 第二周测验

课程2_第2周_测验题 目录&#xff1a;目录 第一题 1.当输入从第8个mini-batch的第7个的例子的时候&#xff0c;你会用哪种符号表示第3层的激活&#xff1f; A. 【  】 a [ 3 ] { 8 } ( 7 ) a^{[3]\{8\}(7)} a[3]{8}(7) B. 【  】 a [ 8 ] { 7 } ( 3 ) a^{[8]\{7\}(3)} a…

【iptables 实战】9 docker网络原理分析

在开始本章阅读之前&#xff0c;需要提前了解以下的知识 阅读本节需要一些docker的基础知识&#xff0c;最好是在linux上安装好docker环境。提前掌握iptables的基础知识&#xff0c;前文参考【iptables 实战】 一、docker网络模型 docker网络模型如下图所示 说明&#xff1…

23.2 Bootstrap框架3

1.卡片 1.1卡片样式 在Bootstrap 5中, .card, card-header, .card-body, .card-footer类是用于创建卡片样式.下面是这些类的简单介绍: * 1. .card: 用于创建一个基本的卡片容器它作为一个包裹元素,通常与其他卡片类一起使用.* 2. .card-header: 用于创建卡片的头部部分.通常在…

双重差分模型(DID)论文写作指南与操作手册

手册链接&#xff1a;双重差分模型&#xff08;DID&#xff09;论文写作指南与操作手册https://www.cctalk.com/m/group/90983583?xh_fshareuid60953990 简介&#xff1a; 当前&#xff0c;对于准应届生们来说&#xff0c;毕设季叠加就业季&#xff0c;写作时间显得十分宝贵…

Sentinel安装

Sentinel 微服务保护的技术有很多&#xff0c;但在目前国内使用较多的还是Sentinel&#xff0c;所以接下来我们学习Sentinel的使用。 1.介绍和安装 Sentinel是阿里巴巴开源的一款服务保护框架&#xff0c;目前已经加入SpringCloudAlibaba中。官方网站&#xff1a; 首页 | Se…

Sublime Text 4 for Mac激活下载

Sublime Text for Mac是一款适用于Mac平台的文本编辑器。它具有快速的性能和丰富的功能&#xff0c;可以帮助用户快速进行代码编写和文本编辑。 软件下载&#xff1a;Sublime Text 4 for Mac激活下载 该软件具有直观的界面和强大的功能&#xff0c;包括多行选择、代码折叠、自动…