隐语义模型(Latent Factor Model, LFM)的交替最小二乘(Alternating Least Squares, ALS)优化过程
题目描述
隐语义模型(LFM)是推荐系统中一种重要的协同过滤算法,其核心思想是将用户-物品交互矩阵(如评分矩阵)分解为两个低秩矩阵的乘积:一个用户隐因子矩阵 \(P\) 和一个物品隐因子矩阵 \(Q\)。通过优化 \(P\) 和 \(Q\),使得它们的乘积能近似还原观测到的交互数据。交替最小二乘(ALS)是一种高效求解该矩阵分解问题的优化方法。本题目将详细讲解LFM的ALS优化过程,包括目标函数构建、交替优化步骤、正则化处理以及收敛性分析,确保你能透彻理解其每一步的计算逻辑。
解题过程
-
问题建模与目标函数
假设我们有 \(m\) 个用户和 \(n\) 个物品。用户 \(u\) 对物品 \(i\) 的观测评分记为 \(r_{ui}\)。未观测的交互(用户未评分的物品)用集合 \(\kappa\) 表示观测到的 \((u, i)\) 对。LFM的目标是找到用户隐因子矩阵 \(P \in \mathbb{R}^{m \times k}\) 和物品隐因子矩阵 \(Q \in \mathbb{R}^{n \times k}\),其中 \(k\) 是隐因子维度(通常 \(k \ll m, n\)),使得预测评分 \(\hat{r}_{ui} = p_u^T q_i\) 尽可能接近真实评分 \(r_{ui}\)。这里 \(p_u\) 是矩阵 \(P\) 的第 \(u\) 行(用户 \(u\) 的隐因子向量),\(q_i\) 是矩阵 \(Q\) 的第 \(i\) 行(物品 \(i\) 的隐因子向量)。为了防止过拟合,常加入L2正则化项。目标函数为最小化观测评分的预测误差与正则化项之和:
\[ \min_{P, Q} \sum_{(u,i) \in \kappa} (r_{ui} - p_u^T q_i)^2 + \lambda (\sum_{u} \|p_u\|^2 + \sum_{i} \|q_i\|^2) \]
其中 $ \lambda $ 是正则化系数。由于目标函数同时包含 $ P $ 和 $ Q $ 两个未知矩阵,直接优化是非凸的。但若固定其中一个矩阵,优化另一个则变成了一个**凸二次优化问题**,这就是ALS的核心思想。
-
交替最小二乘(ALS)核心思想
ALS算法采用坐标下降法:- 固定 \(Q\)(物品因子),此时目标函数仅关于 \(P\)(用户因子)是凸的。可以独立求解每个用户 \(u\) 的最优 \(p_u\),因为不同用户的目标项是分离的(用户之间没有共享参数)。
- 固定 \(P\)(用户因子),此时目标函数仅关于 \(Q\)(物品因子)是凸的。同样可以独立求解每个物品 \(i\) 的最优 \(q_i\)。
- 交替执行上述两个步骤,直至目标函数收敛。
-
固定 \(Q\),求解用户因子 \(P\)
当 \(Q\) 固定时,对于特定用户 \(u\),其对应的优化子问题为:
\[ \min_{p_u} \sum_{i \in \mathcal{R}(u)} (r_{ui} - p_u^T q_i)^2 + \lambda \|p_u\|^2 \]
其中 $ \mathcal{R}(u) $ 是用户 $ u $ 评过分的物品集合。
* **矩阵形式推导**:将目标函数写成矩阵形式有助于求解。令 $ Q_u $ 是一个 $ |\mathcal{R}(u)| \times k $ 的矩阵,其行由用户 $ u $ 评分过的物品对应的 $ q_i^T $ 组成。令 $ R_u $ 是一个 $ |\mathcal{R}(u)| $ 维向量,包含用户 $ u $ 对应的观测评分 $ r_{ui} $。
* 目标函数变为:$ \|R_u - Q_u p_u\|^2 + \lambda \|p_u\|^2 $。
* **求解最优 $ p_u $**:这是一个岭回归(Ridge Regression)问题。对 $ p_u $ 求导并令导数为零:
\[ -2Q_u^T (R_u - Q_u p_u) + 2\lambda p_u = 0 \]
整理得:
\[ (Q_u^T Q_u + \lambda I_k) p_u = Q_u^T R_u \]
因此,用户 $ u $ 的最优隐因子向量为:
\[ p_u = (Q_u^T Q_u + \lambda I_k)^{-1} Q_u^T R_u \]
这里 $ I_k $ 是 $ k \times k $ 的单位矩阵。**关键点**:对于每个用户 $ u $,我们只需要解一个 $ k \times k $ 的线性方程组(因为 $ k $ 很小,所以计算效率高),而不需要处理整个大矩阵。
- 固定 \(P\),求解物品因子 \(Q\)
与上一步完全对称。当 \(P\) 固定时,对于特定物品 \(i\),其对应的优化子问题为:
\[ \min_{q_i} \sum_{u \in \mathcal{R}(i)} (r_{ui} - p_u^T q_i)^2 + \lambda \|q_i\|^2 \]
其中 $ \mathcal{R}(i) $ 是对物品 $ i $ 评过分的用户集合。
* 令 $ P_i $ 是一个 $ |\mathcal{R}(i)| \times k $ 的矩阵,其行由对物品 $ i $ 评过分的用户对应的 $ p_u^T $ 组成。令 $ R_i $ 是一个 $ |\mathcal{R}(i)| $ 维向量,包含物品 $ i $ 收到的观测评分。
* 目标函数为:$ \|R_i - P_i q_i\|^2 + \lambda \|q_i\|^2 $。
* 对 $ q_i $ 求导并置零:
\[ (P_i^T P_i + \lambda I_k) q_i = P_i^T R_i \]
因此,物品 $ i $ 的最优隐因子向量为:
\[ q_i = (P_i^T P_i + \lambda I_k)^{-1} P_i^T R_i \]
-
ALS算法流程总结
- 初始化:随机初始化物品隐因子矩阵 \(Q\)(或用户隐因子矩阵 \(P\))。
- 交替优化循环,直到满足收敛条件(如目标函数值变化小于阈值,或达到最大迭代次数):
a. 固定 \(Q\),更新 \(P\):对于每个用户 \(u = 1, ..., m\),计算 \(p_u = (Q_u^T Q_u + \lambda I_k)^{-1} Q_u^T R_u\)。
b. 固定 \(P\),更新 \(Q\):对于每个物品 \(i = 1, ..., n\),计算 \(q_i = (P_i^T P_i + \lambda I_k)^{-1} P_i^T R_i\)。 - 输出:最终的用户隐因子矩阵 \(P\) 和物品隐因子矩阵 \(Q\)。预测用户 \(u\) 对物品 \(i\) 的评分为 \(\hat{r}_{ui} = p_u^T q_i\)。
-
算法特性与注意事项
- 高效性:ALS之所以在推荐系统(尤其是隐式反馈场景)中流行,是因为它天然适合并行化。在更新 \(P\) 时,每个用户 \(u\) 的计算是独立的,可以并行处理。更新 \(Q\) 时亦然。这在Spark MLlib等分布式计算框架中得到了很好支持。
- 处理隐式反馈:对于隐式反馈(如点击、观看时长),通常没有负样本。ALS可以通过加权正则化等方式进行扩展,为观测到的交互(正样本)赋予高置信度,为未观测的交互赋予低置信度,其目标函数变为加权最小二乘形式。本讲解基于显式评分,但其核心交替优化思想是相通的。
- 收敛性:由于每一步(固定一个更新另一个)都严格降低了凸子问题的目标函数值,且整体目标函数有下界(非负),因此ALS算法保证收敛到一个局部最优解(由于原问题非凸,不一定是全局最优)。
- 与SGD对比:另一种常用的优化方法是随机梯度下降(SGD)。相比之下,ALS通常迭代次数更少,但每次迭代计算量更大(需要求解线性方程组)。ALS对参数(如学习率)更不敏感,而SGD需要仔细调整学习率。在实际大规模数据中,ALS的并行性优势更明显。
通过以上步骤,我们完成了对隐语义模型(LFM)的交替最小二乘(ALS)优化过程的详细推导。其核心在于利用矩阵分解的结构,将复杂的非凸联合优化问题,转化为一系列可并行求解的小规模凸二次问题,通过交替固定变量来实现高效优化。