机器学习中常涉及到标量对向量、向量对标量、矩阵对向量等求导,必须使用到矩阵求导
分子布局与分母布局
必须先明确是布局方式,否则运算时会出错,运算过程中只能采用一种布局,在大多数机器学习资料中,没有明确指出采用哪种布局,两种布局都可能出现,甚至有均出现的情况。分子布局和分母布局的结果互为转置
分子布局
$$
\text{x为列向量,y为标量,则:}\frac{ \partial y }{ \partial x }=v^\top
$$
运算结果的结构与分子类似, v ⊤ v^\top v⊤行数与y相同
分母布局
x为列向量,y为标量,则: ∂ y ∂ x = v \text{x为列向量,y为标量,则:}\frac{ \partial y }{ \partial x }=v x为列向量,y为标量,则:∂x∂y=v
运算结果的结构与分母类似, v v v和x行数相同
常用结论
x为n维列向量
分子布局
A ∈ R m × n , ∂ A x ∂ x = A ⊤ , 即 ∇ x A x = A ⊤ A ∈ R n × m , ∂ x ⊤ A ∂ x = A , 即 ∇ x x ⊤ A = A ∂ ⟨ u , v ⟩ ∂ u = v ⊤ ∇ x ∥ x ∥ 2 = 2 x ⊤ \begin{align} &\text{$A\in R^{m\times n}$},\frac{ \partial Ax }{ \partial x } =A^\top,\text{即}\nabla_{x}Ax=A^\top\\ &\text{$A\in R^{n\times m}$},\frac{ \partial x^\top A }{ \partial x } =A,\text{即}\nabla_{x}x^\top A=A\\ &\frac{\partial \langle u, v \rangle}{\partial u} = v^\top\\ &\nabla_{\mathbf{x}} \|\mathbf{x}\|^2 = 2\mathbf{x}^\top \end{align} A∈Rm×n,∂x∂Ax=A⊤,即∇xAx=A⊤A∈Rn×m,∂x∂x⊤A=A,即∇xx⊤A=A∂u∂⟨u,v⟩=v⊤∇x∥x∥2=2x⊤
分母布局
A ∈ R m × n , ∂ A x ∂ x = A , 即 ∇ x A x = A A ∈ R n × m , ∂ x ⊤ A ∂ x = A ⊤ , 即 ∇ x x ⊤ A = A ⊤ ∂ ⟨ u , v ⟩ ∂ u = v ∇ x ∥ x ∥ 2 = 2 x \begin{align} &\text{$A\in R^{m\times n}$},\frac{ \partial Ax }{ \partial x } =A,\text{即}\nabla_{x}Ax=A\\ &\text{$A\in R^{n\times m}$},\frac{ \partial x^\top A }{ \partial x } =A^\top,\text{即}\nabla_{x}x^\top A=A^\top\\ &\frac{\partial \langle u, v \rangle}{\partial u} = v\\ &\nabla_{\mathbf{x}} \|\mathbf{x}\|^2 = 2\mathbf{x} \end{align} A∈Rm×n,∂x∂Ax=A,即∇xAx=AA∈Rn×m,∂x∂x⊤A=A⊤,即∇xx⊤A=A⊤∂u∂⟨u,v⟩=v∇x∥x∥2=2x
通用
A ∈ R n × n , ∇ x x ⊤ A x = ( A + A ⊤ ) x A为对称矩阵: ∇ x x ⊤ A x = 2 A x \begin{align} &A\in R^{n\times n},\nabla_{x}x^\top Ax=(A+A^\top)x \\ &\text{A为对称矩阵:}\nabla_{x}x^\top Ax=2Ax \end{align} A∈Rn×n,∇xx⊤Ax=(A+A⊤)xA为对称矩阵:∇xx⊤Ax=2Ax
实际运算
在具体运算中,常常没有指出布局方式,此时应该具体情况具体分析,原则是采用的布局必须满足矩阵乘法。
例1使用分子布局,例2使用分母布局
上述例子来自李沐《动手学深度学习v2》