假设 x\boldsymbol xx,a\boldsymbol aa是列向量,A\boldsymbol AA是矩阵。
1. 基础线性规则(最常用)
- ∂(aTx)∂x=a\frac{\partial (\boldsymbol a^T \boldsymbol x)}{\partial \boldsymbol x} = \boldsymbol a∂x∂(aTx)=a
- ∂(xTa)∂x=a\frac{\partial (\boldsymbol x^T \boldsymbol a)}{\partial \boldsymbol x} = \boldsymbol a∂x∂(xTa)=a
- ∂(Ax)∂x=AT\frac{\partial (\boldsymbol A \boldsymbol x)}{\partial \boldsymbol x} = \boldsymbol A^T∂x∂(Ax)=AT
2. 二次型求导
- ∂(xTAx)∂x=(A+AT)x\frac{\partial (\boldsymbol x^T \boldsymbol A \boldsymbol x)}{\partial \boldsymbol x} = (\boldsymbol A + \boldsymbol A^T) \boldsymbol x∂x∂(xTAx)=(A+AT)x
如果 AT=A\boldsymbol A^T = \boldsymbol AAT=A (A\boldsymbol AA为对称矩阵),则 ∂(xTAx)∂x=2Ax\frac{\partial (\boldsymbol x^T \boldsymbol A \boldsymbol x)}{\partial \boldsymbol x} = 2 \boldsymbol A \boldsymbol x∂x∂(xTAx)=2Ax
3. 链式法则
假设 yyy 是 u\boldsymbol uu 的函数,而 u\boldsymbol uu 是 x\boldsymbol xx 的函数:
∂y∂x=(∂u∂x)T∂y∂u \frac{\partial y}{\partial \boldsymbol x} = \left( \frac{\partial \boldsymbol u}{\partial \boldsymbol x} \right)^T \frac{\partial y}{\partial \boldsymbol u} ∂x∂y=(∂x∂u)T∂u∂y
4. 实战演示:求线性回归代价函数的梯度
代价函数:
J=12∥Xθ−y∥2=12(Xθ−y)T(Xθ−y)=12(θTXTXθ−2yTXθ+yTy)\begin{aligned} J = & \frac{1}{2} \|\boldsymbol X \boldsymbol \theta - \boldsymbol y\|^2 \\ = & \frac{1}{2} (\boldsymbol X \boldsymbol \theta - \boldsymbol y)^T (\boldsymbol X \boldsymbol \theta - \boldsymbol y) \\ = &\frac{1}{2} (\boldsymbol \theta^T \boldsymbol X^T \boldsymbol X \boldsymbol \theta - 2 \boldsymbol y^T \boldsymbol X \boldsymbol \theta + \boldsymbol y^T \boldsymbol y) \end{aligned}J===21∥Xθ−y∥221(Xθ−y)T(Xθ−y)21(θTXTXθ−2yTXθ+yTy)
对 θ\boldsymbol \thetaθ 求偏导:
∇J(θ)=XTXθ−XTy \nabla J (\boldsymbol \theta) = \boldsymbol X^T \boldsymbol X \boldsymbol \theta - \boldsymbol X^T \boldsymbol y ∇J(θ)=XTXθ−XTy
5. 记忆小窍门
- 形状匹配:导数的结果形状必须和原变量 x\boldsymbol xx的形状一模一样(如果 x\boldsymbol xx 是列向量,导数也是列向量)。
- 转置标志:如果在求导过程中发现形状对不上,通常是漏掉了一个转置。
- 对比标量:先想标量怎么求导,在大脑里把系数换成矩阵/向量,最后根据形状调整转置。