真实面经题目 · 原创解析
DCN 和 DeepFM 的特征交叉机制有什么异同?
DCN 和 DeepFM 都用于稀疏特征推荐排序,都试图同时建模低阶和高阶交叉。DeepFM 用 FM 显式建模二阶 pairwise 交叉,再用 DNN 隐式学习高阶非线性交叉;DCN 用 cross network 递推地把原始特征 x0 与当前层 xl 做显式交叉,得到有界阶数的多项式交叉。回答重点是公式、显式/隐式、交叉阶数、参数效率、可解释性和工程选型。
真实面经题目 · 原创解析
DCN 和 DeepFM 都用于稀疏特征推荐排序,都试图同时建模低阶和高阶交叉。DeepFM 用 FM 显式建模二阶 pairwise 交叉,再用 DNN 隐式学习高阶非线性交叉;DCN 用 cross network 递推地把原始特征 x0 与当前层 xl 做显式交叉,得到有界阶数的多项式交叉。回答重点是公式、显式/隐式、交叉阶数、参数效率、可解释性和工程选型。
二者相同点是都面向 CTR/排序这类高维稀疏特征场景,目标都是减少人工特征组合,同时让模型既能利用低阶交叉,也能学习更复杂的非线性关系。它们通常都会把离散特征 embedding 后输入到交叉模块和 deep 模块,再融合输出。 DeepFM = FM + DNN。FM 部分显式建模二阶特征交叉: y_FM = w0 + Σ w_i x_i + Σ_{i<j}<v_i, v_j> x_i x_j。 它的显式交叉主要是 pairwise 二阶,参数通过 embedding 内积共享;DNN 部分把 embedding 拼接后学习高阶非线性交叉,但这些高阶交叉是隐式的,不容易控制具体阶数和结构。 DCN = Cross Network + DNN。经典 cross layer 可以写成: x_{l+1} = x_0 (w_l^T x_l) + b_l + x_l。 每一层都让原始输入 x0 与当前表示 xl 交叉,L 层后能形成最高 L+1 阶的显式有界交叉。DCN-V2 等变体会用矩阵、低秩或 mixture experts 提升表达力。 主要差异:DeepFM 的显式部分是二阶 FM,高阶依赖 deep 网络隐式学习;DCN 的 cross network 是逐层显式构造高阶交叉,阶数和参数规模更可控。DeepFM 是强 baseline,适合二阶组合很重要且希望结构简单的场景;DCN 更适合需要显式高阶组合、希望减少手工 cross 且控制参数量的场景。工程上应通过 FM-only、DNN-only、Cross-only、Deep+Cross 的消融,以及离线 AUC/logloss/calibration 和线上 CTR/CVR/收益指标判断。
推荐排序里常见特征是 user、item、context、query、position 等高维稀疏特征。人工枚举 user_id x category、gender x item_tag 这类交叉成本高且泛化差,因此 DeepFM 和 DCN 都把特征交叉变成模型结构的一部分。
DeepFM 的 FM 部分继承 Factorization Machine,用 embedding 内积 <v_i,v_j> 表示两个特征同时出现时的二阶交互强度。它显式覆盖所有 pairwise 二阶组合,参数量比直接 one-hot 交叉低很多。
DeepFM 的 DNN 部分把各 field embedding 拼接后经过 MLP,理论上可以拟合高阶非线性模式。但它不会像 FM 那样清楚地告诉你某个三阶或四阶交叉是什么,学习是否充分依赖网络深度、数据量和优化效果。
DCN 的核心是 x_{l+1}=x0(w_l^T x_l)+b_l+x_l。它保留 residual,同时每层都把原始特征带回交叉计算。L 层 cross network 显式产生最高 L+1 阶的 bounded-degree feature crosses。
经典 DCN 每层参数接近 O(d),参数很省,但表达力受 rank-1 形式限制;DCN-V2 用矩阵或低秩矩阵增强表达力,参数和计算也随之增加。DeepFM 的 FM 二阶部分稳定,DNN 表达力强但可解释性和交叉可控性弱。
FM 的交叉是任意两特征 embedding 的 pairwise 内积;DCN 是原始输入和上一层组合表示的递推外积式交叉。DeepFM 更像二阶显式加深层隐式,DCN 更像显式多阶交叉加深层补充。
如果二阶特征组合已经贡献主要收益,DeepFM 简洁可靠;如果业务里多阶组合明显,如用户兴趣、场景、物品属性、位置之间有强联动,DCN/Deep & Cross 可能更有优势。最终不靠结构名判断,要做同样特征、同样训练口径下的消融和线上实验。
验证时看全量指标和切片指标:AUC、logloss、校准、GAUC、NDCG、延迟、显存、训练稳定性。风险包括 embedding 共享方式不一致导致对比不公平、cross 层过深过拟合、DNN 掩盖显式交叉收益。
经典 DCN 每层把上一层输出与原始输入做显式外积式交叉,并加上残差,因此层数递增会逐步引入更高阶的特征组合。第 L 层理论上能包含最高 L+1 阶交叉,但实际表达能力受参数形式、低秩结构和训练数据稀疏性限制。
Wide & Deep 的 wide 侧通常依赖人工构造的稀疏交叉特征,记忆能力强但工程依赖特征经验。DeepFM 用 FM 自动建模二阶交叉,并与 deep 部分共享 embedding,减少手工交叉成本,更适合大规模稀疏推荐特征。
DCN-V2 用矩阵形式或低秩 mixture 的 cross layer 替代经典向量参数,提升交叉表达能力,同时用低秩分解控制参数和计算成本。它缓解了经典 DCN 表达力不足的问题,但也更依赖正则、结构选择和线上延迟评估。
可以做消融实验:只开显式交叉、只开 deep、二者同时开,并保持 embedding、训练样本和超参尽量一致。再按特征组合稀疏度、冷启动/热用户、长尾 item 和业务切片看收益,同时检查特征重要性或交叉层输出是否确实贡献增量。
手工交叉对已知强规则有效,但覆盖有限且容易过拟合热门组合;FM 通过 embedding 内积共享统计,二阶交叉泛化较好;DCN 能显式学习高阶交叉,但高阶组合需要足够数据和正则支撑,否则会把噪声也当成有效交叉。