本文介绍机器学习和深度学习公式推导中常见的对向量求导。

对向量的导数,定义如下:

(∂∂xf(x))i=∂∂xifi(x)\left( \frac{\partial}{\partial \bm{x}} f(\bm{x}) \right)_i = \frac{\partial}{\partial x_i} f_i(\bm{x})(xf(x))i=xifi(x)

上式中下标 iii 表示第 iii 个分量。特别地,若 f(x)f(\bm{x})f(x) 为数量,有 fi(x)=f(x)f_i(\bm{x}) = f(\bm{x})fi(x)=f(x)

结合向量场论中梯度的定义,可知

∂∂xf(x)=∇xf(x)\frac{\partial}{\partial \bm{x}} f(\bm{x}) = \nabla_{\bm{x}} f(\bm{x})xf(x)=xf(x)

对向量求导的结果总是向量,维度与 x\bm{x}x 相同。在线性代数中,这个向量可以写作列向量,也可以写作行向量。下面推导一些常用的结论,一律使用列向量。

∂∂x(μ⊤x)=μ\frac{\partial}{\partial \bm{x}} \left( \bm{\mu}^\top \bm{x} \right) = \bm{\mu}x(μx)=μ

因为

∂∂xk(μ⊤x)=∂∂xk∑i=1nμixi=∂∂xk(μkxk)=μk \begin{align*} \frac{\partial}{\partial x_k} \left(\bm{\mu^\top \bm{x}} \right) &= \frac{\partial}{\partial x_k} \sum_{i = 1}^{n} \mu_i x_i \\ &= \frac{\partial}{\partial x_k} \left( \mu_k x_k \right) \\ &= \mu_k \end{align*} xk(μx)=xki=1nμixi=xk(μkxk)=μk

∂∂x(x⊤Ax)=2Ax\frac{\partial}{\partial \bm{x}} \left( \bm{x}^\top \mathbf{A} \bm{x} \right) = 2 \mathbf{A} \bm{x}x(xAx)=2Ax

其中 A\mathbf{A}A 为实对称矩阵。因为

∂∂xk(x⊤Ax)=∂∂xk∑i,jAijxixj=∂∂xk(∑j≠kAkjxkxj+∑i≠kAikxixk+Akkxk2)=∑i≠kAkjxj+∑i≠kAikxi+2Akkxk=∑jAkjxj+∑iAikxi=2Akx \begin{align*} \frac{\partial}{\partial x_k} \left( \bm{x}^\top \mathbf{A} \bm{x} \right) &= \frac{\partial}{\partial x_k} \sum_{i, j} A_{ij} x_i x_j\\ &= \frac{\partial}{\partial x_k} \left( \sum_{j \ne k} A_{kj} x_k x_j + \sum_{i \ne k} A_{ik} x_i x_k + A_{kk} x_k^2 \right) \\ &= \sum_{i \ne k} A_{kj} x_j + \sum_{i \ne k} A_{ik} x_i + 2 A_{kk} x_k \\ &= \sum_{j} A_{kj} x_j + \sum_{i} A_{ik} x_i \\ &= 2 \bm{A}_k \bm{x} \end{align*} xk(xAx)=xki,jAijxixj=xkj=kAkjxkxj+i=kAikxixk+Akkxk2=i=kAkjxj+i=kAikxi+2Akkxk=jAkjxj+iAikxi=2Akx

其中 AijA_{ij}Aij 表示矩阵 A\mathbf{A}A 的第 iii 行第 jjj 列的数,Ak\bm{A}_kAk 表示矩阵 A\mathbf{A}Akkk 行构成的行向量。最后一步推导用到了 A\mathbf{A}A 的对称性。

更多推荐