本文目录
摘要:本文介绍推荐系统中特征交叉与条件调制的代表方法,包括 FM 因式分解机、DCN 深度交叉网络、LHUC、PEPNet 的 PPNet,以及 SENet 与 Bilinear 交叉等。
一、为什么需要特征交叉?
不含交叉项的线性模型只能把各特征贡献相加;这不意味着数据中的特征在统计上“相互独立”,而是模型表达不了“一个特征的效果取决于另一个特征”的组合关系。例如:
- “用户近期偏好户外运动” + “物品属于露营装备” → 组合后可能产生更强的相关性
- 单独看到“近期偏好户外运动”或“露营装备”,都不足以表达这次用户—物品匹配
单个特征无法表达这种组合效应,必须进行特征交叉。
二、FM(Factorization Machines)因式分解机
2.1 核心思想
在二阶特征交叉中,如果直接为每对特征分配一个权重,参数量是 $O(n^2)$,不可接受。
FM 的解决方案:用低秩矩阵分解来表示特征交互:
\[\hat{y}(x) = w_0 + \sum_{i=1}^{n} w_i x_i + \sum_{i=1}^{n} \sum_{j=i+1}^{n} \langle v_i, v_j \rangle x_i x_j\]其中 $v_i \in \mathbb{R}^k$ 是特征 $i$ 的隐向量,参数量从 $O(n^2)$ 降为 $O(nk)$。
2.2 历史地位
- FM 是特征交叉的奠基性工作
- 后续很多模型(FFM、DeepFM 等)都是在此基础上演进
- 在很多系统中,FM 会作为基线或作为 DeepFM 等组合模型的一部分继续使用;深度模型扩展了表达能力,但不能笼统地说已经“取代”FM
三、DCN(Deep & Cross Network)
3.1 交叉网络
DCN 提出了一种显式交叉层。堆叠 $L$ 个交叉层时,能够构造最高 $L+1$ 阶的特征交互,而不是在有限层数下学习任意阶交叉:

交叉层的公式:
\[x_{l+1} = x_0\left(x_l^T w_l\right) + b_l + x_l\]其中 $x_0,x_l,w_l,b_l\in\mathbb{R}^{d}$。括号内的 $x_l^T w_l$ 是向量内积,结果为标量;随后用该标量缩放 $x_0$。它与原论文的矩阵写法 $x_0x_l^Tw_l$ 等价,因为可以先形成外积 $x_0x_l^T$ 再右乘 $w_l$,但这里加括号能避免把第一个乘号误读为逐元素乘法。
每层只需一次长度为 $d$ 的内积、一次标量—向量乘法和向量加法,因此 $L$ 个原始 Cross Layers 的时间复杂度和参数量都是 $O(Ld)$;它并不会显式构造 $d\times d$ 的外积矩阵。
优点:相比全连接网络,交叉网络能更高效地学习特征交互,且阶数随着层数自动增长。
3.2 Deep & Cross 架构

DCN 将交叉网络和深度网络并行:
- 交叉网络(Cross Net):学习显式的高阶特征交叉
- 深度网络(Deep Net):学习隐式的复杂模式
- 两者输出拼接后送入最终预测层
DCN-v2 将原始 Cross Layer 的向量参数扩展为矩阵参数,并给出低秩分解与 Mixture-of-Experts 等形式来权衡表达能力和成本。完整矩阵形式并不比原始 DCN 更省参数,只有结合低秩等配置时才能降低这部分开销。
四、从 LHUC 到 PEPNet 的 PPNet
4.1 核心思想
LHUC(Learning Hidden Unit Contributions)最初用于声学模型的说话人自适应,通过说话人相关参数缩放隐藏单元。常见的有界缩放写法是:
\[\text{output}=2\sigma(r)\odot\text{hidden}\]其范围为 $(0,2)$,既可以抑制也可以放大隐藏单元。LHUC 也允许其他正值参数化;关键思想是学习条件相关的隐藏单元贡献,而不是把 PPNet 与某一个 $\sigma(s)$ 公式直接画等号。
4.2 PPNet 中的应用
PEPNet 受 LHUC 启发,设计了 Gate Neural Unit(Gate NU);其中 PPNet 是 PEPNet 的“参数个性化”部分,而不是 LHUC 的别名。Gate NU 用个性化先验生成门控:
\[\delta=\gamma\,\sigma\!\left(W'\operatorname{ReLU}(Wx+b)+b'\right), \qquad \gamma=2\]PPNet 再用 $\delta$ 对各任务 tower 的隐藏单元逐元素缩放:
\[\text{output}_{pp}=\delta_{task}\odot\text{hidden}\]其结构可以概括为:
- Gate Net:根据用户/场景特征生成门控信号
- Tower Net:被门控信号调制的预测网络
用户/物品等个性化先验 → Gate NU → 门控权重 δ
↓
基础特征 → Task Tower → δ ⊙ hidden → 输出
工程取舍:PPNet 适合利用丰富个性化先验的排序场景,但并非“只能”用于精排;LHUC 则来自说话人自适应,二者不应当作同一个模型。是否把类似门控放入粗排,取决于延迟预算、门控网络规模、可用特征和收益。
五、SENet 与 Bilinear 交叉
5.1 SENet
SENet(Squeeze-and-Excitation Network)最初是 CV 领域的注意力机制,后被引入推荐系统:
- Squeeze:对特征做全局池化,得到特征的统计信息
- Excitation:通过全连接层学习每个特征的权重
- Scale:用学习到的权重对原始特征重新加权
在推荐系统中,SENet 可以自适应地调整特征的重要性。
5.2 Bilinear 交叉
Bilinear 交叉通过双线性变换捕捉特征间的交互:
\[f_{ij} = x_i^T W x_j\]其中 $W$ 是可学习的双线性矩阵;这是输出标量的一般写法。FiBiNET 为了保留 embedding 维度,采用的是向量形式 $(x_iW)\odot x_j$,并进一步区分共享矩阵、按字段矩阵和按字段对矩阵等参数化。相比没有可学习变换的逐元素相乘,双线性交互可以先学习跨维度变换,再形成交互特征。
SENet 与 Bilinear 交叉的直接组合代表是 FiBiNET:前者学习字段重要性,后者学习细粒度字段交互。FLEN 是另一类字段级交互模型,不应在这里作为该组合的名称。
六、特征交叉技术对比
| 方法 | 交叉阶数 | 参数量 | 适用场景 |
|---|---|---|---|
| FM | 二阶 | O(nk) | 传统推荐、基线模型 |
| DCN | 最高约 $L+1$ 阶 | $O(Ld)$(原始 Cross Net,$d$ 为输入维度) | 精排模型 |
| LHUC 启发的 PPNet | 隐式调制 | 中等 | 多任务/多场景排序(需个性化先验) |
| SENet + Bilinear | 二阶+注意力 | 中等 | 精排/粗排 |
七、总结
这些方法解决的问题并不完全相同,不能排成严格的替代或时间演进关系。更准确的关系是:
FM / DCN:显式构造交互
FiBiNET:字段重标定 + 双线性交互
LHUC / PEPNet-PPNet:按说话人或个性化先验调制隐藏表示
实践建议:
- 先用 LR/FM、DeepFM 或原始 DCN 建立可复现基线,再比较 DCN-v2 等更强结构
- 当个性化先验充足时,可以把 PPNet 作为候选;不能因其受 LHUC 启发,就把声学领域的 LHUC 直接当作推荐模块名称
- 粗排阶段按候选规模和延迟预算限制交叉层数、秩与门控开销,并用消融实验确认收益
八、参考资料
- Wang et al., Deep & Cross Network for Ad Click Predictions
- Wang et al., DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems
- Rendle, Factorization Machines
- Swietojanski et al., Learning Hidden Unit Contributions for Unsupervised Acoustic Model Adaptation
- Huang et al., FiBiNET: Combining Feature Importance and Bilinear Feature Interaction for Click-Through Rate Prediction
- Chang et al., PEPNet: Parameter and Embedding Personalized Network for Infusing with Personalized Prior Information
相关文章:
觉得有帮助?
分享给同样关注系统性能的人。