sgr-interview-300

第 34 题:xDeepFM的CIN模块,层间特征映射的显式构造过程?

题目

xDeepFM的CIN模块,层间特征映射的显式构造过程?


完整讲解

一、CIN 在 xDeepFM 中的角色

xDeepFM 在 FM/DeepFM 的基础上,用 CIN(Compressed Interaction Network) 显式、逐层地构造向量级特征交互,而不是 DNN 那种「隐式」的黑箱高阶交互。CIN 的每一层输出一组「交互向量」,层与层之间通过显式的特征映射(类似外积 + 压缩)得到下一层,从而可以控制交互的阶数(层数)和维度。

二、层间特征映射的显式构造

记第 0 层为原始 embedding 矩阵:$\boldsymbol{X}^0 \in \mathbb{R}^{m \times D}$,$m$ 为 field 数(或特征组数),每行是一个 field 的 D 维 embedding。CIN 第 $k$ 层($k \geq 1$)的构造分两步:

  1. 外积扩展:用第 $k-1$ 层的输出 $\boldsymbol{X}^{k-1}$ 与第 0 层 $\boldsymbol{X}^0$ 做「每行对每行」的外积,得到一张 3D 张量。具体地,$\boldsymbol{X}^{k-1}$ 的第 $i$ 行与 $\boldsymbol{X}^0$ 的第 $j$ 行做外积,得到一个 $D \times D$ 的矩阵,所有 $(i,j)$ 拼起来得到形状与「field 数 × field 数 × 维度」相关的 3D 张量,即显式地枚举了当前层每个单元与原始每个 field 的成对交互
  2. 压缩成向量:该 3D 张量在某一维度(通常是在「新生成的 field 维」或「$D$ 维」)上通过一个可学习的压缩矩阵(或 1×1 卷积 / 线性映射)压成向量,得到第 $k$ 层的输出 $\boldsymbol{X}^k$,即每一层输出仍为「若干向量」的矩阵,维度可控(如每层 $H_k$ 个 $D$ 维向量)。

这样,第 $k$ 层的每个单元都是由「第 $k-1$ 层的表示」与「原始 $\boldsymbol{X}^0$」的显式二阶交互再压缩而来;递归地看,第 $k$ 层等价于 $k+1$ 阶的向量级特征交互(每多一层就多一次与 $\boldsymbol{X}^0$ 的交互)。

三、与 DNN、FM 的对比

四、小结

CIN 的「层间特征映射」就是:上一层矩阵 $\boldsymbol{X}^{k-1}$ 与固定原始 $\boldsymbol{X}^0$ 做外积式交互,再经可学习映射压成下一层 $\boldsymbol{X}^k$;重复多层即得到 3 阶、4 阶等显式向量交互,是 xDeepFM 区别于普通 DeepFM 的核心设计。


面试要点


记忆要点

返回模块 返回总览