1. 模型地图

协同过滤/召回
ItemCF -> MF -> DSSM/双塔 -> YouTubeDNN -> MIND/ComiRec -> 生成式召回

CTR 特征交互
LR -> FM/FFM -> Wide&Deep -> PNN/NFM/DeepFM
   -> DCN/DCNv2 -> xDeepFM/AutoInt/FiBiNET

用户兴趣与序列
DIN -> DIEN -> DSIN/BST -> SIM -> TWIN
    -> LONGER/HSTU/HyFormer

多目标
Shared-Bottom -> ESMM
              -> MMoE -> PLE/SNR

生成式推荐
SASRec/BERT4Rec -> TIGER/Semantic ID -> HSTU/OneRec/ReSID/OneReason

2. 核心概念

2.1 召回、粗排、精排、重排

  • 召回:从百万到亿级候选中找几百到几千个,优先覆盖与吞吐;
  • 粗排:用较低成本模型压缩候选,兼顾精排一致性;
  • 精排:复杂特征交互、序列建模、多任务预估;
  • 重排/混排:加入多样性、频控、广告密度、预算、拍卖和长期体验约束。

同一个模型是否合适,取决于阶段。DIN 对每个候选做 target attention,精排可接受,亿级召回不可接受;双塔可做 ANN 召回,但细粒度交叉能力较弱。

2.2 显式交互与隐式交互

  • 显式:结构保证特定阶数或形式的交叉,例如 FM 二阶项、DCN Cross Layer、xDeepFM CIN;
  • 隐式:MLP 理论上能拟合交互,但没有明确交叉结构,例如 Wide&Deep 的 deep 部分;
  • 向量级交互:保留 embedding 各维结构,如 CIN;
  • bit-wise 交互:拼接后由 MLP 在单维层面混合。

2.3 Target-aware 与 Target-agnostic

  • Target-aware,目标感知:目标候选参与用户兴趣提取。同一段历史面对不同广告会得到不同用户表示,例如 DIN 会用目标广告查询历史行为。它表达更精确,但每换一个候选都可能重算。
  • Target-agnostic,目标无关:先得到与候选无关的固定用户向量,再与不同候选打分,例如双塔。用户向量可以缓存,适合大规模召回,但难以描述“用户对这个候选具体感兴趣在哪里”。

2.4 排序能力与概率校准

AUC 高只说明正负样本相对顺序较好。广告出价需要概率绝对值,因此还要看 LogLoss、NE、ECE、分桶真实率/预测率,并做下采样先验修正或后校准。

2.5 名词解释

2.5.1 Embedding、Field

  • Embedding,嵌入表示:把离散 ID 或类别映射为可训练的低维稠密向量。例如广告 ID 可能有上亿种,不能直接使用同样长度的 one-hot 向量,因而用查表方式取出 \(d\) 维向量。相似广告在训练后通常会落在相近的向量区域。
  • Field,特征域:一组语义相同、只取一个或少量值的特征位置,例如“用户城市”“广告行业”“设备类型”。FM、FFM、AutoInt 常以 field 为交互单位。
  • One-hot,独热编码:长度等于类别总数,仅当前类别位置为 1,其余为 0。它没有类别相似性,且维度极高;Embedding 本质上等价于用 one-hot 向量从参数矩阵中取一行。

2.5.2 Pooling、Attention 与 Gate

  • Pooling,池化或聚合:把数量可变的一组向量变成固定长度向量。Sum Pooling 是求和,Mean Pooling 是求平均,Max Pooling 是逐维取最大值。简单池化不区分历史行为的重要性。
  • Attention,注意力机制:根据“查询向量”和每个候选元素的匹配程度计算权重,再加权求和。它回答的是“当前任务下应该重点看哪些输入”。
  • Self-Attention,自注意力:同一序列内部各位置相互查询,用于建模行为之间的依赖。例如“先搜索相机,再浏览镜头”具有组合意义。
  • Cross-Attention,交叉注意力:一组向量作为查询,另一组向量提供键和值。例如目标广告作为查询,从用户历史中提取相关兴趣。
  • Gate,门控:产生 0 到 1 或归一化权重,决定信息通过多少。门控可用于融合短期与长期兴趣,也可在 MMoE 中为不同任务选择专家。
  • Target Attention,目标注意力:目标候选参与权重计算,是 Cross-Attention 在推荐中的常见形式。DIN 的“局部激活单元”就属于目标注意力。

标准缩放点积注意力为:

\[\operatorname{Attention}(Q,K,V) =\operatorname{softmax}\!\left(\frac{QK^{\mathsf T}}{\sqrt d}\right)V.\]

其中 \(Q\) 是查询矩阵,\(K\) 是键矩阵,\(V\) 是值矩阵,\(d\) 是键向量维度。除以 \(\sqrt d\) 是为了避免维度较大时点积数值过大,导致 softmax 过早饱和。

2.5.3 MLP、Residual、LayerNorm 与激活函数

  • MLP,多层感知机:若干“线性变换 + 非线性激活”堆叠而成,用来学习复杂的隐式特征交互。
  • FFN,前馈网络:Transformer 中对每个 token 独立应用的 MLP,一般先升维、激活,再降维。
  • Residual Connection,残差连接:将模块输入直接加到输出上,即 \(y=x+F(x)\)。它保留原始信息并让深层网络更容易传播梯度。
  • Layer Normalization,层归一化:对单个样本某一层的特征维做标准化,稳定序列模型训练;它不依赖同一批次中的其他样本。
  • ReLU,线性整流激活\(\max(0,x)\),计算便宜,但负半轴梯度为零。
  • PReLU,参数化 ReLU:负半轴保留可学习斜率 \(ax\)
  • Dice,数据自适应激活:DIN 中常见。它根据输入分布估计“为正”的概率,在 \(x\)\(\alpha x\) 之间自适应切换,比固定零点的 PReLU 更适合分布变化明显的推荐特征。
  • SiLU/Swish,平滑门控激活\(x\sigma(x)\),既保留负值信息又具有平滑梯度,现代 Transformer 中较常见。

2.5.4 Pointwise、Pairwise 与 Listwise 排序

  • Pointwise,逐点学习:把每个样本独立看成分类或回归问题,例如用二元交叉熵预测是否点击。它直接输出概率,便于校准,但没有显式比较两个候选的先后。
  • Pairwise,成对学习:构造正样本 \(i\) 与负样本 \(j\),要求正样本分数更高。典型 BPR 损失为 \(-\log\sigma(s_i-s_j)\)。它更贴近相对排序,但输出不天然是校准概率。
  • Listwise,列表学习:一次考虑整个候选列表或其近似分布,例如 ListNet、LambdaLoss。它更贴近 NDCG 等列表指标,但样本构造与计算更复杂。

2.5.5 Softmax、负采样与对比学习

  • Softmax,归一化指数函数:把多个候选分数转为总和为 1 的概率。若物品有上亿个,计算全量分母代价太高。
  • Sampled Softmax,采样近似 Softmax:只保留正样本和少量采样负样本近似全量分类。若负样本不是均匀采样,通常需要用采样概率 \(q(i)\)\(-\log q(i)\) 修正,避免热门物品被过度采样后造成偏差。
  • In-batch Negatives,批内负样本:一个 batch 中其他样本的正物品,直接作为当前用户的负物品。它几乎不增加编码成本,但可能把用户实际喜欢、只是本次未点击的物品当成假负样本。
  • Hard Negative,困难负样本:模型容易混淆但标签为负的候选,例如已召回且分数较高、最终未点击的广告。它提供更强训练信号,但过难或含噪的负样本会破坏训练。
  • Contrastive Learning,对比学习:拉近正样本表示、推远负样本表示。双塔常用的批内 softmax 就是一种对比学习。
  • Temperature,温度系数:分数除以温度 \(\tau\) 后再做 softmax。较小的 \(\tau\) 让分布更尖锐、更强调难负样本,也可能导致梯度不稳定。

2.5.6 ANN、MIPS 与向量检索

  • ANN,近似最近邻检索:不保证找到数学上绝对最近的向量,而是在可接受误差下大幅降低检索耗时。常见索引包括 HNSW 图索引、IVF 倒排聚类和 PQ 乘积量化
  • MIPS,最大内积搜索:寻找与用户向量内积最大的物品。双塔用内积打分时,线上召回就是 MIPS 问题。
  • Recall@K,前 K 召回率:真实正样本是否出现在召回的前 K 个结果中。ANN 的系统评估要同时看 Recall@K、延迟、内存和索引更新成本。

2.5.7 显式交互、隐式交互与低秩分解

  • Explicit Interaction,显式交互网络结构明确规定如何组合特征,例如 FM 的二阶内积、DCN 的 Cross Layer。其归纳偏置清楚,更容易解释。
  • Implicit Interaction,隐式交互:把特征拼接后交给 MLP 自动学习,没有规定具体交叉形式。表达灵活,但在稀疏数据下可能更难学到有效组合。
  • Low-rank Factorization,低秩分解:用两个窄矩阵近似一个大矩阵,或用两个低维向量内积近似海量交叉参数。它假设复杂关系主要位于低维潜在空间,可减少参数和计算。

2.5.8 Calibration、Bias 与数据泄漏

  • Calibration,概率校准:预测为 0.1 的样本中应约有 10% 真正点击。广告系统常把 pCTR/pCVR 与出价相乘,因此校准错误会直接影响拍卖和预算。
  • Selection Bias,选择偏差:训练样本只来自历史策略展示过的候选,并非全空间随机样本。CVR 又只在点击样本上观察,偏差更明显。
  • Position Bias,位置偏差:高位置天然获得更多点击,标签同时反映相关性和展示位置。可加入位置特征、做随机实验或使用反事实估计缓解。
  • Data Leakage,数据泄漏:训练时使用了预测时不可获得的信息,例如把转化后的行为、未来统计量或目标样本本身混入历史序列。离线指标会虚高,线上无法复现。

3. 经典召回与表示学习

3.1 ItemCF / UserCF

使用阶段: Item-based Collaborative Filtering,基于物品的协同过滤;User-based Collaborative Filtering,基于用户的协同过滤。二者都属于邻域方法,主要用于召回,也可作为排序特征。

解决的问题: 在没有完整内容理解的情况下,利用“很多用户共同发生过行为”推断相似性。这里的 Collaborative,协同,指的是借助群体行为,而不是只看当前用户自己。

ItemCF 的计算步骤:

  1. 把曝光、点击、收藏或购买整理成用户到物品的交互集合;
  2. 对同一用户交互过的物品两两统计共现次数;
  3. 对热门物品做归一化,得到物品相似度;
  4. 取用户最近或权重最高的历史物品,查相似物品表;
  5. 将多条历史产生的候选分数累加、去重并截取 Top-K。

最常见的余弦式相似度为:

\[\operatorname{sim}(i,j) =\frac{|U_i\cap U_j|}{\sqrt{|U_i||U_j|}}.\]

其中 \(U_i\) 是与物品 \(i\) 发生过行为的用户集合,分子是同时与 \(i,j\) 交互的用户数,分母抑制两个热门物品仅因流量大而产生的虚假相似。

给用户 \(u\) 推荐物品 \(j\) 时可计算:

\[s(u,j)=\sum_{i\in I_u}w_{ui}\operatorname{sim}(i,j).\]

\(I_u\) 是用户历史物品集合,\(w_{ui}\) 可综合行为类型、行为次数和时间衰减。例如点击权重小于购买权重,较久远行为乘以 \(\exp(-\lambda\Delta t)\)

热门用户修正: 若一个用户与成千上万个物品交互,他造成的任意两物品共现可信度较低。可让该用户对共现的贡献变为 \(1/\log(1+|I_u|)\),这叫 IUF,Inverse User Frequency,逆用户频率修正。

UserCF 的差异: UserCF 先计算用户之间的相似度,再把相似用户喜欢、当前用户尚未交互的物品作为候选。它更直接地表示“相似人群喜欢什么”,但大规模系统中用户数量、兴趣变化速度和隐私约束通常使用户相似表更难维护;ItemCF 的物品关系往往更稳定。

训练与更新: 传统协同过滤没有神经网络训练过程,主要是离线计数、归一化和 Top-K 截断。工程上应处理滑动时间窗、增量更新、热门降权、行为去噪和相似表过期。

优点: 实现简单、解释性强、无需模型训练;用户刚发生一次行为后即可立刻触发相关候选,实时性好;适合成为多路召回中的高精度通道。

局限: 新用户和新物品缺少共现,存在冷启动;容易强化热门偏置和信息茧房;无法自然使用文本、图片、上下文和广告侧属性;长尾物品共现次数少,估计方差大。

3.2 Matrix Factorization

使用阶段: Matrix Factorization,矩阵分解。它把稀疏的用户-物品交互矩阵分解成用户向量和物品向量,可用于召回、相似推荐或作为下游模型的预训练表示。

核心直觉: 用户对物品的偏好虽然表面上有巨大维度,但可能主要由少数潜在因素决定,例如价格敏感度、品类偏好、内容风格。MF 不要求人为给这些因素命名,而是从交互数据中学习低维 Latent Factors,潜在因子。

预测公式为:

\[\hat r_{ui}=\mu+b_u+b_i+\mathbf p_u^{\mathsf T}\mathbf q_i.\]

\(\mu\) 是全局平均偏好,\(b_u\) 是用户整体活跃或打高分的偏置,\(b_i\) 是物品整体热门偏置,\(\mathbf p_u,\mathbf q_i\in\mathbb R^d\) 分别是用户与物品的 \(d\) 维潜在向量,内积越大表示匹配越强。

显式评分训练: 对电影评分等明确数值,可最小化平方误差并加正则:

\[\mathcal L =\sum_{(u,i)\in\mathcal D} \left(r_{ui}-\hat r_{ui}\right)^2 +\lambda\left(\|\mathbf p_u\|_2^2+\|\mathbf q_i\|_2^2+b_u^2+b_i^2\right).\]

正则项限制参数过大,避免模型只记住少量交互。可用 SGD,随机梯度下降,逐样本更新,也可用 ALS,交替最小二乘,固定用户向量求物品向量,再反过来迭代。

隐式反馈训练: 点击只能说明“观察到喜欢”,未点击不等于不喜欢,因而常见三种做法:

  1. Pointwise,逐点二分类:正样本为发生行为的 \((u,i)\),从未观察物品中采负样本,用 BCE 训练;
  2. Weighted MF,加权矩阵分解:把所有位置看作偏好 0/1,同时让已观察行为具有更高置信度;
  3. BPR,贝叶斯个性化排序:要求正物品 \(i\) 的分数高于负物品 \(j\)

BPR 损失为:

\[\mathcal L_{\mathrm{BPR}} =-\sum_{(u,i,j)}\log\sigma \left(\hat r_{ui}-\hat r_{uj}\right)+\lambda\|\Theta\|_2^2.\]

\(\sigma\) 是 Sigmoid 函数,\(\Theta\) 表示全部参数。若正负分差已经很大,损失接近 0;若负样本分数更高,模型会收到较大惩罚。

线上召回: 学到用户向量后,可对物品向量做最大内积 ANN 检索。与 ItemCF 相比,不必要求两个物品直接共现,只要它们在多个潜在因素上相似,就可能相互泛化。

优点: 参数形式简洁;从稀疏矩阵中共享统计强度;向量可用于检索、聚类和相似度分析;MF 是理解双塔与 Embedding 的重要起点。

局限: 经典 MF 主要依赖 user_id/item_id,难以直接使用年龄、时段、文本、图片等 Side Information,辅助信息;新 ID 没有向量,冷启动明显;静态用户向量难表达短期兴趣和场景变化。

3.3 DSSM / 双塔

使用阶段: DSSM 原指 Deep Structured Semantic Model,深层结构化语义模型;推荐系统中更常泛指 Two-Tower Model,双塔模型。它是大规模召回的基础结构,也可用于粗排蒸馏。

解决的问题: MF 只能学习 ID 向量,双塔让用户侧和物品侧分别输入丰富特征,同时保持两侧可分离,使所有物品向量能够离线预计算并建立 ANN 索引。

用户塔和物品塔分别编码:

\[\begin{aligned} \mathbf u&=f_{\mathrm{user}}(\mathrm{user},\mathrm{context},\mathrm{history}),\\ \mathbf v&=f_{\mathrm{item}}(\mathrm{item},\mathrm{content}),\\ \operatorname{score}(u,v)&=\mathbf u^{\mathsf T}\mathbf v \quad\text{或}\quad\cos(\mathbf u,\mathbf v). \end{aligned}\]

\(f_{\mathrm{user}}\) 可包含用户 ID、画像、场景和历史序列编码器;\(f_{\mathrm{item}}\) 可包含广告 ID、行业、文案、图像和创作者信息。\(\mathbf u,\mathbf v\) 必须位于同一向量空间。点积保留向量模长信息,余弦相似度先归一化,只比较夹角。

数据流步骤:

  1. 对离散特征做 Embedding,对连续特征归一化或分桶;
  2. 用户塔聚合画像、上下文和行为序列,输出一个固定维度用户向量;
  3. 物品塔编码物品 ID 与内容,输出同维度物品向量;
  4. 训练时提高正样本对的内积,降低负样本对的内积;
  5. 服务前批量计算全部物品向量并构建 ANN 索引;
  6. 请求到来时只算一次用户向量,检索 Top-K 物品。

批内负样本损失: 假设一个 batch 有 \(B\) 对正样本 \((u_b,i_b)\),则用户 \(u_b\) 把同 batch 的其他 \(i_k\) 当作负样本:

\[\mathcal L_b =-\log \frac{\exp(s(\mathbf u_b,\mathbf v_b)/\tau)} {\sum_{k=1}^{B}\exp(s(\mathbf u_b,\mathbf v_k)/\tau)}.\]

\(s\) 是内积或余弦分数,\(\tau\) 是温度系数。一个 batch 越大,免费获得的负样本越多,但显存和跨卡通信成本也更高。

为什么负采样很关键: 随机负样本通常太容易,模型很快学会;曝光未点击或 ANN 近邻属于困难负样本,更能训练决策边界。若按物品热度 \(q(i)\) 采样,热门物品在分母中出现更频繁,可将 logit 改成 \(s(u,i)-\log q(i)\) 做采样偏差修正。批内负样本也可能是假负样本:其他用户点击的广告可能同样适合当前用户,只是尚未曝光。

内积、余弦和欧氏距离: 当向量都做 L2 归一化时,

\[\|\mathbf u-\mathbf v\|_2^2 =2-2\mathbf u^{\mathsf T}\mathbf v,\]

所以最大化余弦等价于最小化欧氏距离。未归一化的内积还利用模长表达热度或置信度,但热门物品可能因向量模长大而占优。

蒸馏精排: 让表达力强的精排模型作为 Teacher,教师,为大量用户-候选对产生软分数;双塔 Student,学生,同时学习点击标签和教师分数。它可以把部分交叉特征知识压入可检索空间,但双塔的可分解结构仍决定了表达上限。

优点: 检索复杂度低;物品向量可缓存;能够融合 ID、画像和多模态内容;对新物品可依靠内容侧特征获得向量。

局限与工程成本: 用户与物品在最终点积前没有细粒度交叉;一个固定用户向量难表达多峰兴趣;负采样分布直接影响效果;ANN 索引存在近似误差、内存消耗、增量更新与新鲜度问题。

与后续模型的关系: YouTube DNN 是双塔思想的经典工业化方案;MIND 把一个用户向量扩展为多个兴趣向量;DIN 则放弃物品侧完全可分离,用候选广告查询历史,更适合精排而非亿级召回。

双塔分别编码用户和物品,用内积或余弦训练匹配空间。训练常用采样 Softmax、批内负样本和困难负样本,线上预计算物品向量并做 ANN 最大内积检索。它把高表达特征编码与大规模检索结合起来,但打分前两侧没有交叉,所以负样本设计、多兴趣表示和精排蒸馏是主要改进方向。

3.4 YouTube DNN Candidate Generation

使用阶段: YouTube 深度候选生成模型,是“候选生成 + 排序”两阶段工业推荐架构中的召回模型。Candidate Generation 指从海量视频中生成少量候选,不负责最终精细排序。

输入与输出: 输入包含用户观看历史、搜索历史、用户属性和地理等上下文。早期方案将可变长历史的物品 Embedding 求平均,得到固定长度表示,再与其他特征拼接进入 MLP。输出层把“下一个会观看的视频”视为超大规模多分类问题。

训练目标: 对一次观看事件 \((u,i^+)\),理想的全量 Softmax 为:

\[p(i^+\mid u) =\frac{\exp(\mathbf v_{i^+}^{\mathsf T}\mathbf u)} {\sum_{j\in\mathcal V}\exp(\mathbf v_j^{\mathsf T}\mathbf u)}.\]

\(\mathcal V\) 是全部视频集合,\(\mathbf u\) 是用户网络输出,\(\mathbf v_j\) 是分类器中第 \(j\) 个视频的权重向量。由于分母可能包含百万到亿级视频,训练用 Sampled Softmax,只计算正样本与少量采样负样本。线上把输出分类器权重当作视频向量,近邻搜索与用户向量内积最大的候选。

工业设计为何重要:

  1. 按用户等权采样:若按所有观看事件均匀采样,超活跃用户会贡献大量样本并主导损失;按用户采样让不同用户权重更均衡。
  2. Example Age,样本年龄:内容流行度随时间变化。加入训练样本距离训练截止时刻的年龄,让模型知道旧样本所处时间;在线预测时年龄设为 0,从而更偏向新鲜内容。
  3. 避免泄漏:构造某次观看的用户历史时,只能使用该时刻之前的行为,不能把未来观看或目标视频混入平均池化。
  4. 召回与排序分工:召回优化覆盖和吞吐,后续排序再加入更多候选相关特征与观看时长目标。

优点: 给出了超大类别分类、采样训练和近邻服务的完整工业闭环;历史、搜索和画像能统一进入用户表示;结构简单且可扩展。

局限: 对历史直接平均会丢失顺序与多兴趣;用户向量与目标候选无关;采样 Softmax 的训练分布与线上候选分布可能不一致;物品快速变化时要处理索引更新。

与普通双塔的关系: 它本质上是双塔式可分解召回,但论文以“用户网络 + 超大分类权重”的形式描述。更重要的贡献是样本构造、时间偏差处理和两阶段系统,而不是发明了复杂交互层。

YouTube DNN 把候选生成建模为预测下一视频的超大多分类,用户侧聚合观看和搜索历史,通过采样 Softmax 训练,线上把输出层视频权重作为物品向量做 ANN。面试重点不仅是网络,还包括按用户等权采样、样本年龄特征和严格的时间切分,这些用于控制活跃用户偏置、内容非平稳和数据泄漏。

3.5 MIND / ComiRec 多兴趣召回

使用阶段: MIND 是 Multi-Interest Network with Dynamic Routing,多兴趣动态路由网络;ComiRec 是 Controllable Multi-Interest Framework,可控多兴趣推荐框架。二者主要解决召回阶段“一个用户只有一个向量”的表达瓶颈。

问题背景: 一个用户可能同时喜欢篮球、数码和旅行。普通双塔把所有历史压成 \(\mathbf u\),不同兴趣会相互平均,导致用户向量落在没有明确语义的中间区域。多兴趣模型输出 \(K\) 个用户向量,每个向量负责一个潜在兴趣簇。

MIND 的数据流:

  1. 将历史行为物品映射为 Embedding 序列 \(\mathbf e_1,\ldots,\mathbf e_L\)
  2. 用 Behavior-to-Interest 动态路由,将行为向量软分配到 \(K\) 个兴趣胶囊;
  3. 多轮更新“行为属于哪个兴趣”的耦合权重;
  4. 得到兴趣向量 \(\mathbf u_1,\ldots,\mathbf u_K\)
  5. 训练时用目标物品选择最相关兴趣;
  6. 线上每个兴趣向量独立 ANN 召回,再合并、去重和重排。

动态路由是什么: Dynamic Routing,动态路由,来自胶囊网络。它不是固定地按时间或品类切分历史,而是迭代完成软聚类。简化写法为:

\[\begin{aligned} c_{tk}&=\operatorname{softmax}_k(b_{tk}),\\ \mathbf z_k&=\sum_{t=1}^{L}c_{tk}\mathbf S\mathbf e_t,\\ \mathbf u_k&=\operatorname{squash}(\mathbf z_k),\\ b_{tk}&\leftarrow b_{tk}+(\mathbf S\mathbf e_t)^{\mathsf T}\mathbf u_k. \end{aligned}\]

\(c_{tk}\) 表示第 \(t\) 个行为分给第 \(k\) 个兴趣的软权重;\(b_{tk}\) 是尚未归一化的一致性分数;\(\mathbf S\)变换矩阵;Squash,压缩函数,保持方向并把向量长度压到 0 到 1。若行为与某兴趣方向一致,内积会增大,下一轮该行为被分给该兴趣的权重也会上升。

目标感知的兴趣选择: 训练样本只有一个目标物品 \(i\),需要确定哪个兴趣负责预测它。可选与目标向量内积最大的兴趣:

\[k^*=\arg\max_k\mathbf u_k^{\mathsf T}\mathbf v_i, \qquad s(u,i)=\mathbf u_{k^*}^{\mathsf T}\mathbf v_i.\]

这一步叫 Label-aware Attention,标签感知注意力。也可用带温度的 Softmax 对多个兴趣加权。注意它只在训练或对候选打分时使用目标物品,线上全库召回前不能为每个物品重新聚合兴趣。

ComiRec 的两种兴趣提取: ComiRec-DR 使用 Dynamic Routing,动态路由;ComiRec-SA 使用 Self-Attention,自注意力,让 \(K\) 个可学习查询分别关注历史中的不同部分。ComiRec 还强调可控聚合,在合并多兴趣候选时加入品类覆盖或多样性目标,而不是只按相关性取分数最高的物品。

训练与服务: 训练仍可使用采样 Softmax 或批内负样本。线上通常每个兴趣取 Top-\(N\),得到最多 \(K\times N\) 个候选,去重后再统一打分。可以根据用户历史复杂度动态决定 \(K\),避免短历史用户产生多个噪声兴趣。

优点: 减少多峰兴趣被平均的问题;一位用户可从多个语义区域召回候选;提升长尾覆盖和结果多样性;仍保留双塔可 ANN 检索的优点。

局限与工程成本: \(K\) 需要调节;多个兴趣可能学成相同方向,称为 Interest Collapse,兴趣塌缩;路由迭代和多次 ANN 增加延迟;训练时由目标选择兴趣,线上却要先独立召回,存在训练与推理差异;多路候选合并容易被热门兴趣占满。

与 DIN 的关系: MIND 为了全库召回,必须提前产出有限个目标无关兴趣向量;DIN 在候选已经缩小后,可让每个候选直接查询完整历史。因此 MIND 更适合召回,DIN 更适合精排,二者不是替代关系。

MIND 针对单用户向量无法表达多峰兴趣的问题,用胶囊动态路由把行为软聚成 \(K\) 个兴趣向量,训练时由目标物品选择最相关兴趣,线上对每个兴趣分别 ANN 召回再合并。它兼顾表达力和可检索性,但要处理兴趣塌缩、\(K\) 的选择、多次检索成本以及训练与推理不一致。

4. CTR 特征交互模型

4.1 Logistic Regression

使用阶段: Logistic Regression,逻辑回归。虽然名字包含“回归”,它在 CTR 中是二分类概率模型,常用于排序基线、在线学习、校准层,也常作为复杂模型的最后输出层。

输入与输出: 输入 \(\mathbf x\) 可以包含连续特征、分桶后的类别特征、one-hot 特征和人工交叉特征;输出是点击概率 \(p\)

\[\begin{aligned} p(y=1\mid\mathbf x)&=\sigma(\mathbf w^{\mathsf T}\mathbf x+b),\\ \mathcal L&=-y\log p-(1-y)\log(1-p). \end{aligned}\]

\(\mathbf w\) 是各特征权重,\(b\) 是全局偏置,\(\sigma(z)=1/(1+e^{-z})\) 把任意实数映射为 0 到 1。\(y\in\{0,1\}\) 是点击标签,\(\mathcal L\) 是 Binary Cross-Entropy,二元交叉熵,也就是负对数似然。

如何解释权重: 特征 \(x_i\) 增加 1 时,点击 Odds,几率 \(p/(1-p)\),会乘以 \(e^{w_i}\)。因此 LR 的系数具有较清楚的统计含义。但在强相关特征、哈希冲突和人工交叉很多时,不能把单个权重直接当作因果作用。

稀疏 CTR 为什么常用 FTRL: FTRL 是 Follow-The-Regularized-Leader,带正则的在线累积优化。它为每个参数累计历史梯度,并结合 L1、L2 正则更新:

  • L1 正则会把大量不重要的稀疏特征权重压成精确的 0,节省内存;
  • 自适应学习率让频繁特征更新更谨慎、低频特征仍能获得足够步长;
  • 参数可按新流量持续增量更新,适合分布不断变化的广告系统。

人工交叉的作用: 原始 LR 只有 \(\sum_iw_ix_i\),不能自动表示“城市=北京且行业=教育”这一组合。若显式加入 \(x_{\text{北京}}\times x_{\text{教育}}\),LR 就能给该组合独立权重。因此“LR 是线性模型”是指它对已经构造好的输入线性,不代表它对原始业务变量只能表达简单关系。

样本下采样后的先验修正: 广告点击率很低,训练常下采样负样本。若正样本保留率为 \(r_1\)、负样本保留率为 \(r_0\),模型学到的是采样分布概率 \(p_s\),可修正真实 Odds:

\[\frac{p}{1-p} =\frac{p_s}{1-p_s}\frac{r_0}{r_1}.\]

等价地,在 logit 上加 \(\log(r_0/r_1)\)。若不修正,AUC 可能不变,但 pCTR 会严重偏高。

优点: 训练和推理快;适合超高维稀疏输入;权重可分析;在线更新方便;概率通常比纯排序损失更容易校准,是非常重要的基线。

局限: 原始结构只有一阶;大量人工交叉依赖经验且组合爆炸;每个交叉拥有独立权重,低频组合无法共享统计强度;难以直接建模序列和图像文本。

LR 用线性 logit 加 Sigmoid 输出 CTR,并用二元交叉熵训练。它对输入是线性的,但加入人工交叉后可表达原始变量的组合关系。广告系统常配合 FTRL 做稀疏在线学习,并在负样本下采样后修正概率先验。它稳定、可校准,但自动交叉和表示泛化能力弱,这推动了 FM 与深度模型的发展。

4.2 Factorization Machine

使用阶段: Factorization Machine,因子分解机。它在 LR 的一阶项上加入可泛化的二阶特征交互,可用于 CTR 排序或作为 DeepFM 等模型的浅层分支。

为什么不用独立交叉权重: 若有百万稀疏特征,直接为每对特征学习 \(w_{ij}\) 需要约万亿参数,而且大多数特征对从未共同出现。FM 假设交叉权重矩阵是低秩的,用两个 \(k\) 维向量内积近似 \(w_{ij}\)

\[\hat y=w_0+\sum_iw_ix_i+\sum_{i<j}\langle\mathbf v_i,\mathbf v_j\rangle x_ix_j.\]

\(w_0\) 是全局偏置,\(w_i\) 是一阶权重,\(\mathbf v_i\in\mathbb R^k\) 是第 \(i\) 个特征的潜在向量,\(\langle\mathbf v_i,\mathbf v_j\rangle\) 是二者内积。若两个特征没有直接共现,只要它们分别与其他相似特征共享过训练信号,向量仍可能学出合理交叉值。

计算为何是 \(O(nk)\) 直接枚举二阶项需要 \(O(n^2k)\)。利用“和的平方减平方的和”可改写为:

\[\sum_{i<j}\langle\mathbf v_i,\mathbf v_j\rangle x_ix_j =\frac12\sum_{f=1}^{k}\left[\left(\sum_i v_{if}x_i\right)^2-\sum_i(v_{if}x_i)^2\right].\]

\(f\) 是潜在向量的第 \(f\) 维。实际 CTR 样本中只有少量非零特征,复杂度还可按非零数计算,非常适合稀疏输入。

一个直观例子: 对“男性、北京、游戏广告”三个非零特征,FM 会同时计算“男性×北京”“男性×游戏”“北京×游戏”。与 LR 人工给每个组合独立权重不同,三个交叉通过各自 Embedding 的内积产生。

输出与损失: \(\hat y\) 是 logit 时,可再接 Sigmoid 并用 BCE 训练;做评分预测时也可直接使用平方损失。Embedding、一阶权重和偏置通过同一个目标端到端更新。

优点: 自动学习全部二阶交叉;对极稀疏组合具有参数共享和泛化能力;复杂度与非零特征数近似线性;是很多后续模型理解低阶交互的基础。

局限: 只显式建模二阶;同一个特征无论与哪个特征域交互都使用同一向量;所有特征对默认同一种内积形式,无法根据样本动态决定哪些交互更重要;序列被压成静态特征后会丢失顺序。

与 LR 的关系: 把所有 \(\mathbf v_i\) 设为 0,FM 就退化为 LR。FM 的关键不是“用了 Embedding”,而是用低秩向量内积替代海量独立二阶参数。

FM 在 LR 上增加全部二阶交叉,用特征潜在向量内积表示每个交叉权重。低秩共享让从未直接共现的稀疏特征也能泛化,且通过代数改写把计算降到 \(O(nk)\)。它解决了人工交叉和参数爆炸,但显式表达仍停留在二阶,且所有特征域共享同一种交互方式。

4.3 FFM / FwFM

FFM 是 Field-aware Factorization Machine,域感知因子分解机;FwFM 是 Field-weighted Factorization Machine,域加权因子分解机。

FFM 解决的问题: FM 中“用户年龄=20”只有一个向量,但它与“广告行业”交互和与“设备类型”交互的语义不同。FFM 让同一特征面对不同 Field,特征域,时使用不同向量:

\[\left\langle\mathbf v_{i,\operatorname{field}(j)}, \mathbf v_{j,\operatorname{field}(i)}\right\rangle x_ix_j.\]

\(\mathbf v_{i,\operatorname{field}(j)}\) 表示特征 \(i\) 专门用于和 \(j\) 所在域交互的向量。例如“北京”与“广告行业”交互使用一套参数,与“星期几”交互使用另一套参数。

FFM 的代价: 若有 \(F\) 个域,同一特征最多需要 \(F-1\) 个向量,参数量约为 FM 的 \(F\) 倍;二阶计算也难以使用 FM 的统一 \(O(nk)\) 化简。它在 CTR 竞赛和中等规模数据上常很强,但在超大 ID 系统中内存与在线延迟明显。

FwFM 如何折中: FwFM 仍为每个特征保留一个 Embedding,但为每对特征域学习标量权重 \(r_{f_i,f_j}\)

\[y_{\mathrm{FwFM}} =\sum_{i<j}r_{f_i,f_j} \langle\mathbf v_i,\mathbf v_j\rangle x_ix_j.\]

\(r_{f_i,f_j}\) 表示某两类域整体上应有多强的交互。例如“用户年龄×广告行业”可以比“设备品牌×星期”获得更大权重。它无法像 FFM 那样为每个特征准备多套方向不同的向量,但参数和显存更可控。

优点: FFM 能表达域相关语义,通常比 FM 更细致;FwFM 在表达力和成本之间提供实用折中。

局限: 二者仍以二阶交互为主;FFM 参数巨大,FwFM 的域对标量较粗;低频域对可能过拟合;线上还要处理特征哈希和参数服务器带宽。

FFM 认为同一特征面对不同特征域时语义不同,因此为“特征×对方域”学习不同向量,表达力强但参数约为 FM 的域数倍。FwFM 只保留一套特征向量,再给每个域对增加标量权重,用较低成本近似域差异。

4.4 GBDT + LR

结构: GBDT 是 Gradient Boosting Decision Tree,梯度提升决策树;与 LR 组合后形成“树模型自动产生交叉特征,线性模型输出概率”的两阶段架构。

数据流步骤:

  1. 用用户、广告、上下文和统计特征训练多棵提升树;
  2. 每个样本在每棵树中沿判断条件走到一个叶子;
  3. 把“命中了哪片叶子”编码为稀疏 one-hot;
  4. 拼接原始特征或其他稀疏特征,训练 LR 输出 pCTR。

假设有 3 棵树,每棵 4 个叶子,某样本命中第 1、3、2 号叶子,则得到长度 12、只有 3 个位置为 1 的向量。一个叶子路径可能等价于“年龄小于 25 且晚间访问且广告价格低”,因此树自动完成了阈值划分和高阶条件组合。

GBDT 如何训练: 每一轮新树拟合当前模型损失的负梯度或残差。对于二分类,树不断修正上一轮的 logit 误差。Boosting,提升,指弱树按顺序叠加成为强模型,不是所有树完全独立。

为什么后面还接 LR: 叶子已经是离散组合特征,LR 可以高效组合大量叶子并输出较易校准的概率;也便于将其他业务特征一起加入。传统方案中 GBDT 与 LR 往往分阶段训练,LR 的梯度不会反向改变树结构。

优点:连续变量的非线性阈值、缺失值和统计特征很强;特征缩放要求低;叶子路径有一定可解释性;工程成熟。

局限: 两阶段表示不是端到端联合优化;新数据到来时重训树和叶子编码较麻烦;对百万级 ID Embedding、文本图像和长序列不自然;叶子分布变化会使后级 LR 特征漂移。

GBDT+LR 先用提升树学习连续阈值和条件组合,再把每棵树命中的叶子 one-hot 交给 LR 输出概率。GBDT 负责自动交叉,LR 负责稀疏组合和校准。它在统计特征上很稳,但分阶段训练、ID 泛化和序列建模能力不如端到端深度模型。

4.5 Wide & Deep

使用阶段: Wide & Deep,宽度与深度联合模型,主要用于排序。Wide 侧负责 Memorization,记忆已观察到的有效规则;Deep 侧负责 Generalization,泛化到未直接见过但表示相似的组合。

Wide 部分: 线性模型接原始稀疏特征和人工 Cross-product Transformation,交叉乘积特征。例如:

\[\phi_k(\mathbf x)=\prod_{i=1}^{d}x_i^{c_{ki}}, \qquad c_{ki}\in\{0,1\}.\]

\(c_{ki}=1\) 表示第 \(k\) 个交叉是否包含特征 \(i\)。若“用户已安装某应用”和“候选应用属于同类”这一组合历史上转化很好,Wide 可直接记住较大的正权重。

Deep 部分: 类别特征先查 Embedding,将各 Field 向量与连续特征拼接,再经多层 MLP。不同 ID 可通过邻近 Embedding 共享统计强度,从而给未出现过的组合合理分数。

\[\operatorname{logit}=\mathbf w_{\mathrm{wide}}^{\mathsf T}\mathbf x_{\mathrm{wide}} +\mathbf w_{\mathrm{deep}}^{\mathsf T}\mathbf h_{\mathrm{deep}}+b.\]

\(\mathbf h_{\mathrm{deep}}\) 是 MLP 最后一层表示。两侧 logit 相加后接 Sigmoid,并由同一个 BCE 联合训练;不是先训练 Wide 再训练 Deep。

为什么两侧都需要: 纯 Wide 依赖频繁共现,无法为低频或新组合泛化;纯 Deep 可能 Over-generalize,过度泛化,例如因为两个应用向量相近而推荐一个不合业务规则的替代品。Wide 像精确规则,Deep 像平滑相似性。

输入输出与训练: Wide 与 Deep 可使用相同原始样本,但特征处理不同。输出是点击、安装或购买概率;训练常用 BCE,并可配合 FTRL 更新 Wide、AdaGrad 或 Adam 更新 Deep。

优点: 同时保留稀疏规则记忆和向量泛化;结构清楚;宽侧易加入业务交叉;联合训练使两部分围绕同一目标分工。

局限: Wide 侧仍依赖人工设计交叉,容易遗漏并产生组合爆炸;Deep 侧通过 MLP 隐式学习交互,样本效率和可解释性有限;两套特征工程会增加维护成本。

与 DeepFM/DCN 的关系: DeepFM 用 FM 自动产生二阶交互,减少 Wide 人工交叉;DCN 用 Cross Network 递归产生有界高阶交互。它们都保留“显式交互 + 深层隐式交互”的思想。

Wide&Deep 将记忆与泛化放在一个联合目标中:Wide 用线性模型和人工交叉记住高置信组合,Deep 用 Embedding 与 MLP 泛化到未见组合。它的关键是两种归纳偏置互补,不只是把两个网络拼在一起。局限是 Wide 仍需人工交叉,因此后续 DeepFM 和 DCN 重点解决自动交互。

4.6 PNN

Product-based Neural Network,基于乘积的神经网络。它发现仅把各 Field Embedding 拼接给 MLP,乘法式组合不一定容易学,因此在输入层和 MLP 之间增加 Product Layer,乘积层。

结构步骤:

  1. 每个非零 Field 得到向量 \(\mathbf e_i\)
  2. Linear Signal,线性信号,保留各 Field 的原始向量信息;
  3. Product Signal,乘积信号,显式计算字段对;
  4. 将线性信号和乘积信号拼接,送入 DNN 预测 CTR。

IPNN,内积 PNN: 对字段 \(i,j\) 计算标量:

\[p_{ij}^{\mathrm{inner}}=\langle\mathbf e_i,\mathbf e_j\rangle.\]

它参数和计算较省,但将 \(d\) 维交互压成一个数,细节损失较大。

OPNN,外积 PNN: 计算矩阵:

\[\mathbf P_{ij}^{\mathrm{outer}}=\mathbf e_i\mathbf e_j^{\mathsf T}.\]

外积保留“第 a 维与第 b 维如何组合”,表达更丰富,但每个字段对产生 \(d\times d\) 矩阵,通常需要求和、低秩化或核技巧降低成本。

为什么乘积层有效: MLP 的线性层加激活可以逼近乘法,但要从稀疏数据中自己发现这种关系。Product Layer 把“两个特征共同出现”作为明确输入,提供更适合 CTR 的归纳偏置。

优点: 减少人工交叉;显式向 DNN 提供字段对乘法信号;IPNN/OPNN 提供不同表达力与成本选择。

局限: 字段对数量为 \(O(F^2)\);OPNN 内存和计算更大;乘积层主要显式表示二阶,高阶仍由 MLP 隐式学习;所有字段对都算可能引入噪声。

与 DeepFM 的关系: PNN 把各对乘积作为 DNN 输入,DeepFM 则让 FM 分支直接输出二阶分数并与 DNN 分支相加。PNN 的交互更深地参与后续非线性,DeepFM 的结构更简洁。

PNN 在 Embedding 和 MLP 之间加入乘积层,IPNN 用字段向量内积,OPNN 用外积,直接向深网提供乘法式二阶关系。它比纯拼接 MLP 更有交互归纳偏置,但字段对是平方复杂度,外积版本尤其昂贵。

4.7 NFM

Neural Factorization Machine,神经因子分解机。它把 FM 的二阶交互保留为向量,再交给 MLP 学习非线性组合

Bi-Interaction Pooling,双交互池化: “Bi” 表示两两交互,“Pooling”表示把数量众多的特征对聚成一个固定长度向量:

\[\mathbf z=\sum_{i<j}(\mathbf v_ix_i)\odot(\mathbf v_jx_j) =\frac12\left[\left(\sum_i\mathbf v_ix_i\right)^2-\sum_i(\mathbf v_ix_i)^2\right].\]

\(\odot\) 是逐元素乘法;公式中的平方也是逐元素平方。\(\mathbf z\) 的维度仍是 Embedding 维度 \(k\),不会随 Field 数平方增长。与 FM 最终把交互向量所有维度求和成标量不同,NFM 保留每一潜在维度上的交互强度。

完整结构: 稀疏输入先查 Embedding,经过双交互池化得到 \(\mathbf z\),可接 BatchNorm、Dropout,再送入 MLP,最后输出:

\[\hat y=w_0+\sum_iw_ix_i +\mathbf h^{\mathsf T}\operatorname{MLP}(\mathbf z).\]

为什么可学高阶: \(\mathbf z\) 已包含所有二阶乘积,后续 MLP 对这些二阶信号做非线性组合,能够隐式形成更高阶模式。例如某隐藏单元可同时响应“年龄×行业”和“时段×设备”的组合。

优点: 计算仍近似 \(O(nk)\);比 FM 的标量二阶和更有表达力;无需显式枚举所有字段对;参数量通常比 PNN 外积小。

局限: 所有二阶交互先求和,无法知道某个信号具体来自哪一对 Field,存在信息混叠;高阶交互仍由 MLP 隐式获得;池化过早可能让重要与噪声交互相互抵消。

与 FM、DeepFM 比较: FM 对二阶交互直接线性求和;NFM 将聚合后的二阶向量送入深网;DeepFM 的深网输入是原始 Field Embedding 拼接,同时另有 FM 分支。NFM 更强调“先交互、再深层”,DeepFM 更强调“低阶与高阶并行”。

NFM 对所有特征对做逐元素乘法,再用双交互池化聚成一个 Embedding 维向量,交给 MLP 学习非线性高阶模式。它保持 FM 的线性计算复杂度并增强表达力,但所有字段对过早求和会丢失交互来源。

4.8 DeepFM

Deep Factorization Machine,深度因子分解机,是 CTR 精排的经典基线。它用 FM 分支学习一阶和显式二阶交互,用 DNN 分支学习隐式高阶交互。

数据流步骤:

  1. 每个类别 Field 查共享 Embedding,连续特征可直接输入或先做变换;
  2. FM 分支计算一阶项和所有二阶内积;
  3. DNN 分支把各 Field Embedding 按固定顺序拼接,经过多层 MLP;
  4. 两个分支的 logit 相加,接 Sigmoid 输出概率。

\[\operatorname{logit}=y_{\mathrm{FM}}+y_{\mathrm{DNN}}.\]

\(y_{\mathrm{FM}}\) 包括线性一阶项和二阶向量内积;\(y_{\mathrm{DNN}}\) 是 MLP 的标量输出。两侧由同一个 BCE 端到端训练。

共享 Embedding 的意义: Wide&Deep 中 Wide 的人工交叉与 Deep 的 Embedding 可以是两套表示;DeepFM 让 FM 和 DNN 使用同一套向量。低阶交互为稀疏特征提供直接梯度,高阶分支又让向量服务复杂组合,参数更少、训练更紧凑。

为什么不需要人工 Wide Cross: FM 自动为任意非零特征对产生二阶分数,因此无需枚举“城市×行业”等 Wide 特征。不过它只保证二阶,DNN 是否学到有效三阶以上关系仍取决于数据、宽度和优化。

优点: 同时建模低阶与高阶;自动二阶交互;共享 Embedding 降低参数;结构简单、实现成熟,常作为判断新模型是否真正有效的强基线。

局限: FM 默认所有 Field Pair 使用相同内积且没有动态重要性;显式部分只有二阶;DNN 的高阶交互是隐式的;拼接输入维度随 Field 数增加;共享 Embedding 也可能让低阶和高阶分支产生梯度冲突。

与 Wide&Deep 比较: Wide&Deep 的显式记忆可精确承载业务人工规则,DeepFM 的 FM 则自动泛化二阶。若业务中少数手工规则非常关键,可以在 DeepFM 外仍保留线性规则分支。

与 DCN 比较: DeepFM 的高阶主要依赖 MLP,DCN 用 Cross Layer 显式地产生有限阶交叉。DeepFM 更简单,DCN 更强调可控高阶结构。

DeepFM 由共享 Embedding 的 FM 和 DNN 两个分支组成,FM 自动学习一阶与显式二阶,DNN 从字段向量拼接中隐式学习高阶,两个 logit 相加训练。它相对 Wide&Deep 减少了人工交叉,是强 CTR 基线;局限是显式部分只有二阶,且所有字段对默认同一种内积。

4.9 DCN

DCN 是 Deep & Cross Network,深度与交叉网络。它用 Cross Network 显式构造有界阶数特征交互,同时保留 Deep Network 学习隐式关系,可并联或串联用于 CTR 排序。

输入: 将所有 Field Embedding 与连续特征拼成 \(\mathbf x_0\in\mathbb R^d\)。Cross Network 的第 \(l\) 层为:

\[\mathbf x_{l+1}=\mathbf x_0(\mathbf x_l^{\mathsf T}\mathbf w_l)+\mathbf b_l+\mathbf x_l.\]

\(\mathbf x_l\) 是当前层表示,\(\mathbf w_l,\mathbf b_l\in\mathbb R^d\) 是参数。\(\mathbf x_l^{\mathsf T}\mathbf w_l\) 先得到一个标量,再与原始输入 \(\mathbf x_0\) 相乘;最后加残差 \(\mathbf x_l\),保留此前所有阶数的信息。

为什么每层增加一阶: 第一层含 \(\mathbf x_0(\mathbf x_0^{\mathsf T}\mathbf w_0)\),它是输入两两乘积,因此最高二阶;第二层再次乘 \(\mathbf x_0\),最高三阶。堆叠 \(L\) 层后,最高是 \(L+1\) 阶,同时残差保留低阶项。这里“阶”指原始输入变量相乘的次数。

参数为何少: 每层只有两个长度为 \(d\) 的向量,参数量 \(O(d)\)\(L\) 层为 \(O(dL)\),没有显式枚举 \(d^2\) 个特征对。代价是所有交叉通过同一个标量 \(\mathbf x_l^{\mathsf T}\mathbf w_l\) 调制,属于非常受限的低秩形式。

与 Deep 分支的组合:

  • Parallel,并联:Cross 和 MLP 都读 \(\mathbf x_0\),最后拼接输出;
  • Stacked,串联:先经过 Cross 再送 MLP,或反过来;
  • 并联让两种表示相对独立,串联让 MLP 继续加工显式交叉,实际应通过效果与延迟验证。

优点: 无需人工枚举交叉;交叉最高阶数由层数控制;参数和计算高效;显式分支与 MLP 互补。

局限: 原版 Cross Layer 的矩阵等效秩很低,不同输出维度共享同一个缩放信号,表达能力有限;把所有 Field 拼成 bit-wise,逐维,向量后,字段语义不如 CIN 清楚;高阶不一定等于有用,层数过深可能引入噪声。

DCN 的 Cross Layer 用原始输入 \(\mathbf x_0\) 反复乘当前表示,每加一层最高交互阶数增加一阶,残差保留低阶信息。它以 \(O(dL)\) 参数自动产生有界高阶交互,但原版每层只生成一个标量去缩放 \(\mathbf x_0\),表达受限,因此 DCN-V2 将其升级为矩阵交叉。

4.10 DCN-V2

DCN-V2 是 Deep & Cross Network Version 2,第二代深度交叉网络。它针对原版 DCN 的 Cross Layer 表达能力不足,引入完整矩阵变换和低秩混合专家。

核心 Cross Layer:

\[\mathbf x_{l+1}=\mathbf x_0\odot(\mathbf W_l\mathbf x_l+\mathbf b_l)+\mathbf x_l.\]

\(\odot\) 是逐元素乘法,\(\mathbf W_l\in\mathbb R^{d\times d}\)。先用矩阵让当前所有维度充分混合,再由每个 \(\mathbf x_0\) 维度逐项调制,所以不同输出维可以形成不同交叉模式,不再共享同一个标量。

成本问题: 完整矩阵每层需要 \(d^2\) 参数,输入维度大时成本很高。DCN-V2 使用 Low-rank Factorization,低秩分解:

\[\mathbf W=\mathbf U\mathbf V^{\mathsf T}, \qquad \mathbf U,\mathbf V\in\mathbb R^{d\times r},\quad r\ll d.\]

计算从 \(O(d^2)\) 降为 \(O(dr)\)\(r\) 是秩上限,越大表达越强、成本越高。

CrossNet-Mix,混合交叉网络: 使用多个低秩专家表示不同交叉子空间,并由门控按样本融合:

\[\mathbf x_{l+1} =\mathbf x_l+\sum_{e=1}^{E}g_e(\mathbf x_l) \left[\mathbf x_0\odot \mathbf U_e\,\phi\!\left(\mathbf V_e^{\mathsf T}\mathbf x_l\right)\right].\]

\(E\) 是专家数,\(g_e\) 是经过 Softmax 的门控权重,\(\phi\) 是非线性激活。不同样本可选择不同专家,例如价格敏感用户与品牌敏感用户走不同交叉子空间。

Stacked 与 Parallel: DCN-V2 系统比较了串联和并联结构。并联将 Cross 输出与 DNN 输出拼接;串联让 Cross 结果继续进入 DNN。没有一条结构对所有数据都绝对最好,要结合参数量与特征分布验证。

优点: 比原 DCN 的向量参数表达更强;显式构造有界高阶;低秩和混合专家使精度与成本可调;适合大规模排序中的复杂特征交叉。

局限与工程点: 完整矩阵昂贵;低秩 \(r\)、专家数 \(E\)、层数和并串联方式需要联合调节;门控可能只偏向少数专家;所有输入拼接后交叉,仍需注意不同 Field 尺度和连续特征归一化。

DeepFM vs DCN-V2: DeepFM 的显式部分固定为二阶 FM,高阶交给 MLP 隐式学习;DCN-V2 通过堆叠矩阵 Cross Layer 显式生成有界高阶。DeepFM 更轻更稳,DCN-V2 在交叉关系复杂、数据量足够时通常更有表达力,但成本和超参更多。

DCN-V2 将原版 DCN 的标量交叉升级为矩阵交叉,让不同输出维学习不同组合;再用低秩分解把 \(O(d^2)\) 降到 \(O(dr)\),并可通过多个低秩专家和门控按样本选择交叉子空间。它比 DCN 和 DeepFM 的显式分支更强,但需要控制矩阵、专家与路由成本。

4.11 xDeepFM

xDeepFM 可理解为 eXtreme Deep Factorization Machine,强调显式向量级高阶交互。整体由 Linear、CIN 和 DNN 三部分组成:

  • Linear,线性分支,学习一阶记忆;
  • CIN,Compressed Interaction Network,压缩交互网络,学习显式高阶;
  • DNN,深度分支,学习隐式高阶。

CIN 的输入: 假设有 \(F\) 个 Field,每个 Embedding 维度为 \(D\),输入矩阵 \(\mathbf X^0\in\mathbb R^{F\times D}\)。CIN 第 \(k\) 层的第 \(h\) 个特征图在每个 Embedding 维 \(d\) 上计算:

\[X^k_{h,d} =\sum_{i=1}^{H_{k-1}}\sum_{j=1}^{F} W^{k,h}_{ij}X^{k-1}_{i,d}X^0_{j,d}.\]

\(H_{k-1}\) 是上一层特征图数,\(W^{k,h}_{ij}\) 控制“上一层第 \(i\) 个组合”与“原始第 \(j\) 个 Field”如何继续交互。参数在 Embedding 维 \(d\) 上共享,因此模型保留向量维结构,又不会为每一维单独学习巨大矩阵。

为什么叫 Compressed,压缩: 上一层与原始 Field 做外积会产生 \(H_{k-1}\times F\) 个组合,CIN 用 \(H_k\) 组权重把这些组合压成有限个新特征图,控制组合爆炸。

交互阶数: 第一层由两个原始 Field 相乘,表示二阶;第二层将上一层二阶组合再乘原始 Field,产生三阶;多层输出池化后拼接,使模型同时保留多个阶数。

Vector-wise 与 Bit-wise: Vector-wise,向量级交互,指一个 Field Embedding 的各维作为整体按相同字段组合传播;Bit-wise,逐维交互,指把所有维度拼成普通向量后混合。CIN 更能保留“哪些字段在交互”,DCN 更偏拼接向量层面的递归交叉。

优点: 明确产生多阶 Field 级交互;同时保留线性、显式高阶和隐式高阶;相比仅用 MLP,交互来源更结构化。

局限: 层宽、层数和 Split-Half 等实现策略影响很大;计算通常高于 DeepFM;CIN 张量实现复杂;显式更高阶并不保证业务有效,字段多时可能引入大量噪声。

xDeepFM 用 Linear+CIN+DNN 同时学习一阶、显式高阶和隐式高阶。CIN 每层将上一层特征图与原始 Field 向量逐维相乘,再用共享参数压缩,因此第 \(k\) 层可产生更高一阶的向量级交互。它比 DCN 更保留字段结构,但实现和计算更复杂。

4.12 AFM

Attentional Factorization Machine,注意力因子分解机。它针对 FM 将所有二阶交互直接求和的问题,学习“当前样本中哪些特征对更重要”。

交互表示: 对每个非零特征对产生向量:

\[\mathbf p_{ij}=(\mathbf v_ix_i)\odot(\mathbf v_jx_j).\]

然后用一个小型注意力网络产生未归一化重要性,再做 Softmax:

\[\begin{aligned} e_{ij}&=\mathbf h^{\mathsf T} \operatorname{ReLU}(\mathbf W\mathbf p_{ij}+\mathbf b),\\ a_{ij}&=\frac{\exp(e_{ij})}{\sum_{m<n}\exp(e_{mn})},\\ \mathbf z&=\sum_{i<j}a_{ij}\mathbf p_{ij}. \end{aligned}\]

\(\mathbf W,\mathbf b,\mathbf h\) 是注意力网络参数,\(a_{ij}\) 是该样本中特征对 \((i,j)\) 的归一化权重,\(\mathbf z\) 再经投影输出预测。

与 FwFM 的区别: FwFM 为每个 Field Pair 学固定标量,同一域对在所有样本上权重相同;AFM 的权重由当前特征对向量动态计算,不同用户和广告可不同。

Dropout 的作用: 特征对数量多时,模型可能过分依赖少数高频交互。对交互层或注意力输出使用 Dropout,随机丢弃,有助于减少共适应和过拟合。

优点: 动态选择重要二阶交互;比 FM 等权求和更有表达力;注意力权重可用于排查模型关注了哪些交互。

局限: 主要仍是二阶;需要显式构造字段对,成本约 \(O(F^2)\);Softmax 使交互相互竞争,可能压低多个同时重要的关系;注意力权重表示模型内部贡献,不等同于因果解释或真实业务重要性。

AFM 先计算每个特征对的逐元素乘积,再用小型注意力网络按样本分配权重,解决 FM 对所有二阶交互直接求和的问题。它能动态突出重要字段对,但仍以二阶为主,且注意力权重只能解释模型行为,不能直接当成因果结论。

4.13 AutoInt

AutoInt 是 Automatic Feature Interaction,自动特征交互网络。它把每个 Field Embedding 视作一个 token,用多头自注意力动态学习字段关系。

输入与位置: CTR 字段通常没有自然时间顺序,因此 token 位置代表 Field 身份,而不是行为先后。每个 Field 的 Embedding 可先线性投影到相同维度,再进入多层 Interacting Layer,交互层。

单头注意力:

\[\begin{aligned} \mathbf Q&=\mathbf E\mathbf W_Q,\quad \mathbf K=\mathbf E\mathbf W_K,\quad \mathbf V=\mathbf E\mathbf W_V,\\ \operatorname{Attention}(\mathbf E)&= \operatorname{softmax}\!\left(\frac{\mathbf Q\mathbf K^{\mathsf T}}{\sqrt d}\right)\mathbf V. \end{aligned}\]

\(\mathbf E\in\mathbb R^{F\times d}\) 是字段矩阵,\(\mathbf Q,\mathbf K,\mathbf V\) 分别是查询、键和值。\(QK^{\mathsf T}\) 产生 \(F\times F\) 权重矩阵:第 \(i\) 个 Field 可根据当前样本选择关注第 \(j\) 个 Field。

Multi-Head,多头: 将表示投影到多个子空间,每个头可学习不同关系,例如一个头关注“用户×广告”,另一个头关注“上下文×广告”。各头输出拼接后再投影。

Residual,残差连接: 交互层输出加上原输入,再经激活或归一化。残差避免多层传播后丢失原始字段信息,也让梯度更容易回传。

为什么可形成高阶交互: 第一层让一个 Field 融合其他 Field 的信息;第二层再对已经包含二阶关系的表示做交互,因而逐层传播更高阶依赖。它不像 DCN 那样给出严格多项式阶数,但交互路径是显式的。

输出: 多层字段表示可展平或池化,接线性层/MLP 输出 CTR;也可与原始 DNN 分支联合。训练通常使用 BCE。

优点: 样本级动态选择 Field 关系;多头可表达多种交互子空间;并行计算友好;字段间关系矩阵便于分析。

局限与成本: 自注意力复杂度约 \(O(F^2d)\),字段数很大时昂贵;CTR 字段少时优势可能不明显;高阶交互是层间传播意义上的,不能简单等同于精确多项式阶数;注意力可能被高频 Field 支配。

与 AFM/DCN 比较: AFM 对预先产生的二阶特征对加权;AutoInt 让每个字段同时作为查询、键和值,多层传播。DCN 的权重对样本输入产生乘法交叉,AutoInt 则通过 Softmax 动态路由字段信息。

AutoInt 把每个特征域当成 token,通过多头自注意力产生样本相关的字段交互矩阵,残差保留原始信息,堆叠后传播高阶关系。相比 FM/DCN 的固定交叉形式,它能动态选择关系,但复杂度为 \(O(F^2d)\),且注意力权重不等于严格因果解释。

4.14 FiBiNET

Feature Importance and Bilinear feature Interaction Network,特征重要性与双线性交互网络。它分别回答两个问题:当前样本中哪些 Field 重要,以及两个 Field 应如何细粒度交互。

第一部分:SENET 特征重标定。 SENET 原意为 Squeeze-and-Excitation Network,压缩与激励网络。

  1. Squeeze,压缩:把每个 Field Embedding 的 \(d\) 个维度聚合成一个统计量,例如均值;
  2. Excitation,激励:将 \(F\) 个统计量送入两层小网络,输出每个 Field 的权重;
  3. Re-weight,重标定:用权重乘回对应 Field Embedding。

可写为:

\[\begin{aligned} z_i&=\frac{1}{d}\sum_{t=1}^{d}e_{i,t},\\ \mathbf a&=\sigma\!\left(\mathbf W_2 \operatorname{ReLU}(\mathbf W_1\mathbf z)\right),\\ \tilde{\mathbf e}_i&=a_i\mathbf e_i. \end{aligned}\]

\(z_i\) 是第 \(i\) 个 Field 的压缩统计,\(a_i\) 是样本相关重要性,\(\tilde{\mathbf e}_i\) 是重标定后的向量。

第二部分:Bilinear Interaction,双线性交互。 普通 FM 用 \(\mathbf e_i\odot\mathbf e_j\) 或内积,FiBiNET 加入可学习矩阵:

\[\mathbf p_{ij}=(\mathbf W_{ij}\mathbf e_i)\odot\mathbf e_j.\]

双线性意味着一个向量先经线性矩阵变换,再与另一个向量相乘,因此能学习“第 a 维如何影响第 b 维”的细粒度关系。

三种参数共享方式:

  • Field-All:所有字段对共享一个矩阵,参数最少;
  • Field-Each:由其中一个 Field 决定矩阵,参数中等;
  • Field-Interaction:每个字段对独立矩阵,表达最强但参数最多。

原始与 SENET 重标定后的 Embedding 都可进入双线性交互,交互向量拼接后送入 DNN。

优点: 同时建模字段重要性和细粒度字段对关系;权重随样本变化;双线性比简单内积更有表达力。

局限与工程点: 字段对数量为 \(O(F^2)\);Field-Interaction 参数可能很大;SENET 权重可能被高频特征支配或趋同;压缩成单个均值可能丢失 Field 内部信息;通常需要正则、Dropout 和合理共享矩阵。

与 AFM/AutoInt 比较: AFM 在交互之后给特征对加权;FiBiNET 先给 Field 重标定,再用双线性矩阵定义交互形式;AutoInt 则通过字段间自注意力传递信息。三者都在解决“并非所有字段关系相同”,但作用位置不同。

FiBiNET 先用 SENET 对每个样本的字段向量做压缩、激励和重标定,判断哪些 Field 重要;再用可学习矩阵的双线性交互建模字段对。它比 FM 的统一内积更细致,但字段对和矩阵参数会带来明显计算与过拟合风险。

5. 用户兴趣与序列模型

5.1 GRU4Rec / SASRec / BERT4Rec

这三类模型都预测序列中的下一物品,但它们利用上下文的方式不同:GRU4Rec 递归压缩过去,SASRec 用因果自注意力并行读取过去,BERT4Rec 用双向上下文恢复被遮盖物品。

5.1.1 GRU4Rec

场景: GRU for Recommendation,基于门控循环单元的推荐。它最初面向 Session-based Recommendation,会话推荐:用户可能未登录,没有稳定 user_id,只能根据当前会话内的点击序列预测下一物品。

GRU 为什么比普通 RNN 稳定: GRU 使用 Reset Gate,重置门,和 Update Gate,更新门,控制旧状态保留多少、新信息写入多少:

\[\begin{aligned} \mathbf r_t&=\sigma(\mathbf W_r\mathbf x_t+\mathbf U_r\mathbf h_{t-1}),\\ \mathbf z_t&=\sigma(\mathbf W_z\mathbf x_t+\mathbf U_z\mathbf h_{t-1}),\\ \tilde{\mathbf h}_t&=\tanh(\mathbf W_h\mathbf x_t+ \mathbf U_h(\mathbf r_t\odot\mathbf h_{t-1})),\\ \mathbf h_t&=(1-\mathbf z_t)\odot\mathbf h_{t-1} +\mathbf z_t\odot\tilde{\mathbf h}_t. \end{aligned}\]

\(\mathbf x_t\) 是第 \(t\) 个物品向量,\(\mathbf h_t\) 是读到该物品后的会话状态;\(\mathbf r_t\) 决定计算新候选状态时忘掉多少过去,\(\mathbf z_t\) 决定最终写入多少新状态。

训练方式: 每个时刻用 \(\mathbf h_t\) 给下一真实物品打高分。除了采样 Softmax,原论文还常用 BPR 或 TOP1 排序损失。TOP1 同时惩罚负样本分数高于正样本,以及负样本自身分数过大。Session-parallel Mini-batch,会话并行批处理,把多个会话的当前步放在同一批次,某个会话结束后立刻换入新会话,提高 GPU 利用率。

优点: 严格按时间顺序更新;状态可随新行为增量计算;比普通 RNN 更能保留长期信息;适合匿名会话。

局限: 时间步必须串行,长序列训练慢;所有过去被压入一个状态,可能遗忘细节;仅做 next-item 时没有自然融合复杂目标广告和非序列 Field。

5.1.2 SASRec

Self-Attentive Sequential Recommendation,自注意力序列推荐。它用 Transformer 风格的因果自注意力替代循环网络。

输入构造: 对物品 Embedding 加上 Position Embedding,位置嵌入,表示行为在序列中的先后。序列长度不足时使用 Padding,填充,并在注意力中 Mask,屏蔽。训练时每个位置预测下一个物品。

Causal Mask,因果遮罩:\(t\) 个位置只能看 \(1,\ldots,t\),不能看到未来真实行为。注意力矩阵上三角位置设为负无穷,Softmax 后权重为 0:

\[\mathbf H^{l+1} =\operatorname{FFN}\!\left( \operatorname{Attention}_{\mathrm{causal}}(\mathbf H^l) \right).\]

实际层中还包含多头注意力、残差、LayerNorm 和逐位置前馈网络。

预测目标: 用位置 \(t\) 的输出 \(\mathbf h_t\) 与正物品 \(\mathbf v_{t+1}\) 打分。可对一个或多个负物品使用 BCE:

\[\mathcal L_t =-\log\sigma(\mathbf h_t^{\mathsf T}\mathbf v_{t+1}) -\sum_{j\in\mathcal N_t} \log\sigma(-\mathbf h_t^{\mathsf T}\mathbf v_j).\]

相比 GRU4Rec: 训练时所有位置可并行;任意两个历史位置之间的路径短,更容易学习远距离依赖;注意力能按当前状态选择历史。代价是标准注意力对长度 \(L\) 的时间和显存近似 \(O(L^2)\)

局限: 仅靠位置编码不一定充分表达真实时间间隔;负采样影响很大;序列过长时平方成本明显;next-item 目标与广告转化概率仍有差距。

5.1.3 BERT4Rec

Bidirectional Encoder Representations from Transformers for Recommendation,基于双向 Transformer 表示的序列推荐。

Masked Item Prediction,掩码物品预测: 训练时随机把部分历史物品替换为特殊的 [MASK] 标记,让模型根据左右两侧行为恢复原物品。这也称 Cloze Task,完形填空任务:

\[\mathcal L_{\mathrm{MIP}} =-\sum_{t\in\mathcal M} \log p(i_t\mid \mathbf i_{\setminus\mathcal M}).\]

\(\mathcal M\) 是被遮盖位置集合,\(\mathbf i_{\setminus\mathcal M}\) 是其余可见序列。由于不是预测中间位置的下一项,注意力无需因果遮罩,每个可见位置可同时查看左右上下文。

推理方式: 在线推荐时,在历史末尾追加 [MASK],用该位置输出预测下一物品。此时没有未来上下文,因此训练中的中间掩码任务与在线末尾预测存在一定差异。

相比 SASRec: BERT4Rec 的双向上下文能更充分学习序列内部表示,训练中一个样本可产生多个遮盖位置监督;SASRec 的因果目标与在线“只看过去预测未来”更一致。

局限: 随机掩码比例、替换策略和候选 Softmax 成本需要调节;[MASK] 在真实行为序列中不存在,形成预训练与推理差异;标准自注意力仍是 \(O(L^2)\)

三者总结: GRU4Rec 递归、可增量但串行;SASRec 因果自注意力、并行且训练推理一致;BERT4Rec 双向掩码建模、表示学习强但有掩码与末尾预测差异。工业广告排序还需加入目标广告、上下文字段、多任务概率和延迟约束,因此三者通常作为序列编码器而非完整广告系统。

5.2 DIN

Deep Interest Network,深度兴趣网络。DIN 是目标广告感知的 CTR 精排模型,解决传统 Embedding+MLP 把所有历史平均为固定用户向量、无法表达多兴趣的问题。

核心例子: 同一个用户既浏览过篮球鞋,也浏览过手机。面对“运动服”广告,应重点使用篮球鞋行为;面对“手机壳”广告,应重点使用手机行为。DIN 不先生成唯一用户向量,而是让每个候选广告查询历史。

输入与数据流:

  1. 用户画像、目标广告和上下文 Field 做 Embedding;
  2. 历史行为物品形成向量 \(\mathbf e_1,\ldots,\mathbf e_L\)
  3. 目标广告向量 \(\mathbf q\) 与每个历史向量进入 Local Activation Unit,局部激活单元;
  4. 得到候选相关历史权重 \(a_i\) 并加权求和;
  5. 将兴趣向量与其他特征拼接,送入 MLP 输出 pCTR。

\[\begin{aligned} a_i&=\operatorname{MLP}([\mathbf e_i,\mathbf q,\mathbf e_i-\mathbf q, \mathbf e_i\odot\mathbf q]),\\ \mathbf u(\mathbf q)&=\sum_i a_i\mathbf e_i. \end{aligned}\]

\([\cdot]\) 表示拼接,\(\mathbf e_i-\mathbf q\) 提供逐维差异,\(\mathbf e_i\odot\mathbf q\) 提供逐维乘积。与只用点积相比,小型 MLP 能学习更复杂的候选-行为匹配函数。

为何常不使用 Softmax: 标准注意力将所有权重归一化为和为 1,历史中有 1 次相关行为和 20 次相关行为可能得到相近总向量尺度。DIN 的局部激活权重可不归一化,使相关行为数量也反映兴趣强度。不过序列长度变化会改变向量尺度,需要 BatchNorm、长度特征或其他稳定化处理

Dice 激活: DIN 提出的 Data-adaptive Activation Function,数据自适应激活,根据当前输入分布计算门控概率:

\[\operatorname{Dice}(x) =p(x)x+[1-p(x)]\alpha x, \qquad p(x)=\sigma\!\left(\frac{x-\mu}{\sqrt{\sigma_x^2+\epsilon}}\right).\]

\(\mu,\sigma_x^2\) 是输入统计,\(\alpha\) 是可学习负区间斜率。Dice 的切换位置随数据分布变化,而不是像 PReLU 固定以 0 为界。

Mini-batch Aware Regularization,批次感知正则: 超大稀疏 Embedding 表不可能每步对所有参数计算 L2。只对当前 batch 中出现的特征向量施加正则,并按出现概率做修正,可近似全量稀疏正则、减少过拟合。

复杂度: 对每个候选都要计算 \(L\) 次激活并聚合,约为 \(O(BL)\)\(B\) 是候选数。候选越多、历史越长,用户侧结果越难缓存,这也是 SIM/TWIN 处理长序列的出发点。

优点: 直接表达候选相关多兴趣;结构简单、有效、易与现有 CTR 特征融合;激活网络比固定点积更灵活。

局限: 历史行为之间没有显式时序演化;对每候选重算目标注意力;长序列成本高;未归一化权重的尺度与行为数量相关;注意力可能关注相关但非因果的行为。

与普通 Attention 的区别: DIN 的 Local Activation Unit 用拼接、差和逐元素积经 MLP 算匹配,且权重可不做 Softmax;标准缩放点积注意力主要使用 \(QK^{\mathsf T}\) 并归一化。两者都属于“按查询加权值”,但具体打分函数和归一化不同。

DIN 针对固定用户向量无法表达多兴趣,让目标广告逐条查询历史行为。局部激活单元使用候选、行为、差和乘积计算权重,再加权得到候选相关兴趣。权重常不做 Softmax 以保留兴趣强度,模型还使用 Dice 适应推荐特征分布。它适合精排,但每个候选都要扫历史,且没有显式建模兴趣随时间演化。

5.3 DIEN

Deep Interest Evolution Network,深度兴趣演化网络。用户问题中的 DEIN 通常是对 DIEN 的误写。DIEN 在 DIN 的目标相关选择之外,进一步区分“外显行为”和“隐含兴趣”,并建模兴趣如何随时间演化。

第一层:Interest Extractor,兴趣提取器。 第一个 GRU 按时间读取行为 Embedding:

\[\mathbf h_t=\operatorname{GRU}(\mathbf e_t,\mathbf h_{t-1}).\]

\(\mathbf e_t\) 是观察到的行为,\(\mathbf h_t\) 是模型推断的隐兴趣状态。这样“点击一次”不直接等于“形成兴趣”,而是结合此前行为得到状态。

辅助损失为何必要: 最终 CTR 标签对长序列中每一步监督太弱,第一个 GRU 容易只做无意义编码。DIEN 让 \(\mathbf h_t\) 预测下一真实行为 \(\mathbf e_{t+1}\),同时区分采样负行为 \(\hat{\mathbf e}_{t+1}\)

\[\begin{aligned} \mathcal L_{\mathrm{aux}} =-\sum_{t=1}^{L-1} &\left[ \log\sigma\!\left(f(\mathbf h_t,\mathbf e_{t+1})\right)\right.\\ &\left.+\log\left(1-\sigma\!\left( f(\mathbf h_t,\hat{\mathbf e}_{t+1})\right)\right) \right]. \end{aligned}\]

\(f\) 是小型二分类网络。这个 Auxiliary Loss,中间辅助损失,为每个时间步提供局部监督,让状态确实包含可预测下一行为的兴趣信息。总损失通常为 \(\mathcal L=\mathcal L_{\mathrm{CTR}}+\alpha\mathcal L_{\mathrm{aux}}\)

目标相关注意力: 用候选广告 \(\mathbf q\) 与每个兴趣状态 \(\mathbf h_t\) 计算标量 \(a_t\)。第二层 Interest Evolution,兴趣演化网络,不只是加权求和,而是控制这些状态如何写入最终兴趣。

AIGRU,Attention-based Input GRU: 先将输入缩放为 \(a_t\mathbf h_t\),再送入普通 GRU。它让不相关状态输入变小,但 GRU 的偏置和隐藏状态仍可能让不相关步骤改变输出。

AGRU,Attention-based GRU: 直接用标量注意力 \(a_t\) 替换 GRU 原本逐维 Update Gate,更新门:

\[\mathbf h'_t=(1-a_t)\mathbf h'_{t-1}+a_t\tilde{\mathbf h}'_t.\]

它把目标相关性直接用于状态更新,但丢失了原更新门“不同维度更新程度不同”的能力。

AUGRU,GRU with Attentional Update Gate: 保留 GRU 的向量更新门 \(\mathbf z_t\),再由注意力缩放:

\[\tilde{\mathbf z}_t=a_t\mathbf z_t, \qquad \mathbf h'_t=(1-\tilde{\mathbf z}_t)\odot\mathbf h'_{t-1} +\tilde{\mathbf z}_t\odot\tilde{\mathbf h}'_t.\]

这样既保留逐维门控,又让与目标无关的时间步难以改写状态,通常是三者中最完整的设计。

完整数据流: 行为 Embedding \(\rightarrow\) 兴趣提取 GRU \(\rightarrow\) 下一行为辅助监督 \(\rightarrow\) 候选相关注意力 \(\rightarrow\) AUGRU 兴趣演化 \(\rightarrow\) 与画像、广告、上下文拼接 \(\rightarrow\) MLP 输出 CTR。

优点: 明确区分行为与兴趣;通过辅助损失增强长序列中间监督;同时建模兴趣时间演化与目标相关性;AUGRU 将注意力融入状态更新而非最后才池化。

局限与工程成本: 两层 GRU 都按时间串行,训练与在线长序列延迟较高;辅助负样本质量影响兴趣状态;模块多、损失权重和梯度更难调;目标相关演化仍需对每个候选计算。

DIN vs DIEN: DIN 直接对原始行为做候选相关加权,没有显式兴趣状态;DIEN 先由 GRU 提取兴趣,再用辅助损失监督,并用 AUGRU 建模候选相关的兴趣演化。DIN 更轻,DIEN 更强调时序与状态变化。

DIEN 认为行为不等于兴趣。第一层 GRU 将行为抽成隐兴趣,并用“当前状态预测下一正行为、区分负行为”的辅助损失提供逐步监督;第二层用候选相关注意力控制兴趣演化。AUGRU 用注意力缩放 GRU 的向量更新门,兼顾目标相关性和逐维记忆。它比 DIN 更完整,但双层循环结构和负采样带来更高成本。

5.4 DSIN

Deep Session Interest Network,深度会话兴趣网络。它认为用户历史不是一条均匀序列:同一会话内行为通常围绕相近意图,不同会话则可能代表不同兴趣阶段。

Session,会话,如何定义: 按相邻行为时间间隔切分,例如超过 30 分钟视为新会话;也可结合自然访问边界。阈值是业务归纳偏置,并非模型自动发现。完整流程如下:

按时间间隔切 session
-> session 内 self-attention + bias encoding
-> session 间 Bi-LSTM 建模演化
-> target-aware attention 聚合 session interests

分层数据流解释:

  1. 将历史按时间间隔分成 \(S\) 个会话;
  2. 每个会话内部使用 Multi-head Self-Attention,提取行为组合;
  3. 加入 Bias Encoding,偏置编码,表达会话顺序、行为位置和时间信息;
  4. 对会话内输出做池化,得到会话兴趣 \(\mathbf s_1,\ldots,\mathbf s_S\)
  5. 用 Bi-LSTM,双向长短期记忆网络,建模历史会话之间的演化;
  6. 目标广告分别查询原始会话兴趣与演化后的会话兴趣;
  7. 将两路结果与其他特征拼接,预测 CTR。

为什么会话内用自注意力: 同一会话可能包含“搜索相机、浏览机身、比较镜头”,行为之间相互解释,自注意力比简单均值更能学习组合意图,而且会话通常较短,平方复杂度可接受。

Bias Encoding 是什么: 标准 Transformer 只看到内容与统一位置。DSIN 加入与会话编号、会话内位置或时间间隔相关的可学习偏置,使模型区分“刚发生的会话”和“很久以前的会话”,以及同一会话中的先后。

为什么同时保留两路兴趣: Bi-LSTM 输出强调会话随时间的变化,原始会话向量保留每段兴趣本身。目标注意力分别聚合两路,可同时利用“哪个会话与广告相关”和“兴趣如何演变到现在”。

双向是否数据泄漏: 只要输入全部发生在目标展示之前,Bi-LSTM 在历史会话内部双向读取并不看到目标后的未来,因此不必然泄漏。但在线若对正在进行中的会话增量更新,双向编码无法像单向 RNN 那样只追加一步,需要重算或缓存策略。

优点: 显式利用会话层级;会话内组合与会话间演化分工清楚;比把所有行为平铺成一条序列更符合多阶段兴趣。

局限: 会话切分阈值人工且跨业务不稳定;层级模块较多;Bi-LSTM 和目标注意力增加延迟;错误切分会把一个意图拆开或把多个意图混在一起。

与 DIEN 比较: DIEN 在行为粒度用 GRU 连续演化;DSIN 先形成会话兴趣,再在会话粒度演化。DSIN 更有层级归纳偏置,DIEN 对边界没有人工假设。

DSIN 先按时间间隔把历史切成会话,利用会话内自注意力提取局部意图,再用 Bi-LSTM 建模会话兴趣演化,最后由目标广告注意两路会话表示。它比 DIEN 更明确地利用层级结构,但效果依赖会话切分,在线增量与计算也更复杂。

5.5 BST

Behavior Sequence Transformer,行为序列 Transformer。它将 Transformer 引入工业 CTR 排序,让行为之间以及行为与目标候选之间通过自注意力直接交互。

输入构造: 每个历史物品 token 可由物品 ID、品类等 Embedding 相加或拼接投影,并加入 Positional Encoding,位置编码,以及 Time Interval Encoding,时间间隔编码。目标物品也作为 token 放入序列,使其可读取相关历史。

Transformer 层: 多头自注意力先计算所有 token 两两关系,再通过 FFN 做逐位置非线性变换;每个子层使用残差与 LayerNorm。若所有输入均是目标展示前历史,历史 token 间可双向交互;目标 token 则从整段历史聚合候选相关表示。

数据流:

  1. 历史与目标广告形成 token 序列;
  2. 添加位置和时间信息;
  3. 经过若干 Transformer Encoder;
  4. 取目标位置输出或展平序列输出;
  5. 与用户画像、广告静态特征、上下文拼接;
  6. MLP 输出点击或转化概率。

相比 DIN: DIN 的历史行为彼此独立地与目标计算激活权重,主要是“一跳目标到行为”;BST 先让行为之间建立关系,也可让目标在多头空间读取组合行为。例如“搜索相机后浏览镜头”可作为整体影响目标。

训练: 作为 CTR 模型通常直接用曝光样本 BCE,而不是只做下一物品预测。可对 Transformer 参数与其他稀疏 Embedding 端到端训练。

优点: 能学习长距离行为依赖;训练位置并行;目标与历史、历史与历史统一在注意力中交互;易扩展多头与时间编码。

局限与工程成本: 标准注意力为 \(O(L^2d)\);目标 token 导致每个候选的序列结果不同,用户表示难完全缓存;短序列或数据不足时复杂 Transformer 未必优于 DIN;Padding 会浪费计算,需要 Ragged/Jagged,变长张量,优化。

BST 把历史行为和目标物品一起作为 Transformer token,加入位置与时间编码,通过自注意力同时建模行为-行为和目标-行为关系,再与静态特征进入 MLP 预测 CTR。它比 DIN 能表达行为组合和长距离依赖,但标准注意力平方复杂度、且目标相关计算不易缓存。

5.6 SIM

Search-based User Interest Model,基于搜索的用户兴趣模型。SIM 面向可达数万条的终身行为序列,核心不是让一个重模型直接扫描全部历史,而是“先从历史中搜索,再精确建模”。

为什么 DIN/BST 难直接扩长: DIN 对每个候选线性扫描历史,成本约 \(O(BL)\);BST 标准注意力近似 \(O(L^2)\)。当 \(L\) 从百级变成数万级时,显存、特征读取和在线延迟都不可接受,而直接截断最近行为会丢失很久以前但高度相关的兴趣。

第一阶段 GSU: General Search Unit,通用搜索单元,从完整历史中快速筛出与目标候选相关的 Top-K 行为,\(K\ll L\)

  • Hard Search,硬搜索:使用类别、标签等离散规则过滤。例如目标是相机广告,只保留历史中相机或摄影相关品类。它很快且可