隐语义模型(LFM)的随机梯度下降(SGD)优化过程
题目描述
隐语义模型(Latent Factor Model, LFM)是一种协同过滤推荐算法,通过将用户-物品交互矩阵分解为低维用户隐向量和物品隐向量的乘积,预测用户对未交互物品的评分。例如,在电影推荐中,LFM将用户和电影映射到隐空间(如“题材”“风格”等维度),通过向量内积估计用户偏好。优化目标是最小化预测评分与真实评分的均方误差,同时加入正则项防止过拟合。随机梯度下降(SGD)通过逐样本迭代更新参数,实现高效求解。
解题过程
- 问题定义与目标函数
设用户集 \(U\) 和物品集 \(I\),交互矩阵 \(R \in \mathbb{R}^{|U| \times |I|}\)(例如评分数据)。LFM将用户 \(u\) 和物品 \(i\) 表示为隐向量 \(p_u, q_i \in \mathbb{R}^k\)(\(k\) 为隐维度)。预测评分为:
\[ \hat{r}_{ui} = p_u^T q_i \]
目标函数为均方误差加正则项:
\[ J = \sum_{(u,i) \in \mathcal{D}} (r_{ui} - p_u^T q_i)^2 + \lambda \left( \|p_u\|^2 + \|q_i\|^2 \right) \]
其中 \(\mathcal{D}\) 是已知评分的集合,\(\lambda\) 是正则化系数。
- 随机梯度下降的更新规则
SGD每次随机抽取一个样本 \((u,i)\) 计算梯度并更新参数:- 计算预测误差:
\[ e_{ui} = r_{ui} - p_u^T q_i \]
- 计算损失函数对 \(p_u\) 和 \(q_i\) 的梯度:
\[ \frac{\partial J}{\partial p_u} = -2e_{ui} \cdot q_i + 2\lambda p_u, \quad \frac{\partial J}{\partial q_i} = -2e_{ui} \cdot p_u + 2\lambda q_i \]
- 更新参数(学习率 \(\eta\)):
\[ p_u \leftarrow p_u + \eta (e_{ui} \cdot q_i - \lambda p_u) \]
\[ q_i \leftarrow q_i + \eta (e_{ui} \cdot p_u - \lambda q_i) \]
正则项的作用是缩小参数值,避免对少数样本过拟合。
-
算法流程与迭代细节
- 初始化:随机生成所有用户向量 \(p_u\) 和物品向量 \(q_i\)(通常服从均值为0的小方差正态分布)。
- 迭代循环:
- 随机打乱已知评分样本集 \(\mathcal{D}\)。
- 对每个样本 \((u,i) \in \mathcal{D}\):
- 计算当前预测误差 \(e_{ui}\)。
- 同步更新 \(p_u\) 和 \(q_i\)(注意:需使用更新前的参数值)。
- 终止条件:达到最大迭代次数,或损失函数变化小于阈值。
- 预测:训练后,对未知评分通过 \(\hat{r}_{ui} = p_u^T q_i\) 估计。
-
关键技巧与收敛性
- 学习率调整:可随时间衰减(如 \(\eta_t = \frac{\eta_0}{1+t}\))以稳定收敛。
- 偏置项扩展:常引入全局偏置 \(\mu\)、用户偏置 \(b_u\)、物品偏置 \(b_i\),使预测变为:
\[ \hat{r}_{ui} = \mu + b_u + b_i + p_u^T q_i \]
此时需同时更新偏置参数(如 $ b_u \leftarrow b_u + \eta (e_{ui} - \lambda b_b) $)。
- 收敛性:SGD的随机性使损失函数非单调下降,但均方误差在凸性假设下可收敛到局部最优。
- 与批量梯度下降的对比
- 批量梯度下降(BGD)每轮需计算全体样本梯度,计算量大但稳定。
- SGD单轮更新更快,尤其适合大规模稀疏数据(如推荐系统),但需仔细调参。