二次型求导推导咨询:矩阵微积分新手求解梯度计算过程
嘿,作为矩阵微积分新手,完全理解你的困惑——这玩意儿一开始确实容易绕晕!咱们一步步拆解这个损失函数的梯度推导,保证每一步都讲得明明白白。
首先,咱们先把损失函数拆成三个独立的项,因为梯度是线性算子(也就是说$\nabla(f(a)+g(a)) = \nabla f(a) + \nabla g(a)$),所以可以分别计算每个项的梯度,再把结果加起来:
$$l(a) = \underbrace{|y|2^2}{项1} - \underbrace{2y^TXa}{项2} + \underbrace{aTXTX a}{项3}$$
逐项计算梯度
项1:$|y|_2^2$的梯度
$|y|_22$是向量$y$的L2范数平方,展开就是$y_12 + y_2^2 + ... + y_n^2$,它和变量$a$完全无关,是一个常数。
常数对任何变量的梯度都是零向量,所以:
$$\nabla |y|_2^2 = 0$$
项2:$-2y^TXa$的梯度
先简化这个项的核心部分:$yTXa$。这是一个标量($y$是列向量,$X$是矩阵,$a$是列向量,行向量$yT$乘$X$得到行向量,再乘列向量$a$最终得到一个数)。
利用转置的性质:$(AB)^T = B^T AT$,我们可以把$yTXa$改写为$(X^T y)^T a$。假设$c = X^T y$,那么这个项就变成了$c^T a$——这是一个关于$a$的线性函数。
对于线性函数$f(a) = c^T a$,它的梯度就是向量$c$(因为对$a$的每个分量$a_i$求偏导,结果就是$c_i$)。所以:
$$\nabla(y^TXa) = X^T y$$
那么项2的梯度就是:
$$\nabla(-2y^TXa) = -2 \times \nabla(y^TXa) = -2X^T y$$
项3:$aTXTXa$的梯度
这个项是典型的二次型,我们可以令$M = XTX$,那么项3就变成了$aT M a$。首先注意$M$是对称矩阵:因为$(XTX)T = XT(XT)^T = XTX$,满足$MT = M$。
对于对称矩阵的二次型$f(a) = a^T M a$,它的梯度公式是$\nabla f(a) = 2M a$。如果想验证的话,咱们用分量形式拆解:
假设$a$是$n$维向量,$M$是$n×n$矩阵,那么:
$$f(a) = \sum_{i=1}^n \sum_{j=1}^n M_{ij} a_i a_j$$
对$a_k$求偏导:
$$\frac{\partial f}{\partial a_k} = \sum_{j=1}^n M_{kj}a_j + \sum_{i=1}^n M_{ik}a_i$$
因为$M$对称,$M_{ik}=M_{ki}$,所以上式可以合并为:
$$\frac{\partial f}{\partial a_k} = 2\sum_{j=1}^n M_{kj}a_j$$
这正好是$2M a$的第$k$个分量,所以整个梯度就是$2M a$。
代入$M = X^TX$,项3的梯度就是:
$$\nabla(aTXTXa) = 2X^TXa$$
合并所有项的梯度
把三个项的梯度加起来:
$$\nabla l(a) = 0 + (-2X^T y) + 2X^TXa$$
整理后就是:
$$\nabla l(a) = 2X^TXa - 2X^T y$$
这样就得到了题目里给出的梯度结果啦!如果还有哪个步骤没搞懂,随时问~
内容的提问来源于stack exchange,提问作者deficiencyOn

