当前位置: 首页 > news >正文

计算广告技术:从CTR预估到智能出价系统

计算广告技术:从CTR预估到智能出价系统

互联网广告是一门被算法深度改造的生意。一次广告曝光背后,系统要在几十毫秒内完成召回、粗排、精排、出价一整套决策,直接决定平台的收入和广告主的 ROI。这套链路里积累的技术——大规模稀疏特征建模、在线学习、强化学习出价——对做推荐和搜推广的开发者都有参考价值。本文按广告系统的核心模块展开,聊聊 CTR 预估的模型演进和智能出价的实现思路。

广告系统的整体漏斗

工业广告系统普遍采用级联架构:先从上千万候选广告中召回几千条(召回),用轻量模型快速打到几百条(粗排),再用重型精排模型预估每个候选的 CTR/CVR,最后按 eCPM(expected Cost Per Mille)排序并结合出价策略决定最终曝光。

eCPM 的计算逻辑是广告排序的核心:CPC 计费下 eCPM = pCTR × bid × 1000。可以看到 CTR 预估的准确性直接决定排序质量——pCTR 高估 10%,平台就可能把钱浪费在没人点的广告上;低估则把好流量让给了对手。

CTR 预估:从 LR 到深度序列模型

CTR 预估的挑战在于特征极度稀疏(用户 ID、广告 ID、类目都是千万级维度的 one-hot)且组合特征决定效果。模型演进大致经历了四代:

  1. LR 时代:逻辑回归 + 人工特征工程,简单可控可在线学习,但组合特征全靠人肉构造,天花板明显;
  2. GBDT+LR:Facebook 2014 年的经典方案,用 GBDT 自动做特征组合和离散化,叶子节点编号喂给 LR,减少了手工特征的工作量;
  3. Wide & Deep / DeepFM:Wide 侧记忆、Deep 侧泛化。DeepFM 用 FM 层替代 Wide 侧的手工交叉,一阶二阶特征与深度网络共享 embedding,端到端训练,至今仍是很多团队的 baseline;
  4. 行为序列模型:DIN、DIEN、SIM 这一系,把用户历史点击序列引入模型,用注意力机制让候选广告去"查询"相关历史行为,捕捉兴趣的多样性和时序演化,是效果提升最显著的一代。

一个简化版 DeepFM 的核心结构如下:

import torch import torch.nn as nn class DeepFM(nn.Module): def __init__(self, field_dims, embed_dim=16, mlp_dims=(128, 64)): super().__init__() num_fields = len(field_dims) self.embedding = nn.ModuleList( [nn.Embedding(dim, embed_dim) for dim in field_dims] ) self.linear = nn.ModuleList( [nn.Embedding(dim, 1) for dim in field_dims] ) total_embed = num_fields * embed_dim self.mlp = nn.Sequential( nn.Linear(total_embed, mlp_dims[0]), nn.ReLU(), nn.Linear(mlp_dims[0], mlp_dims[1]), nn.ReLU(), nn.Linear(mlp_dims[1], 1), ) def forward(self, x): # x: (batch, num_fields) 每列是某个特征域的 id embeds = [emb(x[:, i]) for i, emb in enumerate(self.embedding)] embed_stack = torch.stack(embeds, dim=1) # (B, F, D) # FM 二阶项: 0.5 * ((sum(v))^2 - sum(v^2)) sum_square = embed_stack.sum(dim=1).pow(2) square_sum = embed_stack.pow(2).sum(dim=1) fm_term = 0.5 * (sum_square - square_sum).sum(dim=1, keepdim=True) linear_term = sum(lin(x[:, i]) for i, lin in enumerate(self.linear)) deep_term = self.mlp(embed_stack.view(x.size(0), -1)) return torch.sigmoid(linear_term + fm_term + deep_term)

几代模型的对比可以总结为:

| 模型 | 特征组合能力 | 是否利用行为序列 | 训练成本 | 适用场景 | | --- | --- | --- | --- | --- | | LR | 依赖人工交叉 | 否 | 极低 | 冷启动、基线监控 | | GBDT+LR | 树模型自动组合 | 否 | 低 | 中小数据量 | | DeepFM | 二阶自动 + 深度高阶 | 否 | 中 | 通用精排 baseline | | DIN/SIM | 高阶 + 序列注意力 | 是 | 高 | 大流量、用户行为丰富 |

召回与粗排:漏斗上游的工程权衡

精排模型再强,候选集里没有好广告也白搭。召回侧常用多路策略:定向标签召回(年龄、地域、兴趣标签)、向量召回(双塔模型把用户和广告编码到同一向量空间,ANN 检索)、以及探索性召回(给新广告冷启动流量)。

粗排是夹在中间的妥协产物:双塔结构把用户塔和广告塔分开,广告向量可以离线预计算,在线只需算一次用户向量和内积,单次打分成本比精排低两个数量级。代价是双塔限制了特征交叉能力,所以近年的趋势是用知识蒸馏让粗排逼近精排——精排模型做 teacher,粗排做 student。

智能出价:oCPC 与强化学习<

http://www.jsqmd.com/news/1234685/

相关文章:

  • Android-Smart-Login进阶:自定义登录系统的实现与优化指南
  • Vue Language Tools 终极指南:高性能Vue语言工具完整教程
  • Windows Auto Dark Mode终极指南:拯救你的眼睛,告别手动切换的烦恼
  • Godot体积光插件:从原理到实战,轻松实现游戏中的God Rays效果
  • 在Windows上安装安卓应用:告别模拟器的轻量级解决方案
  • 跑遍营口实测 6 家黄金奢品回收门店!报价透明无扣费,实体店地址电话直接收藏 - 不晚生活号
  • Minmea:嵌入式世界的GPS数据解码艺术
  • Playnite游戏库管理器:免费开源的一站式游戏整合终极解决方案
  • 《自然》期刊前沿研究解析:量子计算与基因编辑新突破
  • Video2X终极指南:免费AI视频增强神器,从模糊到高清的智能升级方案
  • C28x DSP SCI驱动实战:自动波特率检测与内部环回模式详解
  • 向量数据库实战:选型、调优与落地~系列文章11:六大向量数据库横评:Milvus vs Qdrant vs Chroma vs FAISS vs Weaviate vs Pinecone
  • C++核心知识图谱与避坑指南:从环境配置到内存管理实战
  • Dubbo:全景速查手册(完整版·多表格体系梳理)/ Java RPC 远程调用框架
  • 军用航空事故分析与安全改进措施
  • 如何深度定制GTA5:4大模块架构解析与5步实战指南
  • 告别物理记忆卡!Open PS2 Loader虚拟记忆卡(VMC)完整使用指南 [特殊字符]
  • 嘉兴哪里回收黄金靠谱?2026 年 7 月实时金价参考,6 家 24 小时正规门店实测,再也不用交折旧费 - 不晚生活号
  • 3大核心功能深度解析:如何高效掌握QGroundControl无人机地面站开发与实战
  • 如何5步轻松完成Windows APK安装:终极免费跨平台工具指南
  • 河北定制团怎么选?2026经济/舒适/豪华三档预算对比 - 老金2026
  • AWS 添加付款方式失败排查清单:卡片、银行风控与账号状态逐项定位
  • ComfyUI-Impact-Pack:AI图像局部增强的智能解决方案
  • 三秒定位百万文件:FSearch如何让Linux搜索体验超越Windows
  • 深度解析PROPKA 3:蛋白质pKa预测的实战指南与性能评估
  • Delicate多语言支持:国际化(i18n)和多语言UI的配置与开发指南
  • 向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
  • SystemVerilog代码质量实战:用Verible深度优化开发工作流
  • Amphenol ICC DRPC21A005740线束组件技术特点及国产替代应用分析
  • AI时代Java程序员进阶指南:构建核心知识体系与实战应用