动手学深度学习笔记--矩阵运算
分子布局矩阵求导总结
一、核心定义与布局准则
分子布局又称雅可比布局,是矩阵求导领域的主流约定之一,广泛用于控制理论、经典机器学习公式推导中。
核心口诀
导数形状 = 分子形状 × 分母转置形状 即求导结果的行数完全匹配分子 y 的行数,列数完全匹配分母 x 转置后的列数(等价于 x 的行数)。
若 y 是 m 行结构(标量 1 行、列向量 m 行、矩阵 m 行),导数就有 m 行;
若 x 是 n 行结构(标量 1 行、列向量 n 行、矩阵 p 行),导数就有 n 列;
下文默认向量均指列向量
二、分场景详细规则与导数含义
按分子 y、分母 x 分别为标量、列向量、矩阵三种组合,逐一展开规则说明。
1. 分子为标量 y
(1)对标量 x 求导
导数形状:标量(1×1)
形式:dy/dx
含义:普通一元函数导数,无布局差异。
(2)对列向量 x∈Rn(n×1 列向量)求导
导数形状:1×n 行向量(与 x 的转置同形,而非与 x 本身同形)
展开形式:

导数含义:函数的梯度(行向量形式)
几何意义:梯度指向函数值增长最快的方向,其模长等于该方向上的方向导数;
等高线性质:在函数的等高线图上,梯度方向始终与等高线的切线垂直,且指向函数值更高的一侧。
示例验证:

常见示例

(3)对矩阵 X∈Rp×q 求导
导数形状:q×p 矩阵(与 X 的转置同形)
元素对应:结果矩阵第 j 行第 i 列的元素 = 原矩阵第 i 行第 j 列元素的导数,即

导数含义:矩阵变量的梯度,广泛用于矩阵优化、低秩分解等问题。
补充说明:部分工程资料中会约定 “标量对矩阵求导结果与原矩阵同形”,该约定属于分母布局,与严格分子布局的结果恰好互为转置,使用时需注意上下文的约定。
2. 分子为列向量 y∈Rm(m×1 列向量)
(1)对标量 x 求导
导数形状:m×1 列向量(与 y 同形)
展开形式:

含义:向量值函数对标量的瞬时变化率,每个元素独立求导后保持原向量结构。
(2)对列向量 x∈Rn(n×1 列向量)求导
导数形状:m×n 矩阵(雅可比矩阵)
展开形式:

每一列自上往下分子对应y1,y2...,ym,每一行分母自左往右对应x1,x2..,xn
规则对应:矩阵的第 i 行 = 标量 yi 对向量 x 的梯度行向量,完全契合 “标量对向量求导为行向量” 的基础规则。
常见示例:

含义:描述向量值函数的局部线性映射关系,是多元微积分、反向传播推导的核心工具。
(3)对矩阵 X∈Rp×q 求导
张量形式表述:若保留矩阵维度结构,可表示为 m×q×p 的三阶张量,对应 “y 维度 × X 列维度 × X 行维度”,与维度口诀一致。
3. 分子为矩阵 Y∈Rm×n
(1)对标量 x 求导
导数形状:m×n 矩阵(与 Y 同形)
元素对应:结果矩阵每个位置的元素 = 原矩阵对应位置元素对 x 的导数,即

含义:矩阵值函数对标量的变化率,逐元素求导后保持原矩阵结构。
(2)对列向量 x∈Rp(p×1 列向量)求导
张量形式表述:保留矩阵结构时可表示为 m×n×p 三阶张量。
(3)对矩阵 X∈Rp×q 求导
导数形状:mn × pq 矩阵
维度对应:分子总元素数(m×n)为行数,分母总元素数(p×q)为列数。
张量形式表述:保留矩阵结构时可表示为 m×n×q×p四阶张量。
三、形状汇总总表
下表横轴为分母 x 的类型(标量 / 列向量 / 矩阵),纵轴为分子 y 的类型(标量 / 列向量 / 矩阵)。单元格内包含导数形状维度和形状示意图描述:列向量竖向绘制,行向量横向绘制,矩阵用矩形表示。
表格
|
|---|
自动求导
根据链式法则的自动求导有两种形式:正向模式和反向模式

下面以一个简单的函数f(x,y)=x⋅y+sin(x)作为例子讲解。
1、正向模式
从输入开始,沿计算图正向推进,同步计算函数值和选定方向的导数。一次正向传播只能得到一个输入变量对所有中间变量及输出的导数。

对x求解,将 x 视为变量,y 视为常量
假设x=1, y=1

用到的信息:当前输入 x,y 的数值
存储状态:计算完成后,仅需保留 u=1 和 du/dx=1 传给下一级;x,y 的数值可以直接丢弃,后续节点不再直接用到。

用到的信息:当前输入 x 的数值
存储状态:计算完成后,仅需保留 v≈0.8415 和 dv/dx≈0.5403 传给下一级;x 的数值可以直接丢弃。

用到的信息:上游传来的 u,v 的数值和导数值
存储状态:得到最终结果后,所有中间值均可全部释放。
对y求解是需要重新进行一次正向传播,可见输入元素的数量越多,传播的次数就越多
复杂度:
时间:一次正向传播的计算量是原函数的常数倍(≈2~3倍)。若输入有 nn 维,要获得全部梯度需运行 n 次,总时间为 O(n⋅ops)。
空间:只需保存当前变量的值和导数,无需存储整个计算图,额外空间 O(1)(忽略输入输出)。
2、反向模式
先正向计算函数值并存储所有中间变量,再从输出反向传播。一次反向传播即可得到输出对所有输入的梯度。

依旧假设x=1,y=1
前向传播计算 v = sin(1), u = 1, f = sin(1) + 1

用到的信息:加法算子的结构规则、上游传来的梯度

用到的信息:须依赖 x,y 的具体数值;如果前向不缓存,反向走到这里时已经不知道输入值,无法计算偏导

用到的信息:须依赖 x 的具体数值才能算出余弦值,无缓存则无法计算

用到的信息:需依赖计算图的结构以及缓存的df/du,df/dv等数据
复杂度
时间:一次反向的计算量也是原函数的常数倍,与输入维度 n 无关。对于标量输出,全梯度只需 O(ops) 时间。
空间:必须存储前向所有中间变量,空间 O(ops)(正比于计算图节点数)。这是深度学习中“显存瓶颈”的根源。
更多推荐




所有评论(0)