当前位置: 首页 > article >正文

梯度计算中常用的矩阵微积分公式

标量对向量求导的常用数学公式

设标量函数 y = f ( x ) y = f(\boldsymbol{x}) y=f(x),其中 x = ( x 1 , x 2 , ⋯   , x n ) T \boldsymbol{x} = (x_1, x_2, \cdots, x_n)^{\rm T} x=(x1,x2,,xn)T 是一个 n n n 维列向量。则标量 y y y 对向量 x \boldsymbol{x} x 的导数为一个 n n n 维列向量:

∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋮ ∂ y ∂ x n ] \frac{\partial y}{\partial \boldsymbol{x}} = \begin{bmatrix} \dfrac{\partial y}{\partial x_1} \\ \dfrac{\partial y}{\partial x_2} \\ \vdots \\ \dfrac{\partial y}{\partial x_n} \end{bmatrix} xy= x1yx2yxny

  1. 线性函数:若 y = a T x y = \boldsymbol{a}^{\rm T} \boldsymbol{x} y=aTx,其中 a \boldsymbol{a} a 是一个 n n n 维列向量,则

∂ y ∂ x = a \frac{\partial y}{\partial \boldsymbol{x}} = \boldsymbol{a} xy=a

  1. 二次型函数:若 y = x T A x y = \boldsymbol{x}^{\rm T} {\bm A} \boldsymbol{x} y=xTAx,其中 A {\bm A} A 是一个 n × n n \times n n×n 的矩阵,则

∂ y ∂ x = ( A + A T ) x \frac{\partial y}{\partial \boldsymbol{x}} = ({\bm A} + {\bm A}^{\rm T}) \boldsymbol{x} xy=(A+AT)x

A {\bm A} A 为对称矩阵时, A T = A {\bm A}^{\rm T} = {\bm A} AT=A,则

∂ y ∂ x = 2 A x \frac{\partial y}{\partial \boldsymbol{x}} = 2{\bm A} \boldsymbol{x} xy=2Ax
A {\bm A} A 为单位矩阵时, y = x T x y = \boldsymbol{x}^{\rm T} \boldsymbol{x} y=xTx,则

∂ y ∂ x = ∂ ∥ x ∥ 2 ∂ x = ∂ x T x ∂ x = 2 x \frac{\partial y}{\partial \boldsymbol{x}} = \frac{\partial \|{\bm x}\|^2}{\partial {\bm x}} = \frac{\partial {\bm x}^{\rm T} {\bm x}}{\partial {\bm x}} =2{\bm x} xy=xx2=xxTx=2x
∥ x ∥ 2 \|{\bm x}\|^2 x2表示向量 x {\bm x} x的范数(长度)的平方。

向量对向量求导的常用数学公式

y = A x {\bm y}= {\bm A} \boldsymbol{x} y=Ax,其中 A {\bm A} A 是一个 n × n n \times n n×n 的矩阵,则
∂ y ∂ x = ∂ A x ∂ x = A T \frac{\partial {\bm y}}{\partial \boldsymbol{x}} = \frac{\partial {\bm A}{\bm x}}{\partial {\bm x}} = {\bm A}^{\rm T} xy=xAx=AT

A {\bm A} A是一个矩阵, x {\bm x} x是一个向量。
x {\bm x} x求导的结果是矩阵 A {\bm A} A的转置 A T {\bm A}^{\rm T} AT

复合函数的导数

给定函数 g ( u ( x ) ) g(u(x)) g(u(x)),其中 u = u ( x ) = b − A x {\bm u}=u({\bm x}) = {\bm b} - {\bm A}{\bm x} u=u(x)=bAx,且 g ( u ) = ∥ u ∥ 2 g({\bm u}) = \|{\bm u}\|^2 g(u)=u2

链式法则

根据链式法则(Chain Rule),有:
∂ g ( u ( x ) ) ∂ x = ∂ g ∂ u ⋅ ∂ u ∂ x \frac{\partial g(u({\bm x}))}{\partial {\bm x}} = \frac{\partial g}{\partial {\bm u}} \cdot \frac{\partial {\bm u}}{\partial {\bm x}} xg(u(x))=ugxu

具体步骤
  1. 计算 ∂ u ∂ x \dfrac{\partial {\bm u}}{\partial {\bm x}} xu:
    u ( x ) = b − A x {\bm u}({\bm x}) = {\bm b} - {\bm A}{\bm x} u(x)=bAx
    x {\bm x} x 求导得到:
    ∂ u ∂ x = − A \frac{\partial {\bm u}}{\partial {\bm x}} = -{\bm A} xu=A

  2. 计算 ∂ g ( u ) ∂ u \dfrac{\partial g({\bm u})}{\partial {\bm u}} ug(u):
    g ( u ) = ∥ u ∥ 2 = u T u g({\bm u}) = \|{\bm u}\|^2 = {\bm u}^{\rm T} {\bm u} g(u)=u2=uTu
    u {\bm u} u 求导得到:
    ∂ g ( u ) ∂ u = 2 u \frac{\partial g({\bm u})}{\partial {\bm u}} = 2{\bm u} ug(u)=2u

  3. 应用链式法则:
    ∂ g ( u ( x ) ) ∂ x = ∂ g ( u ) ∂ u ⋅ ∂ u ∂ x \frac{\partial g(u({\bm x}))}{\partial {\bm x}} = \frac{\partial g({\bm u})}{\partial {\bm u}} \cdot \frac{\partial {\bm u}}{\partial {\bm x}} xg(u(x))=ug(u)xu
    将上面的结果代入:
    ∂ g ( u ( x ) ) ∂ x = 2 u ⋅ ( − A ) \frac{\partial g({\bm u}({\bm x}))}{\partial {\bm x}} = 2{\bm u} \cdot (-{\bm A}) xg(u(x))=2u(A)
    由于 u = b − A x {\bm u} = {\bm b} - {\bm A}{\bm x} u=bAx,代入得到:
    ∂ g ( u ( x ) ) ∂ x = − 2 A T ( b − A x ) \frac{\partial g({u}({\bm x}))}{\partial {\bm x}} = -2{\bm A}^{\rm T} ({\bm b} - {\bm A}{\bm x}) xg(u(x))=2AT(bAx)

最终结果是:
∂ ∥ b − A x ∥ 2 ∂ x = − 2 A T ( b − A x ) \frac{\partial \|{\bm b} - {\bm A}{\bm x}\|^2}{\partial {\bm x}} = -2{\bm A}^{\rm T} ({\bm b} - {\bm A}{\bm x}) xbAx2=2AT(bAx)


http://www.kler.cn/a/578794.html

相关文章:

  • 相机几何:从三维世界到二维图像的映射
  • MyBatis增删改查:静态与动态SQL语句拼接及SQL注入问题解析
  • golang dlv调试工具
  • 如何监控 Pod 的 CPU/内存使用率,prometheus+grafana
  • ②Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网
  • VSCode+AI编程生态实战:从环境配置到智能编码的全栈指南
  • 软考 中级软件设计师 考点知识点笔记总结 day02
  • Vite 打包后Nginx部署配置
  • QOJ9700 Ying’s Cup(拉格朗日插值优化卷积,背包,二项式反演)
  • 驱动开发系列46 - Linux 显卡KMD驱动代码分析(七)- 显存管理
  • VS Code连接服务器教程
  • 泛型、泛型上限、泛型下限、泛型通配符
  • Codeforces Round 566 (Div. 2) E. Product Oriented Recurrence 矩阵加速、欧拉降幂
  • 自然语言模型NLP :tensorflow搭建情感分析模型
  • 企业数据挖掘平台×DeepSeek强强联合,多种应用场景适用
  • 实现静态网络爬虫(入门篇)
  • 数据结构--【栈与队列】笔记
  • 计算机视觉算法实战——犯罪行为检测(主页有源码)
  • C++复试笔记(一)
  • PreTrainedModel 类代码分析:_load_pretrained_model