如何计算矩阵方程的向量导数?概率矩阵分解隐因子求导及资料推荐
嘿,咱们一步步来拆解你的问题:先讲清楚矩阵方程的向量导数怎么算,再深入概率矩阵分解(PMF)里隐因子的求导过程,最后给你推荐几个靠谱的向量导数学习资料。
一、如何计算指定矩阵方程的向量导数?
向量导数最常见的场景是标量对向量的导数(毕竟机器学习里的损失函数大多是标量),核心是遵循基本求导规则,同时明确导数的布局(一般用分子布局,即导数维度和自变量向量一致)。
给你几个核心规则和实用例子:
- 线性法则:若 $L = a^T x + b$($a$ 是常数向量,$b$ 是常数),则 $\frac{\partial L}{\partial x} = a$
- 乘积法则:若 $L = x^T A x$($A$ 是常数矩阵),则 $\frac{\partial L}{\partial x} = (A + A^T)x$;如果 $A$ 是对称矩阵,可简化为 $2Ax$
- 链式法则:若 $L = f(g(x))$,则 $\frac{\partial L}{\partial x} = \frac{\partial f}{\partial g} \cdot \frac{\partial g}{\partial x}$(注意维度匹配)
实际计算时,新手可以先把矩阵方程展开成标量形式,对每个分量求导后再整理成向量形式——虽然繁琐,但能有效避免出错。
二、概率矩阵分解(PMF)中隐因子的求导
先回顾PMF的核心模型:假设用户 $n$ 的隐因子是列向量 $u_n$,物品 $m$ 的隐因子是列向量 $v_m$,观测评分 $r_{n,m}$ 满足 $r_{n,m} \approx u_n^T v_m + \varepsilon$($\varepsilon$ 是噪声)。我们的目标是最小化带正则项的平方损失:
$$
L = \sum_{(n,m) \in \Omega} (r_{n,m} - u_n^T v_m)^2 + \lambda \left( \sum_n ||u_n||^2 + \sum_m ||v_m||^2 \right)
$$
其中 $\Omega$ 是观测到的评分集合,$\lambda$ 是正则化系数,$||\cdot||$ 是L2范数。
对隐因子 $u_n$ 求导
只需要关注和 $u_n$ 相关的项:
- 平方损失项:$\sum_{m: (n,m) \in \Omega} (r_{n,m} - u_n^T v_m)^2$
- 正则项:$\lambda ||u_n||^2$
用链式法则展开求导:
- 平方损失项导数:$\sum_{m} 2(r_{n,m} - u_n^T v_m) \cdot (-v_m)$
- 正则项导数:$2\lambda u_n$
合并两部分并令导数为0(梯度下降的驻点条件):
$$
-2\sum_{m} v_m(r_{n,m} - u_n^T v_m) + 2\lambda u_n = 0
$$
整理后得到 $u_n$ 的更新方程:
$$
u_n = \left( \sum_{m} v_m v_m^T + \lambda I \right)^{-1} \sum_{m} v_m r_{n,m}
$$
($I$ 是单位矩阵)
对隐因子 $v_m$ 求导
过程和对 $u_n$ 求导完全对称,合并损失项与正则项的导数并令其为0,最终得到 $v_m$ 的更新方程:
$$
v_m = \left( \sum_{n} u_n u_n^T + \lambda I \right)^{-1} \sum_{n} u_n r_{n,m}
$$
三、向量导数学习资料推荐
给你几个通用且实用的学习资源,覆盖从基础到进阶的需求:
- 《矩阵分析与应用》(张贤达):这本书有专门章节讲解向量与矩阵导数,推导细致,例子贴近工程和机器学习场景,适合系统性学习。
- 斯坦福CS229机器学习讲义:里面的向量微积分章节专门针对机器学习应用,把常用的求导规则和场景讲得很透彻,PMF这类模型的求导思路能在这里找到对应参考。
- 《Vector Calculus for Engineers》:这本偏向工程应用,语言通俗,少抽象证明,多直观例子,适合快速上手掌握向量导数的核心规则。
内容的提问来源于stack exchange,提问作者Sanjay

