【深度学习数学基础:线性代数】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)
总结
矩阵求导的难点是“布局”(结果的形状约定),记住两点:
- 分子布局:结果形状尽量和分子一致;分母布局:结果是分子布局的转置。
- 基础场景(标量、向量互导)要熟练,复杂场景可查表。
下边的内容我没怎么太看懂,有点难度过大了,用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}\),定义为:
- 通俗理解: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}\),定义为:
- 通俗理解: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 损失函数:衡量“预测误差”
我们用 二次损失 衡量预测值和真实标签的差距(假设误差是高斯分布,这等价于“极大似然估计”,新手可理解为“找最接近真实值的预测”):
- 目标:找参数 \(\boldsymbol{w}\) 让 \(E\) 最小(“最小化损失”)。
14.3 极大似然估计:求导找最小值
对 \(\boldsymbol{w}\) 求偏导并令导数为0(“极值条件”),利用矩阵求导规则推导:
-
展开损失函数的导数:
\[\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 \] -
令导数为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) \] -
用矩阵形式简化(定义 \(\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} \] -
解出最优参数 \(\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\) 个线性分类器(每个分类器对应一类),形式为:
-
简化为矩阵形式(把所有分类器参数打包):
\[\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}\) 的平方差,用矩阵形式表示为:
- 对 \(\boldsymbol{\tilde{W}}\) 求导并令导数为0(利用迹的求导公式),最终得到多分类的正规方程:\[\boldsymbol{\tilde{W}} = (\boldsymbol{\tilde{X}}^\top \boldsymbol{\tilde{X}})^{-1} \boldsymbol{\tilde{X}}^\top \boldsymbol{T} \]
总结:矩阵求导的核心价值
矩阵求导是机器学习推导的“数学工具”,通过将复杂的逐元素求导转化为矩阵运算,能高效推导模型的最优参数(如正规方程)。关键是理解 布局约定(分子/分母布局)和 常用公式(行列式、逆矩阵、迹的导数),再结合具体模型(线性回归、分类)的损失函数,就能推导参数更新规则啦~
浙公网安备 33010602011771号