摘要
2026 腾讯广告算法大赛落下帷幕,获奖方案直击工业推荐系统最核心的痛点 ------94% 的曝光噪声淹没仅 2.5% 的高价值转化信号,通过 FiLM+Gated Fusion+Attention Biasing 三机制协同实现了不同行为语义的彻底解耦。
本文将从问题本质、技术细节、灵感溯源、知识体系 四个维度对该方案进行深度拆解,不仅告诉你 "第一名做了什么",更重要的是告诉你 "他是怎么想到的 ",以及"你需要具备哪些能力才能做出这样的方案"。

一、引言:工业推荐的 "噪声困境"
腾讯广告算法大赛是国内含金量最高的算法竞赛之一,每年都吸引着来自全球顶尖高校和互联网公司的数万名选手参赛。今年的赛题聚焦于广告序列推荐,提供了包含 1000 万条用户行为记录的真实工业数据集 TencentGR-10M。
与学术数据集不同,工业推荐系统面临着一个极其残酷的现实:绝大多数行为都是无效噪声。在 TencentGR-10M 数据集中:
- 94.63% 的行为是曝光:用户只是看到了广告,没有任何表态
- 2.85% 的行为是点击:用户主动感兴趣,是明确的正信号
- 2.52% 的行为是转化:用户完成了付费或留资,是最高价值的信号
这就像一个侦探在破案时,收到了 100 条线索,其中 95 条都是无关的路人证词,只有 2-3 条是目击证人的关键口供。
朴素 Transformer 方案的致命缺陷
绝大多数选手的第一反应是:"用最新的大模型做序列推荐!" 于是纷纷拿出了 Qwen、Llama 等大模型,把用户行为序列直接扔进 Transformer 里训练。
但结果却令人失望:无论怎么调参、怎么加特征,效果都上不去。
**问题出在哪里?**Transformer 是 "众生平等" 的,它会把所有 Token 一视同仁。当 94% 的噪声信号占据了绝大多数注意力时,模型学出来的就是一堆垃圾。它会记住 "用户看过什么",但永远学不会 "用户真正想要什么"。
这就是工业推荐系统最棘手的核心难题:行为信号天然异质。
二、核心创新:Per-position Action Conditioning 三机制协同
第一名团队的核心洞察非常简单却极其深刻:
我们不能再让模型自己去分辨哪些线索重要,我们要直接告诉它哪些是高价值线索,哪些是噪声。
受 Pinterest 2025 年 PinRec 论文的启发,他们提出了逐位置行为条件化机制,在序列的每个位置,根据该位置的行为类型动态变形 Token 表征。
为了实现最彻底的语义解耦,他们没有满足于单一的调制机制,而是从特征空间、融合层面、注意力层三个不同粒度同时下手,形成了三管齐下的组合拳。
机制 A:FiLM 特征调制
FiLM(Feature-wise Linear Modulation)原本是计算机视觉领域用于视觉问答的技术,它可以对特征进行逐元素的仿射变换。
直觉解释:同一件商品,"被用户点击" 和 "只是被用户扫了一眼",在用户兴趣建模中的语义是完全不同的。FiLM 无需为每种行为维护独立的 Embedding,而是在特征空间中直接对商品表征进行条件化变换。
机制 B:Gated Fusion 门控融合
单一的 FiLM 变换可能会丢失原始特征中的有用信息,因此他们引入了门控融合机制,自适应地混合原始特征和条件化特征。
效果:
- 对于噪声大的曝光行为,\(g趋近于 0,模型更多依赖原始特征
- 对于信息量大的转化行为,\(g(a_t)\)趋近于 1,模型更多依赖 FiLM 变换后的特征
机制 C:Attention Biasing 注意力偏置
最后,他们在 Transformer 的注意力计算层面加入了行为类型偏置矩阵,从最宏观的层面调控模型的注意力分布。
是一个基于行为类型构造的偏置矩阵,它会让模型在计算注意力时,天生就更关注高价值的点击和转化行为,自动降低曝光行为的权重。
三机制协同效果总结
表格
| 机制 | 作用粒度 | 核心效果 |
|---|---|---|
| FiLM | 特征空间 | 行为条件化的特征仿射变换,实现语义解耦 |
| Gated Fusion | 融合层面 | 原始特征与条件化特征的自适应混合 |
| Attention Bias | 注意力层 | 序列级行为优先级调控,压制噪声 |
这三个机制单独使用都能带来提升,但合在一起产生了1+1+1>3的质变效果,彻底解决了噪声淹没有效信号的问题。
三、精细时序建模:超越单一位置编码
Transformer 的位置编码只能表达 "这是第几个行为",但完全无法感知真实时间的语义。用户早上 8 点刷到的广告和晚上 8 点刷到的广告,相隔 10 秒的两个行为和相隔 10 天的两个行为,其含义天差地别。
为此,第一名团队设计了三级层次的时序特征工程,全方位榨干时间信息的价值。
Level 1:绝对时间戳特征
捕捉用户行为的绝对时间模式:
- 小时(0-23):一天内的消费高峰
- 星期几(0-6):工作日与周末的行为差异
- 是否节假日:特殊消费场景
Level 2:相对时间差特征
计算相邻两个行为之间的时间间隔\(\Delta t_{u,t} = t_{u,t} - t_{u,t-1}\),捕捉事件间隔的语义:
- 秒级:同一浏览 Session 内的连续行为
- 分钟级:同一会话的不同阶段
- 天级:跨会话回访,用户重新 "激活"
Level 3:Session 结构特征
将用户行为划分为三个层级的会话:
- Request-level Session:同一页面请求内的行为
- Session-level:同一次 App 打开期间的行为
- Cross-day Visit Session:跨天访问行为
每条行为都会携带 "属于哪个会话"、"在会话内的位置" 等上下文信息,让模型理解用户访问的宏观结构。
多频傅里叶特征编码
为了让模型更好地感知时间的周期性规律,他们使用了多频傅里叶编码:
其中频率覆盖了小时、日、周等多个时间尺度,让模型同时感知多频率的周期性规律。
四、冷启动与长尾优化:RQ-KMeans 语义 ID
传统的原始 Item ID 存在两个致命缺陷:
- 长尾物品覆盖差:低频广告训练样本少,ID Embedding 学不好
- 冷启动泛化弱:新广告没有历史数据,模型完全看不懂
随着多模态大模型的兴起,每个商品都有了高质量的图片和文本 Embedding。语义相近的商品,它们的多模态 Embedding 也会很接近。
第一名团队敏锐地抓住了这个机会,提出了RQ-KMeans 语义 ID方案:
- 用多模态大模型为每个广告生成统一的 Embedding
- 使用残差量化 K-Means(RQ-KMeans)将连续的 Embedding 量化成离散的 Token 序列
- 语义相近的广告会共享相同的 Token 前缀,实现跨物品的知识迁移
RQ-KMeans 流程:
plaintext
多模态Embedding e
↓ 第1级量化
c₁ = argmin_k ||e - μ₁ᵏ||² → 码字id₁
残差r₁ = e - μ₁c₁
↓ 第2级量化(对残差再量化)
c₂ = argmin_k ||r₁ - μ₂ᵏ||² → 码字id₂
残差r₂ = r₁ - μ₂c₂
↓ ...(L级)
语义ID = (id₁, id₂, ..., id_L)
为了防止模型只依赖粗粒度的语义码而忽略后续的精细层级,他们还引入了Random-k 正则化:训练时随机选取第 k 级语义码作为起始输入,强迫模型学习不同粒度的语义信息。
这一技巧起到了类似 Dropout 的正则化作用,显著增强了模型对长尾物品细粒度差异的感知能力。
五、训练与推理工程优化
再好的算法,没有扎实的工程实现也无法发挥出全部威力。第一名团队在训练和推理环节做了大量细致的优化,这也是他们能拉开差距的重要原因。
Muon + AdamW 混合优化器
- Muon 优化器:2024 年最新提出的优化器,专为神经网络隐层的稠密权重设计。它在 Nesterov 动量梯度上应用 Newton-Schulz 迭代做正交化,使各方向更新步长更均匀,收敛更快、最终效果更好。
- AdamW 优化器:用于优化 Embedding Tables 等稀疏参数,适合高基数 ID 特征。
混合策略:
- Muon → Transformer 各层稠密权重(Q/K/V/FFN 矩阵)
- AdamW → Embedding Table 等稀疏参数
静态计算图 + Large Negative Banks InfoNCE
- 静态计算图:固定 batch size 和负样本数,使 PyTorch/XLA 可以编译静态计算图,大幅提升 GPU 利用率,消除动态 shape 带来的重编译开销。
- Large Negative Banks:维护跨 batch 的负样本缓冲区,每步训练从中抽取大量负样本。实验表明,负样本数量越多,InfoNCE 损失越能区分细微的语义差异。
推理解耦架构
为了平衡性能与延迟,他们采用了推理解耦的架构:
- 用户侧:在线实时运行完整的 Transformer(含 Action Conditioning),生成用户向量
- 广告侧:离线预计算广告向量,构建 Faiss ANN 索引
- 检索:在线用用户向量在 Faiss 索引中检索 Top-K 广告候选
这种架构将大部分计算量转移到了离线,在线推理延迟控制在 10ms 以内,完全满足工业级要求。
六、灵感溯源:第一名是怎么想出来的?
很多人看完这个方案会觉得:"这些技术我都听过,为什么我想不到把它们组合起来?"
其实,能想出这个方案的人,既不是凭空顿悟的天才,也不是只会堆论文的书呆子。他走的是一条 **"发现真问题 → 跨领域找武器 → 组合优化成杀招 → 工程落地验证"** 的标准路径。
必备的四层知识体系
第一层:推荐系统的 "行业常识"
这是最容易被学生忽略,但也是最重要的一层。你需要知道:
- 工业界的数据集和学术数据集有什么不同
- 真实业务中哪些问题是真正的痛点,哪些是伪问题
- 模型的 bad case 背后反映了什么本质问题
这个知识怎么来 :不是从课本上来的,而是从跑真实的工业数据集、分析 bad case来的。当你调了一个月的 Transformer,发现效果怎么都上不去,然后去看模型的注意力权重,发现它把 90% 的注意力都放在了曝光数据上时,你才会真正理解 "行为异质性" 这个问题有多致命。
第二层:Transformer 的 "底层解剖学"
你不能只会用transformers.AutoModel.from_pretrained(),你得知道 Transformer 的每一层、每一个公式是干嘛的,以及哪里可以动手脚。
- 如果你不知道注意力公式是\(softmax(QK^T/\sqrt{d})V\),你就想不到可以加一个偏置矩阵
- 如果你不知道神经网络的特征是可以做逐元素运算的,你就想不到 FiLM 调制
这个知识怎么来 :手推一遍 Transformer 的前向传播和反向传播,然后自己从零写一个简单的 Transformer,而不是永远用别人的封装。
第三层:跨领域的 "技术工具箱"
这是这个作者最厉害的地方:他没有局限在推荐系统的小圈子里,而是把其他领域已经验证过的成熟技术,拿来解决推荐系统的老问题。
表格
| 方案中的技术 | 原本来自哪个领域 |
|---|---|
| FiLM 特征调制 | 计算机视觉(视觉问答) |
| RQ-KMeans 残差量化 | 语音识别、向量数据库 |
| Muon 优化器 | 大模型训练 |
| 多频傅里叶编码 | 信号处理、NeRF |
这个知识怎么来 :不要只读推荐系统的论文,要同时关注 CV、NLP、大模型训练、甚至信号处理领域的进展。很多时候,你在推荐系统里卡了半年的问题,别的领域早就有成熟的解决方案了。
第四层:工程实现的 "肌肉记忆"
再好的想法,跑不起来都是空谈。这个方案里有大量的工程优化细节,没有扎实的工程能力根本做不出来。
- 知道怎么把动态 shape 改成静态 shape,让 GPU 利用率从 30% 提升到 90%
- 知道怎么维护跨 batch 的负样本缓冲区
- 知道怎么优化 Faiss 索引,把千万级商品的检索延迟控制在 10ms 以内
这个知识怎么来 :多写代码,多调性能,多踩坑。不要满足于 "能跑通",要追求 "跑得又快又好"。
每个创新点的思考过程还原
- 核心问题的发现:调了一个月 Transformer 效果上不去 → 分析注意力权重 → 发现模型被曝光噪声淹没 → 得出结论:输入方式错了
- Action Conditioning 的灵感:查论文发现 PinRec 提出了行为调制的想法 → 思考怎么做得更好 → 从三个不同粒度同时下手 → 三机制协同
- 时序特征的灵感:发现位置编码无法表达真实时间 → 把时间拆成绝对、相对、会话三个层次 → 用傅里叶编码捕捉周期性
- 语义 ID 的灵感:传统 Item ID 有冷启动问题 → 多模态大模型提供了高质量 Embedding → 把连续 Embedding 量化成离散 ID → 用 Random-k 防止坍缩
你会发现,所有的灵感都有迹可循,没有任何 "神来之笔"。
七、总结与启示
方案核心优势总结
表格
| 维度 | 核心优势 |
|---|---|
| 行为建模 | 三机制协同 Action Conditioning,彻底解耦不同行为语义 |
| 时序建模 | 三级层次 + 多频 Fourier,远超单一位置编码 |
| 冷启动 | RQ-KMeans 语义 ID,长尾广告天然受益于语义共享 |
| 训练稳定性 | Random-k 防语义 ID 退化,Muon 加速收敛 |
| 工程效率 | 静态计算图 + 推理解耦,GPU 利用率高、延迟可控 |
给算法工程师的三点启示
- 先找真问题,再想解决方案:不要在别人已经解决了的问题上内卷,去发现那些真实存在、未被解决的工业界痛点
- 不要局限在自己的领域:跨领域借鉴是创新的重要来源,很多时候 "他山之石,可以攻玉"
- 永远不要忽视工程细节:很多时候,决定胜负的不是算法有多新颖,而是工程做得有多扎实
未来展望
随着大模型技术的不断发展,推荐系统正在经历从 "协同过滤" 到 "生成式推荐" 的范式转变。行为条件化、多模态融合、Agent 化将是未来推荐系统的重要发展方向。
对于想要进入这个领域的同学来说,现在正是最好的时机。你不需要从头训练一个大模型,你只需要学会如何把大模型的能力和推荐系统的业务场景结合起来,就能做出非常有价值的工作。
写在最后
很多人觉得算法竞赛拼的是天赋,但实际上,拼的更多的是对问题的理解深度 和知识体系的广度。第一名的方案里没有任何黑科技,所有的技术都是公开的,但只有他把这些技术用在了正确的地方,解决了真正的问题。
希望这篇文章能给你带来一些启发。如果你觉得有用,欢迎点赞、收藏、转发。如果你有任何问题,也欢迎在评论区留言交流。