第 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$)的构造分两步:
- 外积扩展:用第 $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 的成对交互。
- 压缩成向量:该 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 的对比
- FM:只做二阶,且是标量级(内积),无层间显式结构。
- DNN:高阶隐式,层间是通用线性+非线性,不保证「每层对应明确几阶交互」。
- CIN:层数对应交互阶数,层间映射是「外积 + 压缩」的显式公式,可解释性强;最后把各层输出拼起来或加权求和再预测,实现显式高阶向量交互。
四、小结
CIN 的「层间特征映射」就是:上一层矩阵 $\boldsymbol{X}^{k-1}$ 与固定原始 $\boldsymbol{X}^0$ 做外积式交互,再经可学习映射压成下一层 $\boldsymbol{X}^k$;重复多层即得到 3 阶、4 阶等显式向量交互,是 xDeepFM 区别于普通 DeepFM 的核心设计。
面试要点
- 能说清 CIN 的作用:在 xDeepFM 中显式、逐层构造向量级特征交互,层数对应交互阶数。
- 能描述层间构造:上一层 $\boldsymbol{X}^{k-1}$ 与第 0 层 $\boldsymbol{X}^0$ 做外积得到 3D 张量,再经可学习压缩得到 $\boldsymbol{X}^k$。
- 能对比 CIN 与 FM(仅二阶标量)、DNN(隐式高阶):CIN 是显式、可控阶数的高阶向量交互。
记忆要点
- CIN:每层 = 上一层与 $\boldsymbol{X}^0$ 的外积交互 + 压缩;层数 = 交互阶数。
- 显式构造:外积枚举「当前层单元 × 原始 field」,再线性/卷积压成向量。
- 与 FM/DNN:CIN 显式、可控阶;FM 二阶标量;DNN 隐式高阶。