【深度学习数学基础:线性代数】7. 矩阵求导

7. 矩阵求导

矩阵求导基础:布局与分类

矩阵求导的核心是 分子布局(也称 Jacobian 布局)和 分母布局(也称 Hessian 布局),两种写法仅相差转置,本质等价。根据分子(被导对象)分母(求导变量)的类型(标量、向量、矩阵),可分类简化如下(复杂场景需查表,新手先掌握基础):

求导形式 \(\dfrac{\partial \text{分子}}{\partial \text{分母}}\) 标量(分母) 向量(分母) 矩阵(分母)
标量(分子) 标量结果 行/列向量(依布局) 矩阵(依布局)
向量(分子) 列/行向量(依布局) 矩阵(依布局) 复杂场景需查表
矩阵(分子) 同分子形状的矩阵 复杂场景需查表 复杂场景需查表

1. 向量对标量的求导(两种布局)

假设 \(\boldsymbol{y}\)列向量(如 \(\boldsymbol{y} = (y_1, y_2, \dots, y_m)^\top\) ,可理解为“一列数据”),\(x\)标量(单个数值),则 \(\boldsymbol{y}\)\(x\) 的导数有两种写法:

  • 分子布局(Jacobian 布局):结果形状和分子(\(\boldsymbol{y}\) 是列向量)一致,也是列向量:

    \[\frac{\partial \boldsymbol{y}}{\partial x} = \begin{pmatrix} \dfrac{\partial y_1}{\partial x} \\ \vdots \\ \dfrac{\partial y_m}{\partial x} \end{pmatrix} \]

  • 分母布局(Hessian 布局):结果是分子布局的转置(变成行向量):

    \[\frac{\partial \boldsymbol{y}}{\partial x} = \begin{pmatrix} \dfrac{\partial y_1}{\partial x} & \cdots & \dfrac{\partial y_m}{\partial x} \end{pmatrix} = \frac{\partial \boldsymbol{y}^\top}{\partial x} \]

💡 通俗理解:分子布局“学分子的形状”,分母布局“转个身”,本质是同一导数的两种表示。

2. 标量对向量的求导(两种布局)

\(y\)标量(单个数值,比如损失函数值),\(\boldsymbol{x}\)向量(如 \(\boldsymbol{x} = (x_1, x_2, \dots, x_n)^\top\) ,可理解为“一组变量”),则 \(y\)\(\boldsymbol{x}\) 的导数:

  • 分子布局:结果是行向量(形状和分母 \(\boldsymbol{x}\) 的转置一致):

    \[\frac{\partial y}{\partial \boldsymbol{x}} = \begin{pmatrix} \dfrac{\partial y}{\partial x_1} & \cdots & \dfrac{\partial y}{\partial x_n} \end{pmatrix} \]

  • 分母布局:结果是列向量(形状和分母 \(\boldsymbol{x}\) 一致):

    \[\frac{\partial y}{\partial \boldsymbol{x}} = \begin{pmatrix} \dfrac{\partial y}{\partial x_1} \\ \vdots \\ \dfrac{\partial y}{\partial x_n} \end{pmatrix} \]

3. 向量对向量的求导(两种布局)

\(\boldsymbol{y}\)\(m\) 维列向量,比如模型输出)和 \(\boldsymbol{x}\)\(n\) 维列向量,比如模型输入)都是 向量,则 \(\boldsymbol{y}\)\(\boldsymbol{x}\) 的导数是 \(m \times n\) 矩阵(称为 Jacobian 矩阵,描述输入输出的变化关系):

  • 分子布局:结果形状是「分子行数 × 分母列数」(即 \(m \times n\) ):

    \[\frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}} = \begin{pmatrix} \dfrac{\partial y_1}{\partial x_1} & \cdots & \dfrac{\partial y_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial y_m}{\partial x_1} & \cdots & \dfrac{\partial y_m}{\partial x_n} \end{pmatrix} = \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}^\top} \]

  • 分母布局:结果是分子布局的转置(形状变为 \(n \times m\) ):

    \[\frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}} = \left( \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}} \right)^\top_{\text{分子布局}} = \frac{\partial \boldsymbol{y}^\top}{\partial \boldsymbol{x}} \]

4. 标量对矩阵的求导(两种布局)

\(y\)标量(比如损失函数值),\(\boldsymbol{X}\)\(m \times n\) 矩阵(如 \(\boldsymbol{X} = \begin{pmatrix} x_{11} & \cdots & x_{1n} \\ \vdots & \ddots & \vdots \\ x_{m1} & \cdots & x_{mn} \end{pmatrix}\) ,可理解为“表格数据”),则 \(y\)\(\boldsymbol{X}\) 的导数是与 \(\boldsymbol{X}\) 同形状的矩阵:

  • 分子布局:结果形状和 \(\boldsymbol{X}\) 一致(\(m \times n\) ):

    \[\frac{\partial y}{\partial \boldsymbol{X}} = \begin{pmatrix} \dfrac{\partial y}{\partial x_{11}} & \cdots & \dfrac{\partial y}{\partial x_{1n}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial y}{\partial x_{m1}} & \cdots & \dfrac{\partial y}{\partial x_{mn}} \end{pmatrix} = \frac{\partial y}{\partial \boldsymbol{X}^\top} \]

  • 分母布局:结果是分子布局的转置(形状变为 \(n \times m\) ):

    \[\frac{\partial y}{\partial \boldsymbol{X}} = \left( \frac{\partial y}{\partial \boldsymbol{X}} \right)^\top_{\text{分子布局}} = \frac{\partial y}{\partial \boldsymbol{X}^\top} \]

基础求导公式(分母布局为例,新手必记)

以下是最简单的求导结果(理解“常数对变量求导为0,变量对自身求导为单位矩阵”):

  • 标量 \(a\)标量 \(x\) 求导:\(\dfrac{\partial a}{\partial x} = 0\)(标量,常数变化率为0)
  • 标量 \(a\)向量 \(\boldsymbol{x}\) 求导:\(\dfrac{\partial a}{\partial \boldsymbol{x}} = \boldsymbol{0}^\top\)(行向量,所有元素都是0,因为常数对变量无影响)
  • 标量 \(a\)矩阵 \(\boldsymbol{X}\) 求导:\(\dfrac{\partial a}{\partial \boldsymbol{X}} = \boldsymbol{0}\)(矩阵,所有元素都是0,同理)
  • 向量 \(\boldsymbol{x}\) 对自身求导:\(\dfrac{\partial \boldsymbol{x}}{\partial \boldsymbol{x}} = \boldsymbol{I}\)(单位矩阵,对角线为1表示“自己对自己的变化率是1”,其余为0)

总结

矩阵求导的难点是“布局”(结果的形状约定),记住两点:

  1. 分子布局:结果形状尽量和分子一致;分母布局:结果是分子布局的转置。
  2. 基础场景(标量、向量互导)要熟练,复杂场景可查表。

下边的内容我没怎么太看懂,有点难度过大了,用AI解释一下看看

12. 矩阵求导进阶:Jacobian与Hessian矩阵(前置知识:函数映射、导数意义)

12.1 基础概念:“函数映射”是什么?

  • 简单说:标量函数是“一个输入 → 一个输出”(如 \(f(x)=x^2\) ,输入 \(x\) 是标量,输出 \(f(x)\) 是标量)。
  • 向量函数是“一组输入 → 一组输出”(如 \(\boldsymbol{f}(\boldsymbol{x}) = \begin{pmatrix} x_1^2 \\ x_1+x_2 \end{pmatrix}\) ,输入 \(\boldsymbol{x}=(x_1,x_2)\) 是向量,输出 \(\boldsymbol{f}(\boldsymbol{x})\) 是向量)。

12.2 Jacobian矩阵(向量函数的“导数矩阵”)

若函数 \(\boldsymbol{f}: \mathbb{R}^n \to \mathbb{R}^m\)\(n\) 维输入 → \(m\) 维输出,比如 \(\boldsymbol{x} \in \mathbb{R}^n\) 是输入向量,\(\boldsymbol{f}(\boldsymbol{x}) \in \mathbb{R}^m\) 是输出向量),则它的 分子布局导数矩阵 称为 Jacobian矩阵 \(\boldsymbol{J}\),定义为:

\[\boldsymbol{J} = \frac{\partial \boldsymbol{f}}{\partial \boldsymbol{x}} = \begin{pmatrix} \nabla^\top f_1 \\ \vdots \\ \nabla^\top f_m \end{pmatrix} = \begin{pmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n} \end{pmatrix} \]

  • 通俗理解:Jacobian矩阵的每个元素 \(\boldsymbol{J}_{i,j} = \frac{\partial f_i}{\partial x_j}\),描述\(i\) 个输出对第 \(j\) 个输入的变化率

12.3 Hessian矩阵(标量函数的“二阶导数矩阵”)

若函数 \(f: \mathbb{R}^m \to \mathbb{R}\)\(m\) 维输入 → 1 维输出,比如损失函数 \(E(\boldsymbol{w})\) ,输入 \(\boldsymbol{w}\) 是向量,输出 \(E\) 是标量),则它对 \(\boldsymbol{x}\)二阶导数矩阵 称为 Hessian矩阵 \(\boldsymbol{H}\),定义为:

\[\boldsymbol{H} = \frac{\partial^2 f}{\partial \boldsymbol{x}^2} = \begin{pmatrix} \frac{\partial^2 f}{\partial x_1^2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{pmatrix} \]

  • 通俗理解:Hessian矩阵描述标量函数的“曲率”(比如损失函数的凹凸性),对称矩阵(\(\frac{\partial^2 f}{\partial x_i \partial x_j} = \frac{\partial^2 f}{\partial x_j \partial x_i}\))。

13. 常用矩阵求导公式(分母布局法,新手先记基础)

以下公式是矩阵求导的“工具包”,机器学习推导中常用(\(\boldsymbol{X}\) 是矩阵,\(\boldsymbol{a},\boldsymbol{b}\) 是向量,\(a\) 是标量):

求导场景 公式(分母布局) 通俗解释(新手版)
行列式求导 \(\frac{\partial \det(\boldsymbol{X})}{\partial \boldsymbol{X}} = \det(\boldsymbol{X})(\boldsymbol{X}^{-1})^\top\) 矩阵 \(\boldsymbol{X}\) 变化时,行列式的变化率和 \(\boldsymbol{X}\) 的逆矩阵相关
对数行列式求导 \(\frac{\partial \ln \det(\boldsymbol{X})}{\partial \boldsymbol{X}} = (\boldsymbol{X}^{-1})^\top = (\boldsymbol{X}^\top)^{-1}\) 对数放大了微小变化,导数更简洁,常用于概率模型(如高斯分布的协方差矩阵求导)
逆矩阵求导 \(\frac{\partial \boldsymbol{Y}^{-1}}{\partial \boldsymbol{X}} = -\boldsymbol{Y}^{-1} \frac{\partial \boldsymbol{Y}}{\partial \boldsymbol{X}} \boldsymbol{Y}^{-1}\) 逆矩阵的变化率“负反馈”依赖原矩阵的变化率
线性变换(一阶) \(\frac{\partial \boldsymbol{x}^\top \boldsymbol{a}}{\partial \boldsymbol{x}} = \boldsymbol{a},\ \frac{\partial \boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b}}{\partial \boldsymbol{X}} = \boldsymbol{a}\boldsymbol{b}^\top\) 向量/矩阵和常数向量相乘的导数,是“提取常数向量”
二次型(二阶) \(\frac{\partial \boldsymbol{x}^\top \boldsymbol{B} \boldsymbol{x}}{\partial \boldsymbol{x}} = (\boldsymbol{B} + \boldsymbol{B}^\top)\boldsymbol{x}\) 二次型(如 \(\boldsymbol{x}^\top \boldsymbol{B} \boldsymbol{x}\) )的导数是线性的
迹(Trace)求导 \(\frac{\partial \text{Tr}(\boldsymbol{X})}{\partial \boldsymbol{X}} = \boldsymbol{I},\ \frac{\partial \text{Tr}(\boldsymbol{X} \boldsymbol{A})}{\partial \boldsymbol{X}} = \boldsymbol{A}^\top\) 迹是矩阵对角线元素和,导数有“交换转置”的性质(\(\text{Tr}(\boldsymbol{AB})=\text{Tr}(\boldsymbol{BA})\)

14. 机器学习核心:正规方程推导(以线性模型为例,前置知识:数据集、损失函数、极大似然)

14.1 基础概念:“数据集”与“线性模型”是什么?

  • 数据集:一堆输入 \(\{\boldsymbol{x}_1, \boldsymbol{x}_2, \dots, \boldsymbol{x}_N\}\) 和对应的标签 \(\{t_1, t_2, \dots, t_N\}\)(比如输入是“身高/体重”,标签是“健康评分”)。
  • 线性模型:假设输出 \(y\) 是输入的线性组合,形式为 \(y = \boldsymbol{w}^\top \boldsymbol{\phi}(\boldsymbol{x})\)\(\boldsymbol{w}\) 是待学参数,\(\boldsymbol{\phi}(\boldsymbol{x})\) 是“特征映射”,把输入变形成向量,比如 \(\boldsymbol{\phi}(\boldsymbol{x})=(1, x, x^2)\) 是多项式特征)。

14.2 损失函数:衡量“预测误差”

我们用 二次损失 衡量预测值和真实标签的差距(假设误差是高斯分布,这等价于“极大似然估计”,新手可理解为“找最接近真实值的预测”):

\[E = \frac{1}{2} \sum_{i=1}^N \left[ t_i - \boldsymbol{w}^\top \boldsymbol{\phi}(\boldsymbol{x}_i) \right]^2 \]

  • 目标:找参数 \(\boldsymbol{w}\)\(E\) 最小(“最小化损失”)。

14.3 极大似然估计:求导找最小值

\(\boldsymbol{w}\) 求偏导并令导数为0(“极值条件”),利用矩阵求导规则推导:

  1. 展开损失函数的导数:

    \[\frac{\partial E}{\partial \boldsymbol{w}} = -\sum_{i=1}^N \left[ t_i - \boldsymbol{w}^\top \boldsymbol{\phi}(\boldsymbol{x}_i) \right] \boldsymbol{\phi}(\boldsymbol{x}_i)^\top \]

  2. 令导数为0(“最优参数满足的条件”):

    \[\sum_{i=1}^N \boldsymbol{\phi}(\boldsymbol{x}_i) \boldsymbol{\phi}(\boldsymbol{x}_i)^\top \boldsymbol{w} = \sum_{i=1}^N t_i \boldsymbol{\phi}(\boldsymbol{x}_i) \]

  3. 矩阵形式简化(定义 \(\boldsymbol{\Phi} = \begin{pmatrix} \boldsymbol{\phi}(\boldsymbol{x}_1)^\top \\ \vdots \\ \boldsymbol{\phi}(\boldsymbol{x}_N)^\top \end{pmatrix}\)\(\boldsymbol{t} = \begin{pmatrix} t_1 \\ \vdots \\ t_N \end{pmatrix}\) ):

    \[\boldsymbol{\Phi}^\top \boldsymbol{\Phi} \boldsymbol{w} = \boldsymbol{\Phi}^\top \boldsymbol{t} \]

  4. 解出最优参数 \(\boldsymbol{w}\)正规方程):

    \[\boldsymbol{w} = (\boldsymbol{\Phi}^\top \boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^\top \boldsymbol{t} \]

15. 多分类扩展:K分类的正规方程(PRML 4.1.3节,前置知识:1-of-K编码)

15.1 基础概念:“1-of-K编码”是什么?

分类问题中,标签常用“1-of-K编码”(比如3分类问题,标签可能是 \(t_1=(1,0,0)^\top\)\(t_2=(0,1,0)^\top\)\(t_3=(0,0,1)^\top\) ),每个标签表示“属于哪一类”。

15.2 多分类模型:K个线性分类器

\(K\) 分类问题,构造 \(K\) 个线性分类器(每个分类器对应一类),形式为:

\[y_k(\boldsymbol{x}) = \boldsymbol{w}_k^\top \boldsymbol{\phi}(\boldsymbol{x}) + w_{k0} \]

  • 简化为矩阵形式(把所有分类器参数打包):

    \[\boldsymbol{\tilde{W}} = \begin{pmatrix} \boldsymbol{\tilde{w}}_1 & \boldsymbol{\tilde{w}}_2 & \cdots & \boldsymbol{\tilde{w}}_K \end{pmatrix}, \quad \boldsymbol{y}_i^\top = \boldsymbol{\tilde{x}}_i^\top \boldsymbol{\tilde{W}} \]

    (其中 \(\boldsymbol{\tilde{x}}_i = \begin{pmatrix} 1 \\ \boldsymbol{\phi}(\boldsymbol{x}_i) \end{pmatrix}\) 是“增广特征向量”,包含偏置项 \(w_{k0}\)

15.3 平方误差与正规方程

定义整体误差为预测标签 \(\boldsymbol{y}\) 和真实标签 \(\boldsymbol{t}\) 的平方差,用矩阵形式表示为:

\[E_D(\boldsymbol{\tilde{W}}) = \frac{1}{2} \text{Tr}\left[ (\boldsymbol{\tilde{X}} \boldsymbol{\tilde{W}} - \boldsymbol{T})^\top (\boldsymbol{\tilde{X}} \boldsymbol{\tilde{W}} - \boldsymbol{T}) \right] \]

  • \(\boldsymbol{\tilde{W}}\) 求导并令导数为0(利用迹的求导公式),最终得到多分类的正规方程:

    \[\boldsymbol{\tilde{W}} = (\boldsymbol{\tilde{X}}^\top \boldsymbol{\tilde{X}})^{-1} \boldsymbol{\tilde{X}}^\top \boldsymbol{T} \]

总结:矩阵求导的核心价值

矩阵求导是机器学习推导的“数学工具”,通过将复杂的逐元素求导转化为矩阵运算,能高效推导模型的最优参数(如正规方程)。关键是理解 布局约定(分子/分母布局)和 常用公式(行列式、逆矩阵、迹的导数),再结合具体模型(线性回归、分类)的损失函数,就能推导参数更新规则啦~

posted @ 2025-07-12 11:43  秦瑞迁  阅读(317)  评论(0)    收藏  举报