矩阵求导常用公式解析:标量、向量与矩阵的导数计算

矩阵求导常用公式解析:标量、向量与矩阵的导数计算

  • 矩阵求导常用公式解析:标量、向量与矩阵的导数计算
    • 矩阵求导的布局问题
      • [1. 分子布局 vs 分母布局对比表](#1. 分子布局 vs 分母布局对比表)
      • [2. 布局冲突的典型场景分析](#2. 布局冲突的典型场景分析)
      • [3. 混合布局的兼容性处理](#3. 混合布局的兼容性处理)
    • 一、标量对向量求导
      • [1. 线性函数求导](#1. 线性函数求导)
      • [2. 二次型函数(对称矩阵)](#2. 二次型函数(对称矩阵))
      • [3. 二次型函数(非对称矩阵)](#3. 二次型函数(非对称矩阵))
    • 二、向量对向量求导(分子布局)
      • [1. 线性变换的雅可比矩阵(详细推导)](#1. 线性变换的雅可比矩阵(详细推导))
      • [2. 一般向量函数的雅可比矩阵(补充关键说明)](#2. 一般向量函数的雅可比矩阵(补充关键说明))
      • [3. 链式法则的矩阵形式](#3. 链式法则的矩阵形式)
    • 三、标量对矩阵求导
      • [1. 标量函数 y = tr ( A ) y = \text{tr}(\mathbf{A}) y=tr(A) 对矩阵 A \mathbf{A} A 求导](#1. 标量函数 y = tr ( A ) y = \text{tr}(\mathbf{A}) y=tr(A) 对矩阵 A \mathbf{A} A 求导)
      • [2. 标量函数 y = tr ( A B ) y = \text{tr}(\mathbf{A} \mathbf{B}) y=tr(AB) 对矩阵 A \mathbf{A} A 求导(假设 A \mathbf{A} A 和 B \mathbf{B} B 可相乘)](#2. 标量函数 y = tr ( A B ) y = \text{tr}(\mathbf{A} \mathbf{B}) y=tr(AB) 对矩阵 A \mathbf{A} A 求导(假设 A \mathbf{A} A 和 B \mathbf{B} B 可相乘))
      • [3. 标量函数 y = x T A x y = \mathbf{x}^T \mathbf{A} \mathbf{x} y=xTAx 对矩阵 A \mathbf{A} A 求导( x \mathbf{x} x 为向量)](#3. 标量函数 y = x T A x y = \mathbf{x}^T \mathbf{A} \mathbf{x} y=xTAx 对矩阵 A \mathbf{A} A 求导( x \mathbf{x} x 为向量))

矩阵求导常用公式解析:标量、向量与矩阵的导数计算

矩阵求导是机器学习、优化理论中的重要数学工具。本文将系统推导标量对向量、向量对向量、标量对矩阵的求导公式,并解析分子布局与分母布局的核心差异。

矩阵求导的布局问题

1. 分子布局 vs 分母布局对比表

特性 分子布局 (Numerator Layout) 分母布局 (Denominator Layout)
导数维度 m × n m \times n m×n n × m n \times m n×m
元素排列规则 ∂ y i ∂ x j \frac{\partial y_i}{\partial x_j} ∂xj∂yi ∂ y j ∂ x i \frac{\partial y_j}{\partial x_i} ∂xi∂yj
线性变换示例 ∂ A x ∂ x = A \frac{\partial \mathbf{Ax}}{\partial \mathbf{x}} = \mathbf{A} ∂x∂Ax=A ∂ A x ∂ x = A T \frac{\partial \mathbf{Ax}}{\partial \mathbf{x}} = \mathbf{A}^T ∂x∂Ax=AT
链式法则顺序 从左到右自然顺序 需要转置调整顺序

2. 布局冲突的典型场景分析

场景 :计算 ∂ z ∂ x \frac{\partial \mathbf{z}}{\partial \mathbf{x}} ∂x∂z,其中 z = W x + b \mathbf{z} = \mathbf{W}\mathbf{x} + \mathbf{b} z=Wx+b

  • 分子布局
    ∂ z ∂ x = W ( 维度 m × n ) \frac{\partial \mathbf{z}}{\partial \mathbf{x}} = \mathbf{W} \quad (\text{维度 } m \times n) ∂x∂z=W(维度 m×n)

  • 分母布局
    ∂ z ∂ x = W T ( 维度 n × m ) \frac{\partial \mathbf{z}}{\partial \mathbf{x}} = \mathbf{W}^T \quad (\text{维度 } n \times m) ∂x∂z=WT(维度 n×m)

应用建议

  • 在反向传播算法中,分母布局更自然(梯度维度与参数维度一致)
  • 在理论推导中,分子布局更便于公式链式展开

3. 混合布局的兼容性处理

当不同文献使用不同布局时,可通过以下规则转换:
( ∂ y ∂ x ) Denominator = ( ∂ y ∂ x ) Numerator T \left( \frac{\partial \mathbf{y}}{\partial \mathbf{x}} \right){\text{Denominator}} = \left( \frac{\partial \mathbf{y}}{\partial \mathbf{x}} \right){\text{Numerator}}^T (∂x∂y)Denominator=(∂x∂y)NumeratorT


一、标量对向量求导

1. 线性函数求导

设向量 a = [ a 1 , a 2 , ... , a n ] T \mathbf{a} = [a_1, a_2, \dots, a_n]^T a=[a1,a2,...,an]T, x = [ x 1 , x 2 , ... , x n ] T \mathbf{x} = [x_1, x_2, \dots, x_n]^T x=[x1,x2,...,xn]T,标量函数为:

y = a T x = ∑ i = 1 n a i x i y = \mathbf{a}^T \mathbf{x} = \sum_{i=1}^n a_i x_i y=aTx=i=1∑naixi

求导结果

梯度向量为系数向量本身:

∂ y ∂ x = [ a 1 a 2 ⋮ a n ] = a \frac{\partial y}{\partial \mathbf{x}} = \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix} = \mathbf{a} ∂x∂y= a1a2⋮an =a


2. 二次型函数(对称矩阵)

设对称矩阵 A ∈ R n × n \mathbf{A} \in \mathbb{R}^{n \times n} A∈Rn×n,标量函数:

y = x T A x = ∑ i = 1 n ∑ j = 1 n a i j x i x j y = \mathbf{x}^T \mathbf{A} \mathbf{x} = \sum_{i=1}^n \sum_{j=1}^n a_{ij} x_i x_j y=xTAx=i=1∑nj=1∑naijxixj

求导过程

对分量 x k x_k xk 求偏导:

∂ y ∂ x k = 2 ∑ i = 1 n a i k x i \frac{\partial y}{\partial x_k} = 2 \sum_{i=1}^n a_{ik} x_i ∂xk∂y=2i=1∑naikxi

梯度向量
∂ y ∂ x = 2 A x \frac{\partial y}{\partial \mathbf{x}} = 2 \mathbf{A} \mathbf{x} ∂x∂y=2Ax


3. 二次型函数(非对称矩阵)

当 A \mathbf{A} A 非对称时,标量函数展开同上。对 x k x_k xk 求偏导:

∂ y ∂ x k = ( A x ) k + ( A T x ) k \frac{\partial y}{\partial x_k} = (\mathbf{A}\mathbf{x})_k + (\mathbf{A}^T \mathbf{x})_k ∂xk∂y=(Ax)k+(ATx)k

梯度向量
∂ y ∂ x = ( A + A T ) x \frac{\partial y}{\partial \mathbf{x}} = (\mathbf{A} + \mathbf{A}^T) \mathbf{x} ∂x∂y=(A+AT)x


二、向量对向量求导(分子布局)

1. 线性变换的雅可比矩阵(详细推导)

设 y = A x + b \mathbf{y} = \mathbf{A}\mathbf{x} + \mathbf{b} y=Ax+b,其中:

  • A ∈ R m × n \mathbf{A} \in \mathbb{R}^{m \times n} A∈Rm×n 为系数矩阵
  • x ∈ R n \mathbf{x} \in \mathbb{R}^n x∈Rn 为输入向量
  • b ∈ R m \mathbf{b} \in \mathbb{R}^m b∈Rm 为偏置向量

分量化表示
y i = ∑ j = 1 n a i j x j + b i ( i = 1 , 2 , ... , m ) y_i = \sum_{j=1}^n a_{ij} x_j + b_i \quad (i=1,2,\dots,m) yi=j=1∑naijxj+bi(i=1,2,...,m)

对分量求偏导

对每个 y i y_i yi 关于 x j x_j xj 求偏导:
∂ y i ∂ x j = a i j \frac{\partial y_i}{\partial x_j} = a_{ij} ∂xj∂yi=aij

雅可比矩阵构造

将所有偏导数按如下规则排列:

  • 行索引 对应输出分量 y i y_i yi
  • 列索引 对应输入分量 x j x_j xj

∂ y ∂ x = [ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ⋯ ∂ y 1 ∂ x n ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ⋯ ∂ y 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ y m ∂ x 1 ∂ y m ∂ x 2 ⋯ ∂ y m ∂ x n ] = A \frac{\partial \mathbf{y}}{\partial \mathbf{x}} = \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} & \cdots & \frac{\partial y_1}{\partial x_n} \\ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} & \cdots & \frac{\partial y_2}{\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial y_m}{\partial x_1} & \frac{\partial y_m}{\partial x_2} & \cdots & \frac{\partial y_m}{\partial x_n} \end{bmatrix} = \mathbf{A} ∂x∂y= ∂x1∂y1∂x1∂y2⋮∂x1∂ym∂x2∂y1∂x2∂y2⋮∂x2∂ym⋯⋯⋱⋯∂xn∂y1∂xn∂y2⋮∂xn∂ym =A


2. 一般向量函数的雅可比矩阵(补充关键说明)

对向量函数 y = f ( x ) = [ f 1 ( x ) , f 2 ( x ) , ... , f m ( x ) ] T \mathbf{y} = \mathbf{f}(\mathbf{x}) = [f_1(\mathbf{x}), f_2(\mathbf{x}), \dots, f_m(\mathbf{x})]^T y=f(x)=[f1(x),f2(x),...,fm(x)]T,其雅可比矩阵的构造规则为:

  • 每个元素 ∂ f i ∂ x j \frac{\partial f_i}{\partial x_j} ∂xj∂fi 表示第 i i i 个输出对第 j j j 个输入的偏导
  • 行维度 m m m 由输出向量维度决定
  • 列维度 n n n 由输入向量维度决定

关键特性

  • 若 f ( x ) \mathbf{f}(\mathbf{x}) f(x) 为线性函数(即 f ( x ) = A x \mathbf{f}(\mathbf{x}) = \mathbf{A}\mathbf{x} f(x)=Ax),雅可比矩阵退化为系数矩阵 A \mathbf{A} A
  • 若 f ( x ) \mathbf{f}(\mathbf{x}) f(x) 为非线性函数(如神经网络激活函数),需逐元素计算偏导数

3. 链式法则的矩阵形式

设复合函数 z = g ( y ) = g ( f ( x ) ) \mathbf{z} = \mathbf{g}(\mathbf{y}) = \mathbf{g}(\mathbf{f}(\mathbf{x})) z=g(y)=g(f(x)),则链式法则的矩阵形式为:
∂ z ∂ x = ∂ z ∂ y ⋅ ∂ y ∂ x \frac{\partial \mathbf{z}}{\partial \mathbf{x}} = \frac{\partial \mathbf{z}}{\partial \mathbf{y}} \cdot \frac{\partial \mathbf{y}}{\partial \mathbf{x}} ∂x∂z=∂y∂z⋅∂x∂y

其中:

  • ∂ z ∂ y ∈ R p × m \frac{\partial \mathbf{z}}{\partial \mathbf{y}} \in \mathbb{R}^{p \times m} ∂y∂z∈Rp×m
  • ∂ y ∂ x ∈ R m × n \frac{\partial \mathbf{y}}{\partial \mathbf{x}} \in \mathbb{R}^{m \times n} ∂x∂y∈Rm×n
  • 最终结果维度为 p × n p \times n p×n


三、标量对矩阵求导

1. 标量函数 y = tr ( A ) y = \text{tr}(\mathbf{A}) y=tr(A) 对矩阵 A \mathbf{A} A 求导

  • 矩阵的迹
    tr ( A ) = ∑ i = 1 n a i i \text{tr}(\mathbf{A}) = \sum_{i=1}^n a_{ii} tr(A)=i=1∑naii

  • 对矩阵元素 a i j a_{ij} aij 求偏导

    • 当 i ≠ j i \neq j i=j 时,
      ∂ y ∂ a i j = 0 \frac{\partial y}{\partial a_{ij}} = 0 ∂aij∂y=0
    • 当 i = j i = j i=j 时,
      ∂ y ∂ a i i = 1 \frac{\partial y}{\partial a_{ii}} = 1 ∂aii∂y=1
  • 梯度矩阵
    ∂ y ∂ A = I \frac{\partial y}{\partial \mathbf{A}} = \mathbf{I} ∂A∂y=I

    (其中 I \mathbf{I} I 是与 A \mathbf{A} A 同维度的单位矩阵)


2. 标量函数 y = tr ( A B ) y = \text{tr}(\mathbf{A} \mathbf{B}) y=tr(AB) 对矩阵 A \mathbf{A} A 求导(假设 A \mathbf{A} A 和 B \mathbf{B} B 可相乘)

  • 迹的性质
    tr ( A B ) = tr ( B A ) ( 若维度合适 ) \text{tr}(\mathbf{A} \mathbf{B}) = \text{tr}(\mathbf{B} \mathbf{A}) \quad (\text{若维度合适}) tr(AB)=tr(BA)(若维度合适)

  • 展开形式

    设 A \mathbf{A} A 为 m × n m \times n m×n 矩阵, B \mathbf{B} B 为 n × m n \times m n×m 矩阵,则
    y = ∑ i = 1 m ∑ j = 1 n a i j b j i y = \sum_{i=1}^m \sum_{j=1}^n a_{ij} b_{ji} y=i=1∑mj=1∑naijbji

  • 对 a k l a_{kl} akl 求偏导
    ∂ y ∂ a k l = b l k \frac{\partial y}{\partial a_{kl}} = b_{lk} ∂akl∂y=blk

  • 梯度矩阵
    ∂ y ∂ A = B T \frac{\partial y}{\partial \mathbf{A}} = \mathbf{B}^T ∂A∂y=BT


3. 标量函数 y = x T A x y = \mathbf{x}^T \mathbf{A} \mathbf{x} y=xTAx 对矩阵 A \mathbf{A} A 求导( x \mathbf{x} x 为向量)

  • 展开形式
    y = ∑ i = 1 n ∑ j = 1 n a i j x i x j y = \sum_{i=1}^n \sum_{j=1}^n a_{ij} x_i x_j y=i=1∑nj=1∑naijxixj

  • 对 a k l a_{kl} akl 求偏导
    ∂ y ∂ a k l = x k x l \frac{\partial y}{\partial a_{kl}} = x_k x_l ∂akl∂y=xkxl

  • 梯度矩阵
    ∂ y ∂ A = x x T \frac{\partial y}{\partial \mathbf{A}} = \mathbf{x} \mathbf{x}^T ∂A∂y=xxT


相关推荐
大模型铲屎官7 小时前
【深度学习-Day 2】图解线性代数:从标量到张量,理解深度学习的数据表示与运算
人工智能·pytorch·python·深度学习·线性代数·机器学习·llm
0509159 小时前
计算方法实验四 解线性方程组的间接方法
线性代数·算法·数学建模·矩阵·动态规划
豆沙沙包?1 天前
2025年- H20-Lc128-240. 搜索二维矩阵 II(矩阵)---java版
java·线性代数·矩阵
灏瀚星空1 天前
随机微分方程(SDE):股票价格模型、利率模型的构建
笔记·python·学习·数学建模·矩阵·开源·量子计算
豆沙沙包?1 天前
2025年- H18-Lc126-54.螺旋矩阵(矩阵)---java版
java·线性代数·矩阵
zd8451015001 天前
51单片机驱动 矩阵键盘
矩阵·计算机外设·51单片机
18538162800余--2 天前
短视频矩阵系统:源码搭建与定制化开发的深度剖析
线性代数·矩阵
wuhen_n2 天前
Canvas特效实例:黑客帝国-字母矩阵(字母雨)
前端·javascript·矩阵·html5·canvas·canva可画
意.远2 天前
PyTorch线性代数操作详解:点积、矩阵乘法、范数与轴求和
人工智能·pytorch·python·深度学习·线性代数·矩阵