向量微分

Junity 发布于 2025-04-28 12041 次阅读 最后更新于 2025-04-28 1211 字 预计阅读时间: 6 分钟


AI 摘要

本文介绍机器学习中必备的向量微分知识,重点讲解雅可比矩阵的定义与性质,推导向量微分的链式法则及常用结论,包括向量运算、内积和矩阵运算的微分规则,为应用提供理论基础。

引言

线性代数和高等数学在几乎所有学校的计算机相关专业都会开设。然而,将两者结合起来的对向量进行微分的相关知识却少有课程涉及。本文的目的是提供 在机器学习领域必要的向量微分相关的内容 。

关于这部分内容,这篇文章 提供了很好的入门教程,事实上本文也是作为这篇文章的笔记而诞生的。此外,这篇文章 是一篇很好的进阶教程。

在本文中,若无特殊说明,则所以的向量都是 列向量 。

向量微分的结果

设有一个向量到向量的函数 f(x→):Rn→Rm ,它把一个 n 维向量变为一个 m 维向量。设fi(x→)=f(x→)i ,我们定义对它微分的结果是一个m×n 矩阵:

∂f∂x→=[∂f1∂x1∂f1∂x2...∂f1∂xn∂f2∂x1∂f2∂x2...∂f2∂xn⋱∂fm∂x1∂fm∂x2...∂fm∂xn]

这个矩阵被称为 雅可比矩阵 。之所以这样定义,是因为我们希望微分在向量上的扩展有与标量微分中相似的性质,即 δf=∂f∂x→δx 。如果用 (∂f∂x→)i 来表示这个矩阵的第 i 行,根据全微分法则很容易知道 δfi=(∂f∂x→)i∗δx→ 。

雅可比矩阵是导数在向量微分上的推广。

向量微分链式法则

和标量微分一样,向量微分也有链式法则。向量微分的链式法则和标量下的链式法则类似:

∂y→∂x→=∂y→∂u→∂u→∂x→

这里的 ∂y→∂u→ 和 ∂u→∂x→ 都是矩阵,它们的相乘代表矩阵相乘。这个结论可以通过展开矩阵乘法后应用标量下的链式法则得到。

类似的,还可以得到向量的全微分法则:设 y→=f(u→1,u→2,...,u→n) ,其中每一个 u→i 都是 x 的函数,那么:

∂y→∂x→=∑i=1n∂y→∂u→i∂u→i∂x→

向量微分基础结论

向量间的运算

设 ⊙ 是一个应用于两个向量的 逐元素 (element-wise)运算符,逐元素 意味着对于两个向量 a 和 b ,(a⊙b)i 的结果只和 ai 与 bi 有关。最常见的逐元素运算符包括向量加法,向量减法以及向量的Hadamard积(即逐元素乘法)。

设 a 和 b 是两个 n 维向量,那么 a⊙b 可以写成下面的形式:

a⊙b=[a1a2⋮an]⊙[b1b2⋮bn]=[a1⊙b1a2⊙b2⋮an⊙bn]

其中 ai⊙bi 是完全的标量运算。如果其中一者是变量,另外一个是常量,那么对这个式子求导的雅可比矩阵就是一个 n×n 方阵。由于 ⊙ 是逐元素的,因此结果只在对角线上有非 0 值,所以这是一个对角矩阵。

基于此,可以导出以下几个基本的结论:

设 x 和 c 都是 n 维向量,其中 x 是变量,c 是常量,那么:

  1. ∂(x+c)∂x=I
  2. ∂(cx)∂x=diag(c),这里的 diag(c) 代表对角线为 c 的对角矩阵

将常量标量乘上 x 可以看成是第二个结论,因为可以将这个标量看成是 [c,c,...,c]T 这个向量。

设 u 和 v 是 n 维向量 x 的两个 m 维向量值函数,他们的逐元素乘法的结果仍然是 m 维的,因此 u⊗v 的雅可比矩阵是 m×n 的:

∂(u⊗v)∂x=∂(u⊗v)∂u∂u∂x+∂(u⊗v)∂v∂v∂x=diag(v)∂u∂x+diag(u)∂u∂x

向量内积

设 u 和 v 是 n 维向量 x 的两个 m 维向量值函数,那么他们的内积是一个实数。我们把这个实数看成是一个一维向量,因此求导的结果就是一个 1×n 的雅可比矩阵:

∂(u⋅v)∂x=∑i=1m[∂(ui∗vi)∂x1,∂(ui∗vi)∂x2,⋯,∂(ui∗vi)∂xn]

其中 ∂(ui∗vi)∂x1=vi∂(ui)∂x1+ui∂(vi)∂x1 ,因此:

∂(u⋅v)∂x=∑i=1m[vi∂(ui)∂x1+ui∂(vi)∂x1,vi∂(ui)∂x2+ui∂(vi)∂x2,⋯,vi∂(ui)∂xn+ui∂(vi)∂xn]=∑i=1m[vi∂(ui)∂x1,vi∂(ui)∂x2,⋯,vi∂(ui)∂xn]+[ui∂(vi)∂x1,ui∂(vi)∂x2,⋯,ui∂(vi)∂xn]=∑i=1mvi[∂(ui)∂x1,∂(ui)∂x2,⋯,∂(ui)∂xn]+ui[∂(vi)∂x1,∂(vi)∂x2,⋯,∂(vi)∂xn]

而 [∂(ui)∂x1,∂(ui)∂x2,⋯,∂(ui)∂xn]=∂ui∂x ,因此原来的式子可以写成:

∂(u⋅v)∂x=∑i=1mvi∂ui∂x+ui∂vi∂x=vT∂u∂x+uT∂v∂x

这个结论的一个特例是 x 与自身的内积:

∂xTx∂x=2xT

向量与矩阵的运算

设 A 是一个 m×n 的常量矩阵,x 是一个 n 维向量,那么:

∂(Ax)∂x=A

逐元素的加与乘

设 u 和 v 是 n 维向量,并且都是 x 的函数,那么:

  1. ∂(u+v)∂x=∂u∂x+∂v∂x
  2. ∂(u⊗v)∂x=∂(uTv)∂x=v∂u∂x+u∂v∂x ,这里的 ⊗ 代表逐元素乘法,而非内积。
此作者没有提供个人介绍。
最后更新于 2025-04-28