type
Post
status
Published
date
Mar 24, 2026
slug
summary
tags
推荐算法
category
知行合一
icon
password
InterFormer
序列特征 + 非序列特征 双向指导

- Interaction Arch (橙色) :根据「序列查询」学习「行为感知」的「非序列」Embedding
- Sequence Arch (蓝色) :根据「非序列查询」学习「上下文感知」的「序列」Embedding
- Cross Arch (绿色) :完成 Interaction 和 Sequence 的信息交换
进一步地,可以理解为左侧为「非序列侧」,右侧为「序列侧」
具体双向指导体现在加粗箭头的:
- 蓝色加粗箭头:「非序列特征」指导「序列特征」
- 橙色加粗箭头:「序列特征」指导「非序列特征」

模型架构
特征预处理

非序列特征
非序列特征主要分为两类:
- 稠密特征(如用户年龄、商品价格)
- 稀疏特征(如用户ID、商品类别)
为了统一这些异构特征,它们都会被转换为具有相同维度的嵌入向量。
稀疏特征为 通过 one-hot 和 Embedding 编码为:
其中 表示该特征的词表大小。
稠密特征为 ,直接将该类特征拼接在一起形成向量:
稀疏和稠密特征映射到同一维度:
最后将产生的稀疏特征向量和稠密特征向量水平拼接(concate)得到:
就是图中的 ,形状为
序列特征
与非序列特征类似,序列中每个交互过的物品也会通过嵌入层映射为一个 d 维的向量,整个行为序列即由这些物品嵌入拼接而成。:
序列融合与去噪 (MaskNet):在真实的工业场景中,用户通常会产生多种不同的行为序列(例如“点击”序列和“转化”序列),而且这些序列中往往包含大量充满不确定性的噪声和不相关的交互。为了解决这个问题,InterFormer引入了 MaskNet 模块。假设不同行为的序列有 个,于是将该序列垂直(在嵌入维度 d → kd)拼接得到 :
噪声:比如用户不小心误触了某个完全不感兴趣的商品,或者随便划过的内容
随后使用MLP_mask网络进行自掩码(self-masking)操作,计算出掩码权重并与原序列进行哈达玛乘积(按位相乘),以此来过滤掉序列中的内部噪声,筛选出相关的有效信息:
自掩码去噪 (Self-Masking)
与原矩阵大小相相同,每个位置是 0 到 1 的重要性打分 。
融合与维度对齐 (Linear Combination)
把 k 条不同来源的序列揉成一条序列,并将它的维度对齐非序列特征的统一维度 d。 最后得到
InterFormer Blocks
接下来我们就到「序列特征」与「非序列特征」相互指导学习的阶段了。

根据 InterFormer 的设计,每一个 Block 内部并行且交错地包含了三个核心架构(Modules)
- Cross Arch(交叉架构)
- Interaction Arch(交互架构)
- Sequence Arch(序列架构)
关于「序列特征」与「非序列特征」信息交换我们可以拆开看:
「非序列特征」指导「序列特征」

「序列特征」指导「非序列特征」

摘要
1. Cross Arch (交叉架构:信息选择与摘要生成) 直接让高维的序列和非序列特征进行全量交互会导致计算量过大和噪声干扰。因此,第一步是通过 Cross Arch 为双方提取轻量级的“摘要(Summarization)”:
非序列特征摘要 ():
模型通过自门控(Self-Gating)机制,从庞杂的静态非序列特征中过滤噪声,筛选出核心的画像与上下文信息。特别地,在进入第一层之前,这个摘要还会作为
[CLS] token 拼接到用户的序列特征的最前面。
注意这里外层 MLP: 其中 。起到降维+总结作用
序列特征摘要 ()
模型结合了三种关键信号:代表全局上下文的 [CLS] token、基于可学习查询提取的 PMA token,以及用户最近交互的 K 个行为 token,将它们自门控融合后,作为用户当前动态行为的浓缩摘要。

- MHA 多头注意力:基于「非序列特征摘要CLS」对整个序列进行建模并输出新 [CLS]
- PMA:MHA所使用的「非序列特征摘要CLS」可能会导致过度依赖静态上下文,而PMA的Query是模型学出来的,提供更多序列建模视角。
- Recent Tokens ():直接截取用户最近交互的 K 个行为标记,以此来精准捕捉用户近期的、即时的行为偏好
注意这里的 [CLS] 很重要!就是「非序列特征摘要」
在做 MHA 计算时,它实际上是将用户的全局上下文作为查询向量(Query)去聚合序列中的动态信息。这就好比带着“用户是数码迷”这个先验知识,去审视他杂乱的点击历史,从而更精准地提取出相关的行为偏好。
经过 MHA 层自适应地聚合序列信息后,位于这个 [CLS] 位置的输出结果 ,就演变成了一个完美融合了「静态全局指导」和「动态序列演变」的上下文感知序列摘要
接受摘要
在 2. Interaction Arch (交互架构:感知行为的非序列交互) 中,这一步负责继续深化「非序列特征」的表示。它接收当前层的非序列特征 ,并将其与上一步提取的序列摘要 拼接在一起。

- 拼接后的特征被送入底层的特征交互网络(兼容 DCNv2、DHEN 等)进行高阶交叉。
- 核心目的:这不仅让静态特征(如“用户画像”和“目标广告内容”)之间进行传统交叉,还让它们与“用户的近期动态意图(序列摘要)”发生交互,从而精准捕捉当前推荐物品与用户实时需求之间的隐式关联。
在 3. Sequence Arch(序列架构)中,PFFN 负责利用刚刚提取出来的「非序列摘要 () 」来对当前的「序列特征 ()」进行线性投影转换。

不同于 Transformer 中普通的、对所有输入一视同仁的 FFN,PFFN 实际上是在计算 。从底层逻辑看,它是利用非序列摘要 动态地学习出一个专属的变换权重 ,然后再把这个权重作用在「序列的特征」维度上。
最终的循环与输出: 在 InterFormer 中,序列模块和特征交互模块依然各自保持着完整的维度大小(避免了过早压缩导致的信息丢失),它们在每一层都通过上述的“摘要提取 → 双向交互注入 → 更新各自特征”的过程进行互利共赢的学习。

这个过程会重复堆叠 L 层。当经过所有的 InterFormer 块处理完毕后,模型会将最后一层生成的非序列摘要 和序列摘要 拼接在一起,送入最终的分类器头(通常是一个多层感知机 MLP),从而输出最终的点击率(CTR)预测概率。
总结(AI)
别被前面那些复杂的模块名称绕晕了。用大白话来说,InterFormer 之所以能 work(发挥出色的效果),本质上是因为它极其精准地解决了传统推荐系统模型里的两个“通病”:各管各的(单向信息流) 和 过早下定论(激进的信息聚合)。
我们可以通过以下三个非常直观的逻辑,来理解它为什么能 work:
1. 静态画像与动态行为的“双向奔赴” (Bidirectional Interaction)
在推荐系统中,我们通常有两类信息:
- 非序列特征(静态): 描述“你是谁”,比如你的年龄、性别、平时总体的兴趣标签、上下文环境等。它代表用户的长期稳定偏好。
- 序列特征(动态): 描述“你正在干嘛”,比如你过去几分钟疯狂点击了哪些商品。它代表用户的瞬时、短期冲动。
传统的模型通常是单向的:一般只拿“静态画像”去指导如何看“动态序列”,但忽略了反向的沟通。 InterFormer 为什么能 work: 它让这两者相互指导、互利共赢。
- 用“动态”去修正“静态”: 假设你的静态画像是一个“美妆控”,但你今天突然想换手机,开始疯狂浏览数码产品。InterFormer 会提取出你近期的“数码”行为摘要,将其注入到你的静态特征中进行交叉。这样,模型就能瞬间明白,面对一个“手机”广告,虽然你平时爱美妆,但结合你当下的动态意图,这个广告对你也是极具吸引力的。
- 用“静态”去给“动态”去噪: 用户平时的点击行为非常杂乱,常常会有不小心误触的“噪音”记录。InterFormer 利用你的“静态画像摘要”作为上帝视角,去审视你的杂乱序列。它会告诉序列模块:“既然已知这人是个数码迷,那序列里那些不小心点到的美妆记录权重就给低一点,真正看过的电子产品权重给高一点。”
2. 聪明的“摘要交换”机制,既高效又抗干扰 (Effective Summarization)
你可能会问,既然双向沟通这么好,为什么以前的模型不做? 因为硬融合的代价太大了。如果把成千上百维的静态画像和几百个历史行为直接混在一起算,不仅计算量爆炸,而且充满噪音。
InterFormer 为什么能 work: 它在两者之间搭建了一个专门用来提炼重点的“交叉架构(Cross Arch)”。它就像一个聪明的秘书,每次两边要沟通前,都不给全量文件,而是只给“浓缩摘要”。
- 静态画像通过门控(Gating)机制,把无关的废话过滤掉,只把最核心的用户标签提炼出来。
- 动态序列也只挑出最有代表性的全局特征(CLS/PMA token)和最近刚刚点过的几个商品(Recent tokens)作为摘要。 通过交换这些“纯干货摘要”,模型既获得了对方的核心指导,又避免了被对方的庞杂细节带偏。
3. 坚决“不过早下定论”,保留最完整的细节 (Avoid Aggressive Aggregation)
以前很多模型为了省事,在特征处理的早期,就把用户长长的几百个历史行为求个平均值,或者压缩成一个极短的向量,这在论文中被称为“激进的信息聚合”。这就好比把一整本小说压缩成了一句梗概,大量的细节和火花在早期就永远丢失了。
InterFormer 为什么能 work: 它的每一层 Block 里面,强制要求输出和输入的维度大小一模一样。 这意味着,无论是静态特征还是长长的序列特征,它们只是利用对方给的“摘要”来更新和刷新自己,但绝不压缩自己。随着 InterFormer 一层一层往上堆叠,特征不仅越来越懂全局上下文,而且毫无保留地维持着最初的颗粒度和完整度,直到最后一刻才进行最终的预测。
总结来说: InterFormer 之所以有效,是因为它像一个高度协同的齿轮组:它让“长期的你”和“当下的你”不断交换浓缩的意见来互相纠偏,并且在这个过程中死死护住了所有的原始细节不被提前丢弃。
Q/A
InterFormer和user-aware的注意力序列建模有什么区别?
为什么InterFormer是序列建模,但是没有用到注意力等序列建模的方式?是怎么完成不同位置信息的提取的?
- Author:YelloooBlue
- URL:https://tangly1024.com/article/32de32f0-1b7f-80d4-a18d-c19ce9e23aa6
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!

