第 132 题:DeepFM的FM组件,隐向量维度的经验选择?
题目
DeepFM的FM组件,隐向量维度的经验选择?
完整讲解
一、DeepFM 的 FM 组件
FM(Factorization Machines) 部分建模二阶特征交互:对特征向量 $\boldsymbol{x}$(多由 one-hot 或嵌入展平),FM 输出
\(y_{\text{FM}} = \sum_{i} w_i x_i + \sum_{i<j} \langle \boldsymbol{v}_i, \boldsymbol{v}_j \rangle x_i x_j.\)
其中 $\boldsymbol{v}_i \in \mathbb{R}^k$ 为特征 $i$ 的隐向量,$\langle \boldsymbol{v}_i, \boldsymbol{v}_j \rangle$ 为二阶交互强度;$k$ 即隐向量维度。DeepFM 中 FM 与 DNN 共享嵌入,FM 用嵌入做二阶、DNN 用同一嵌入再经 MLP,无单独 Wide 的手工交叉。
二、隐向量维度 $k$ 的作用
- $k$ 大:交互矩阵 $\boldsymbol{v}_i^\top \boldsymbol{v}_j$ 表达力强,可区分更多交互模式;但参数量为 $O(n \cdot k)$($n$ 为特征数),易过拟合、计算也略增。
- $k$ 小:参数少、泛化好,但二阶容量不足,复杂交叉学不好。
- 经验范围:推荐场景常用 $k \in [8, 128]$;早期 DeepFM 论文与工业实践多用 16、32、64。具体可做小网格搜索(如 16/32/64)在验证集上比 AUC;或与 embedding 维度一致(若 FM 与 Deep 共享嵌入,则 $k$ 常等于 embedding dim)。
三、与其他超参的关系
- 特征数多、样本量大时可适当增大 $k$;稀疏高维时 $k$ 不宜过大,避免过拟合。
- 与 DNN 的配合:FM 负责低阶、DNN 负责高阶;$k$ 主要影响二阶部分,DNN 的层宽与深度单独调。
四、工程建议
- 默认可从 $k=32$ 或 64 起试;按 AUC 与线上 AB 微调;与 embedding 维度统一可减少配置项。
面试要点
- 能写出 FM 的二阶项 $\sum_{i<j} \langle \boldsymbol{v}_i, \boldsymbol{v}_j \rangle x_i x_j$ 及隐向量 $k$ 维的含义。
- 能说清 $k$ 大表达力强、参数多;$k$ 小泛化好、容量小;经验 8~128、常用 16/32/64。
- 能提及与 embedding 维度统一、网格搜索或验证集调参。
记忆要点
- FM 二阶:$\langle \boldsymbol{v}_i, \boldsymbol{v}_j \rangle$,$k$ 为隐向量维;$k$ 大容量大、$k$ 小泛化好。
- 经验 $k \in [8,128]$,常用 16/32/64;可与 embedding 维一致。
- 特征多样本多可略增 $k$;稀疏高维慎用大 $k$。