实数对向量求导公式,得到结果的形式与 分母(自变量) 一致,意思就是,自变量是列向量,结果也是列向量
因变量是否转置对于结果无影响,这一条是我自己总结的。
公式一:将 $x$ 约掉后,剩下一个跟 $x$ 维度一直的就可以了,所以都是 $a$。
$$ abla_{mathbf{x}} (mathbf{a}^T mathbf{x}) = color{red}{ abla_{mathbf{x}} (mathbf{a}^T mathbf{x})^T} = abla_{mathbf x} (mathbf{x}^T mathbf{a}) = color{blue}{mathbf{a}} $$ |
$$ frac {partial mathbf{a}^T mathbf{x}} {partial mathbf{x}} = color{red}{frac {partial (mathbf{a}^T mathbf{x})^T} {partial mathbf{x}}} = frac {partial mathbf{x}^T mathbf{a}} {partial mathbf{x}} = color{blue}{mathbf{a}} $$ |
公式二:理解成 $x*x=x^2$ 吧,所以就是 $2x$。
$$ abla_{mathbf{x}} ||mathbf{x}||_2^2 = color{red} { abla_{mathbf x} (mathbf{x}^T mathbf{x})} = color{blue} {2 mathbf{x}} $$ |
$$ frac {partial ||mathbf{x}||_2^2} {partial mathbf{x}} = color{red} {frac {partial (mathbf{x}^T mathbf{x})} {partial mathbf{x}}} = color{blue} { 2 mathbf{x}} $$ |
公式三:本来结果应该类似 $2Ax$,然而由于转置不影响,也可以得 $2A^Tx$,所以综合来看就是 $(A+A^T)x$。
$$ abla_{mathbf x} (mathbf{x}^T mathbf{A} mathbf{x}) = color{red}{ abla_{mathbf x} (mathbf{x}^T mathbf{A} mathbf{x})^T} = abla_{mathbf x} (mathbf{x}^T mathbf{A}^T mathbf{x}) = color{blue} {(mathbf{A} + mathbf{A}^T) mathbf{x}} $$ |
$$ frac {partial (mathbf{x}^T mathbf{A} mathbf{x})} {partial mathbf{x}} = color{red}{frac {partial (mathbf{x}^T mathbf{A} mathbf{x})^T} {partial mathbf{x}}} = frac {partial (mathbf{x}^T mathbf{A}^T mathbf{x})} {partial mathbf{x}} = color{blue} {(mathbf{A} + mathbf{A}^T) mathbf{x}} $$ |
实值函数对向量求导
- 未作特殊说明即为对变量 $oldsymbol{x}$ 求导
- 一个基本的雅克比矩阵(由定义易得):
- $
abla_oldsymbol{x}(Aoldsymbol{x})=A$
- 特别地,$
abla_{oldsymbol{x}} oldsymbol{x} =
abla_{oldsymbol{x}} (Ioldsymbol{x}) = I $
- 向量内积的求导法则
- 注:内积是一个实数,因此本节相当于实数对向量求导,结果是与自变量同型的向量。
- $ abla(oldsymbol{a}^Toldsymbol{x}) = abla(oldsymbol{x}^Toldsymbol{a}) = oldsymbol{a}$
- 证明:$dfrac{partialoldsymbol{a^Tx}}{partial x_i} = dfrac{partialsum_j a_j x_j}{partial x_i} = dfrac{partial a_i x_i}{partial x_i} = a_i$
- $ abla ||oldsymbol{x}||_2^2 = abla(oldsymbol{x}^Toldsymbol{x}) = 2oldsymbol{x}$
- 证明一(直接计算):$dfrac{partial ||oldsymbol{x}||_2^2}{partial x_i} = dfrac{partialsum_j x_j^2}{partial x_i} = dfrac{partial x_i^2}{partial x_i} = 2x_i$
- 证明二(变量多次出现的求导法则):$
abla(oldsymbol{x}^Toldsymbol{x}) =
abla_{oldsymbol{x}}(oldsymbol{x}_c^Toldsymbol{x}) +
abla_{oldsymbol{x}}(oldsymbol{x}^Toldsymbol{x}_c) = 2
abla_{oldsymbol{x}}(oldsymbol{x}_c^Toldsymbol{x}) = 2oldsymbol{x}_c = 2oldsymbol{x}$,其中 $oldsymbol{x}_c$ 表示将 $oldsymbol{x}$ 的此次出现不视作自变量,而是视作与 $oldsymbol{x}$ 无关的常数,下同。
- $ abla (oldsymbol{x}^TAoldsymbol{x}) = (A+A^T)oldsymbol{x}$
- 证明(变量多次出现的求导法则):$$egin{align*}
LHS & = &
abla (oldsymbol{x}_c^TAoldsymbol{x}) +
abla (oldsymbol{x}^TAoldsymbol{x}_c) \
& = &
abla ((A^Toldsymbol{x}_c)^Toldsymbol{x}) +
abla ((Aoldsymbol{x}_c)^Toldsymbol{x}) \
& = & A^Toldsymbol{x}_c + Aoldsymbol{x}_c \
& = & RHS
end{align*}$$
- 若 $A$ 是对称矩阵,即 $A=A^T$,上式右边还可以进一步化简为 $2Aoldsymbol{x}$
- **向量函数内积的求导法则**
- 若 $oldsymbol{u}(oldsymbol{x}):mathbb{R}^n ightarrow mathbb{R}^m, oldsymbol{v}(oldsymbol{x}):mathbb{R}^n ightarrow mathbb{R}^m$,则 $ abla(oldsymbol{u}^Toldsymbol{v}) = ( abla_{oldsymbol{x}} oldsymbol{u})^T oldsymbol{v} + ( abla_{oldsymbol{x}} oldsymbol{v})^T oldsymbol{u}$
- 证明(变量多次出现的求导法则 + 一次复合的求导法则):$LHS= abla(oldsymbol{u}^Toldsymbol{v}_c)+ abla(oldsymbol{u}_c^Toldsymbol{v}) = ( abla_{oldsymbol{x}} oldsymbol{u})^T oldsymbol{v}_c + ( abla_{oldsymbol{x}} oldsymbol{v})^T oldsymbol{u}_c = RHS$
#### 向量数乘求导公式
- $ abla_{oldsymbol{x}} (alpha(oldsymbol{x})oldsymbol{f(x)}) = oldsymbol{f(x)} abla_{oldsymbol{x}^T} alpha(oldsymbol{x}) + alpha(oldsymbol{x}) abla_{oldsymbol{x}}oldsymbol{f(x)}$
- 说明:向量对向量求导,结果是一个雅克比矩阵,形状为 $oldsymbol{f}$ 的维度乘 $oldsymbol{x}$ 的维度
- 推导:$dfrac{partial alpha f_i}{partial x_j} = f_i dfrac{partial alpha}{partial x_j} + alpha dfrac{partial f_i}{partial x_j} $,两边逐分量对比一下便知等式成立。
- 记忆:按两个标量函数相乘的求导法则记,再注意一下**维度相容原理**即可。另外注意,等式左边 $alpha(oldsymbol{x})oldsymbol{f(x)}$ 是向量的数乘(若 $oldsymbol{f(x)}$ 为行向量也可视作矩阵乘法);右边 $alpha(oldsymbol{x}) abla_{oldsymbol{x}}oldsymbol{f(x)}$ 是矩阵的数乘。