CTR预估模型演进史:从逻辑回归到深度学习的关键路径
做推荐系统这些年我最喜欢跟新人聊的一条演进线就是CTR预估模型是怎么一步一步走到今天的。CTR点击率预估这个指标听起来很朴素无非是“展示之后用户点没点”但它是推荐系统里最核心的预测目标之一直接决定一个物品排在哪个位置、一条广告值多少钱、一个视频能获得多少流量。我一直觉得把CTR技术的历史脉络读透比单纯背模型公式有价值得多因为你看到的不是一堆孤立模型而是一套完整的、围绕“如何理解用户兴趣”展开的问题求解思路。这篇内容适合三类人看一是刚入行不久的推荐算法工程师需要一个清晰的技术坐标知道当前各种花哨模型从哪里来、到哪里去二是做数据产品和增长运营的同学明白点击率背后连着什么样的商业价值三是已经在工业界做特征、做训练的资深研发哪怕你每天在调某个模型回头看一遍演变史也会发现很多当年没想通的细节其实早在若干年前就被前人踩过了。1. 为什么CTR预估是推荐系统里最值得深挖的一条线1.1 从点击率到商业价值的链路推荐系统的完整链路通常是召回 → 粗排 → 精排 → 重排 → 展示。召回负责从百万甚至亿级候选里选出几百个可能感兴趣的物品粗排用轻量模型快速过滤精排则是对剩下的几十个物品做精细打分这个打分结果基本决定了用户最终看到什么。CTR预估主要发生在粗排和精排这两层。精排模型估计用户点击某个物品的概率重排阶段再结合多样性、业务规则、商业约束做最终调整。这里出现一个很关键的道理点击率虽然是“点没点”的二分类问题但它背后代表的是用户在当前场景下对内容的迫切程度。一个CTR高的物品不一定用户真的喜欢但它至少说明推荐系统给出的排序符合用户当下的注意力分布。从商业角度看点击率往往直接连到广告计费、内容消耗和商品成交。很多广告系统采用点击计费模式预估CTR稍微偏差一点平台和广告主两侧的收益波动都会被放大。正因如此CTR模型的每一次提升哪怕是零点几个点的AUC涨幅放到几亿用户的规模上都可能转化成巨大的商业价值。这也是为什么这么多团队愿意投入大量人力去研究CTR模型结构。1.2 看懂演变的两个视角特征组合与表达能力的延伸如果只记模型名字看历史很容易变成“一头雾水”。我通常建议大家用两个视角串起整条线第一个视角是特征组合能力。早期逻辑回归完全依赖人工做特征交叉后来FM用隐向量自动建模二阶交叉GBDT用树结构自动生成高阶交叉深度学习则直接把特征扔进Embedding和神经网络让高维非线性的特征交互自动涌现。你会发现整个演变过程就是“人工特征工程”不断被替代、被自动化的过程。第二个视角是模型的表达能力。从线性模型到浅层非线性模型再到深层神经网络、注意力机制、序列模型、多任务学习、生成式模型模型能感知的信息范围越来越广从单个样本的静态特征到用户历史行为序列再到跨任务、跨场景的全局信息。这两个视角一旦建立后面所有的技术节点都能挂上去不会迷路。2. 传统CTR模型时代特征工程就是模型的全部2.1 逻辑回归为什么能统治那么多年在深度学习普及之前逻辑回归Logistic RegressionLR是CTR预估的绝对主力后来很长一段时间里也依然是工业界的基线模型。它的形式非常简洁对特征加权求和再套一个Sigmoid函数输出0到1之间的点击概率。逻辑回归能统治多年靠的不是表达能力而是工程友好性。线上打分只需要做一次大规模稀疏向量点积延迟极低模型参数可以随着新样本增量更新非常适合广告和推荐这种数据源源不断产生的场景而且每个特征的权重都有明确含义运营和算法同学能直接解释“这个特征让点击率涨了还是降了”这在业务协作中非常宝贵。当时的核心工作几乎全在特征工程上。工程师们要做特征离散化把连续值切分成多个区间再把类别特征做one-hot编码变成高维稀疏向量。常见的特征包括用户ID、物品ID、用户年龄段、商品类目、当前时间、历史点击次数等。为了让模型记住组合信息大家还会手动构造大量交叉特征比如“用户品类偏好 × 当前场景”这类看起来很有脑洞的组合。训练方面早期常用SGD随机梯度下降做大规模稀疏模型的训练后来FTRL这类在线优化算法因为能兼顾稀疏性和收敛速度成为各大平台处理海量点击日志的标配。损失函数就是经典的交叉熵模型对正样本预测概率越接近1、对负样本预测概率越接近0损失越小。整个流程很成熟但问题也很明显人工特征组合的规模是有限的线上业务一多特征列表容易膨胀到失控而且很多隐性交叉关系是人工难以预设的。提示LR虽然简单但不要小看它。很多团队用深度学习替换LR后线上收益并不明显原因往往不是模型不好而是特征工程做糙了。LR加好特征通常能打赢结构花哨但特征稀疏的深度模型。2.2 FM与FFM给特征组合加上隐向量逻辑回归最大的痛点是无法自动学习特征之间的二阶交叉关系。如果数据里“年轻用户 游戏品类”这个组合很重要但样本中这个组合出现次数很少人工构造的交叉特征可能根本没能覆盖到或者参数估计很不稳定。FM因子分解机的核心思路是不再为每个特征组合单独学习一个参数而是为每个特征学习一个低维隐向量两个特征的交叉权重直接用它们隐向量的内积来表示。举个例子用户年龄段取值为“20~25岁”物品品类取值为“游戏”只要分别学到这两个特征的向量它们的交互就能被推断出来。即使“20~25岁 游戏”这个组合在样本里很稀疏也能从其他组合中借到信息这就大大缓解了稀疏特征场景下二阶组合参数无法可靠估计的问题。FM还有一个让工程师很喜欢的特性二阶交叉部分可以写成平方项减去向量内积平方的形式计算复杂度能从O(n²)降到O(kn)其中k是隐向量维度。这意味着在特征数量很大的点击日志上依然可以用相对低的成本完成训练和推理。FFMField-aware Factorization Machine是FM的一个重要升级它进一步考虑了“场”Field的概念。在FFM中每个特征对不同场要有不同的隐向量比如“用户ID”这个特征在和“物品ID”交叉、和“时间特征”交叉时应该使用不同的向量表示。这种细化让模型表达能力更强在不少CTR比赛和工业场景中效果优于FM但参数量和计算复杂度也随之涨了一截线上部署时要做更多工程优化。2.3 GBDT自动交叉那时候的“手动大模型”在深度神经网络大规模应用之前GBDT梯度提升决策树是特征工程领域的一把利器尤其是“GBDT LR”的组合方案曾经在一段时间里代表了传统CTR模型的天花板被很多平台拿去打榜并验证了线上效果。GBDT做的事情是通过多轮迭代训练一组决策树每棵树拟合前面所有树预测结果的残差。对CTR问题来说把所有样本的连续特征比如用户历史点击次数、活跃天数等和部分稀疏特征喂进去经过若干轮迭代每棵树的叶子节点实际上代表了一条自动学到的特征组合规则。为了把树模型变成线性的可组合特征常见做法是对训练好的若干棵树取每个样本落在每棵树的叶子节点编号然后做one-hot编码生成一个高维稀疏特征向量。比如有10棵树、每棵64个叶子那么每个样本就会得到一个640维的稀疏特征其中只有10个位置是1。这些编码后的特征再送给LR就构成了GBDT LR的两阶段模型。实际操作中这个方案有两个非常关键的经验点一是树的数量和叶子数不能盲目加大否则编码后的特征会极度稀疏LR训练时容易过拟合二是GBDT这种树模型不能频繁在线更新通常是每天或每小时离线训练一次再同步给线上LR使用。# 伪代码用GBDT产出交叉特征并交给线性模型 import numpy as np # gbdt是训练好的多棵树x_raw是单条样本的原始连续特征 def gbdt_feature_transform(gbdt, x_raw): leafs [] for tree in gbdt.trees: leaf_idx tree.apply(x_raw) # 得到该样本在当前树的叶子编号 leafs.append(leaf_idx) # 把所有叶子编号拼接成一个稠密整数序列再用one-hot编码 return to_onehot(leafs) # 将转换后的特征拼接上原始特征一起送给LR训练 train_feature np.hstack([raw_feature, gbdt_feature_transform(gbdt, X_train)])回到当时的视角GBDTLR已经让模型具备了“自动做高阶交叉特征”的能力但距离真正的端到端还有距离因为树模型本身依然是离线训练、离线产出的结构无法像神经网络那样直接在点击日志上反复打磨每个参数。这个时代很像“手动大模型”人要负责设计树的数量、深度、学习率还要不断调整LR侧的稀疏特征处理逻辑。3. 深度学习CTR模型从Embedding开始的表达革命3.1 Embedding层把所有特征拉进同一个语义空间深度学习给CTR模型带来的第一个根本性变化不是神经网络本身而是Embedding嵌入机制。传统one-hot编码会把每个ID变成一个几万维的稀疏向量特征之间彼此孤立模型根本看不出两个不同ID有什么相似性。Embedding则是把每个ID映射成一个几百维的稠密向量维度远小于原始特征空间但能表达更丰富的语义关系。打个比方one-hot像是每个人都有一个完全不同的ID编号模型无法根据编号判断两个人的相似程度Embedding则像给人发了一张性格评分表评分接近的人就被认为是相似的用户。推荐系统里用户ID和物品ID的Embedding会在训练中不断调整逐渐让“点击过同一类物品的用户”共享相似向量空间。这一机制的工程意义极其重要。它让模型可以在超高维稀疏特征上训练同时把参数量控制在可接受范围内。一个大型电商平台可能有上亿用户、几千万商品如果都用稠密的Embedding表示模型整体参数量可能达到几十亿甚至上百亿这直接推动了大规模分布式训练框架和Embedding参数服务器的发展。Embedding落地时有个常见问题频率极低的ID无法学习到有意义的向量。业界通用做法是设置最小出现次数阈值过滤掉出现次数过少的ID或者让它们共享一个“默认Embedding向量”。这个细节看起来小处理不好会让模型在冷门物品上做出很离谱的预测。3.2 WideDeep、DeepFM、DCN、xDeepFM各自解决什么问题深度学习CTR模型百花齐放的第一波主要是围绕“如何把线性记忆能力和神经网络泛化能力结合”展开的。这里最值得记住的几款模型放在一起看其实非常清晰我用一张表来梳理对比。模型核心思想特征交互方式典型适合场景Wide Deep线性Wide负责记忆深度DNN负责泛化浅层线性 深层非线性既需要强记忆用户历史偏好又需要自动泛化新组合的场景比如推荐中的个性化召回与排序DeepFM用FM替换Wide侧实现端到端自动交叉FM做低阶交互DNN做高阶交互大规模稀疏CTR场景希望减少人工交叉特征DCN提出Cross网络显式做高阶特征交叉多层Cross层做bit-level交叉特征维度高、交叉关系强的搜索和广告排序xDeepFM在向量级别做显式高阶交叉压缩交互网络做vector-level交叉需要精细建模多特征向量交互的复杂场景WideDeep的思路非常工程化Wide侧就是一个小型LR能精准记住用户过去点击过的组合比如“晚上 长视频”Deep侧是一个全连接神经网络能把没见过的组合泛化出来比如“用户喜欢A类视频可能也喜欢类似的B类视频”。两者共享输入特征和Embedding一起训练。这套结构后来成为许多深度推荐系统的地基。DeepFM则干脆把Wide侧换成FM这样不仅保留了低阶特征交叉能力还能和DNN一起端到端训练不需要像WideDeep那样手动设计Wide侧的特征组合。DCN和xDeepFM则在“高阶交叉”上做文章DCN的Cross网络通过多层运算让特征维度之间直接交互xDeepFM进一步把交叉提升到向量级别。这几款模型并没有绝对优劣更多是看特征形态和业务目标。3.3 深度模型上线后工程链路发生了什么变化用上深度学习CTR之后整个工程链路和传统时代几乎是两个物种。特征处理从人人可手写的脚本变成了需要统一管理和版本控制的特征平台模型训练从单机或者简单参数服务器变成了支持数百亿Embedding参数的分布式训练集群线上打分从每次几十微秒的稀疏向量点积变成了包含多层神经网络前向推理的计算过程。我记得做第一个深度CTR项目的时候最难受的其实不是模型结构而是Embedding字典同步。训练服务器上维护一份很大的Embedding表线上服务又需要实时读取最新版本。如果同步机制做得不好线上拿到的Embedding还是旧版本模型预测就会和离线评测差一大截。后来很多团队都靠“双缓冲”或“增量快照”机制解决这个问题也就是同时维护当前版本和影子版本切换时保证线上请求不受影响。另一个容易被忽视的点是特征覆盖度。深度模型对每一维特征的质量都更敏感如果一个特征在离线训练数据里覆盖率为90%在生产环境只有60%那么模型训练出来的Embedding天然就会有偏。这个问题的排查难度比想象中大得多经常表现为“离线AUC很高上线A/B测试却没有效果”。4. 用户兴趣的动态建模注意力机制与序列模型4.1 DIN用户的兴趣不是静态的到了这个阶段CTR模型不再满足于只看“用户是谁、物品是什么、今天几点”而是开始认真考虑一个本质问题用户的兴趣是动态的并且会随候选物品变化。DINDeep Interest Network提出了一个非常直觉的机制当模型预测用户对某个候选物品的点击率时不应该把用户所有历史行为一视同仁地做平均而是应该让与候选物品更相关的历史行为起到更大作用。这个“更大作用”就是注意力权重。举个电商场景例子用户今天既看了手机壳又看了跑鞋。现在来了一条新款手机的候选模型应该更关注用户最近看手机壳的行为而不是运动鞋的历史换一条篮球鞋候选时注意力则应该转移到跑鞋那部分历史。DIN的做法是对候选物品Embedding和用户每条历史行为Embedding做内积得到相似度分数再通过Softmax归一化为注意力权重最后对历史行为向量做加权求和作为用户的“动态兴趣表示”。我个人的经验是DIN类结构在行为历史比较丰富的用户身上提升尤其明显但遇到新用户行为稀疏时注意力机制很容易退化基本退化成简单的平均Pooling。这时候需要靠ID类特征和物品内容特征去兜底不要指望注意力能解决冷启动问题。4.2 DIEN把点击行为看作一个过程DIN虽然给历史行为加了权重但本质上还是把所有历史行为当成一组独立的、无序的向量。可真实的用户浏览行为是有先后顺序的用户先看了A再看了B然后点击了C这个时间顺序本身就是兴趣变化的重要信号。DIENDeep Interest Evolution Network在这条路上走得非常彻底它用GRU门控循环单元之类的循环结构来建模用户历史行为的序列演变过程让模型能够捕捉“用户在当前候选物品出现之前兴趣是如何一步步演变过来的”。除了结构上的序列建模DIEN还有一个很有意思的工程细节引入辅助损失。因为CTR样本只能告诉我们用户是否点击这个候选并没有直接告诉模型“用户的兴趣向量应该是怎样的”梯度信号其实很弱。辅助损失的做法是拿每一时刻的隐藏状态去预测用户下一个行为相当于用行为预测来额外监督兴趣向量的学习。这样训练出来的兴趣表示会更贴合真实行为演化。这里要提醒一句序列模型比静态DIN结构训练慢不少而且线上推理时需要对用户历史行为做一个截断一般取最近几十到几百条行为即可。序列长度一经设定就相当于做了一个强假设太短可能丢失早期兴趣太长又会带来噪音和计算压力。真实项目里可以根据行为均值数和延迟预算来调。4.3 Transformer结构如何接管行为序列建模循环神经网络GRU虽然能建模顺序但只能从左到右逐步传递信息越靠前的影响越容易衰减。后来者把自然语言处理领域大放异彩的Transformer结构引入了行为序列建模用多头自注意力机制让序列里任意两个行为之间都能直接交互一步到位捕捉长距离依赖。用Transformer做用户行为序列建模大致流程是把用户历史行为对应的物品Embedding加上位置编码然后经过若干层自注意力编码器得到每个位置的新表示再把这些表示汇总成用户的序列兴趣向量和候选物品特征一起进入最终CTR预测层。这种结构对“行为之间互相影响”的建模能力非常强比如用户看完手机后又看了耳机历史序列里这两个行为会相互增强上下文信息。但在工业落地时传统Transformer的计算复杂度是序列长度的平方行为序列拉长后开销会快速上升。很多平台在实践中的做法是限制最长序列长度、只取最近一段行为同时用多层蒸馏把大模型压缩成线上可以承受的小模型。注意当用户行为序列越变越长与其盲目加长输入不如认真做行为筛选。比如优先保留与候选品类相关的历史行为再做注意力建模效果往往比堆长度更好。5. 转化链路与多任务建模CTR不再是孤立指标5.1 CVR预估为什么更难CTR预估预测的是点击但很多业务真正关心的是更深一层的转化比如电商里的购买、内容平台里的完播、广告里的下单。CVR转化率预估算起来比CTR难得多主要有三个原因。第一是样本稀疏。点击已经是一个低频事件转化比点击还要稀疏得多尤其在短视频或信息流广告场景可能几百上千次曝光才产生一次转化。模型能在稀疏样本上学到的有效信号非常有限。第二是样本选择偏差。传统CVR模型如果只用点击后的样本训练训练数据本身就是被“点击”筛选过的这会让模型低估那些“小概率被点击但一旦点击就很容易转化”的优质物品。第三是延迟反馈。用户点击之后可能过很久才发生转化今天是点击样本明天可能就变成转化样本了。这在实时训练系统中会造成标签偏差如果处理不好模型会误判很多待转化的点击为负样本。5.2 ESMM与MMoE两种典型的多任务解法解决CVR预测困难的一个重要思路是把相关知识从数据更丰富的任务中迁移过来也就是多任务学习。ESMMEntire Space Multi-Task Model是一个非常经典的解法。它将“曝光 → 点击 → 转化”这一整条链路拆成两个同时训练的任务CTR任务和CTCVR点击且转化任务。模型同时接收全量曝光样本而不是只从点击样本中训练CVR这就在很大程度上解决了样本选择偏差问题。两个任务共享底层Embedding转化率可以间接表示为CTCVR除以CTR从数学上形成了一个完整一致的目标体系。MMoEMulti-gate Mixture-of-Experts则是另一类常见做法。它设计了多个专家网络每个专家都能从不同角度处理输入特征再用一个门控网络根据当前样本的特点动态决定各专家的权重组合。这个结构很适合任务差异比较大的场景比如既要预测点击率又要预测视频完播时长两者背后的用户动机差异很大时完全共享底层就可能互相拖累。MMoE让模型在共享与独立之间找到一个平衡点。从我实践的角度看多任务模型上线前一定要厘清各任务之间的尺度关系。点击率是0到1的概率完播时长是一个秒数GMV是一个金额它们要经过适当的变换或独立塔处理才能在统一Loss里被公平优化否则容易陷入“大数值任务压过小数值任务”的问题。5.3 全域建模与冷启动的现实意义多任务建模的升级版思路是全域建模不再针对单个CTR或者单个CVR单独打分而是直接建模一个统一目标比如电商里的商品成交总额GMV或者短视频里的综合消费时长。这类模型会根据业务目标给点击率、转化率、客单价分别估计再通过公式组合成一个最终分。这里的难点在于不同指标之间存在复杂的相互影响转化率可能很高但客单价很低点击率高但退货率也高。全域建模还带来另一个好处冷启动。当一个新物品上线时它的点击样本很少但平台可以从相似品类的转化统计中获得先验知识。于是很多系统开始引入“相似物品Embedding平均”策略新物品与若干历史商品计算相似度用相似商品的Embedding均值作为初始表示再叠加少量内容侧特征标题、图片、品牌、类目让其在第一天就能获得一个不算离谱的排序位置。这是工程上非常实用的一招。6. 生成式推荐与大规模预训练CTR的下一个形态6.1 大模型在推荐系统里能做什么这两年大规模预训练模型开始渗透到推荐系统的各个角落。很多人问大模型是不是要替代传统CTR模型我的判断是短期不会但它确实在改变CTR模型的“外圈”能力。大模型目前在推荐系统里能干的事情至少有三类。第一类是特征编码和语义理解把物品的标题、图片描述、类目名称等文本信息交给大模型生成富含语义的向量表示然后作为CTR模型里的额外特征输入。第二类是行为序列的深层理解用预训练模型先对用户历史行为做无监督重建训练再迁移到CTR精排任务上往往能学到更通用的兴趣表示。第三类是辅助推荐流程比如用大模型生成推荐理由、自动解释推荐结果、辅助运营编辑撰写活动文案这些都能提升产品体验。但要注意一个现实约束大模型推理成本远高于传统CTR模型线上几万QPS的场景根本扛不住直接调用大模型。实践中通常是离线用大模型做特征和候选增强线上继续使用轻量模型做实时打分。这也是我强烈建议工程团队遵循的路径。6.2 生成式推荐把“排序”变“生成”更进一步的方向是生成式推荐。传统推荐是把候选集里的每个物品分别打分再按分数排序生成式推荐则把推荐问题看作一个条件生成问题直接根据用户的历史行为生成下一步最可能感兴趣的若干物品或者直接生成一个有序推荐序列。这里可以借用自然语言生成的基本理解用户行为序列里的每一个点击、每一个交互行为可以看成一条由物品ID组成的“语句”中的Token生成式模型根据这条“语句”预测下一个Token也就是用户最可能产生交互的下一个物品。系统输出的是一串候选物品ID而不是一个排序分。生成式推荐的魅力在于它跳过了传统“候选生成 打分排序”的割裂流程让整个推荐过程在同一个模型里端到端完成。挑战也很直接物品ID空间极大生成输出很容易出现不在候选空间里的ID必须配合受限解码和候选校验。目前这个方向还在快速演化中我更愿意把它看作CTR技术的一种自然延伸而不是完全推翻。6.3 趋势判断CTR会消失还是会转型我个人的判断是CTR这种预测形式不会消失但它会从“一个简单的概率数字”转型为“一个完整决策体系里的基础组件”。因为无论推荐系统最终用多复杂的生成模型商业决策最终还是要落到期望收益的计算上而期望收益本身就包含了对用户行动概率的估计。CTR模型演变了这么多年底层的问题没有变只是答案的形态在不断变化。未来的CTR模型一定会越来越多地结合多模态信息、长期行为记忆、跨场景共享和大模型推理能力。但越是这样越需要从业者理解历史为什么FM能解决稀疏交叉问题为什么Attention能建模动态兴趣为什么多任务能缓解样本偏差这些底层规律不会因为模型结构改变而失效反而是你做技术判断时真正能依赖的锚点。7. 从模型演变中总结出来的工程经验7.1 评估指标与离线在线的一致性陷阱CTR模型迭代中最容易出现的问题就是离线指标涨得很好上线一测却没效果甚至负向。这里最常见的原因有三个。第一个是评估方式太粗。全局AUC虽然便于对比但推荐场景用户差异很大更有参考价值的常常是GAUC也就是按用户分组计算的AUC加权平均。同一模型在不同用户群体上表现差异巨大全局AUC很容易掩盖这个问题。第二个是离线样本与线上分布不一致最典型的就是特征穿越。比如用了当日的统计特征去预测当日点击离线表现必然虚高因为标签信息被泄露进特征了。做特征时必须严格保证训练时该特征只能使用标签时刻之前的信息。第三个是简单用LogLoss判断模型。CTR数据里负样本占比极高模型如果总是预测很小的概率LogLoss会比自己想的更敏感。建议同时看AUC、GAUC、校准度、PCOC等多个指标综合判断。7.2 线上延迟与模型复杂度的取舍模型效果和线上延迟之间永远存在矛盾。一次精排请求通常有几十毫秒的预算其中特征获取、模型推理、业务规则都要占时间。如果精排模型用的是类似Transformer的大结构很可能光推理就要几十毫秒用户感受到的就是卡顿。我踩过几次坑之后总结出几条实用经验一是线上工程量级估不准时先用小模型跑通全链路再逐步替换复杂模块二是能用特征筛选解决的尽量不要加模型复杂度三是如果模型真的很大考虑蒸馏方案用一个轻量学生模型模仿大模型的输出两个模型的效果差距通常能控制在可接受范围内。还有一个非常容易被忽略的点模型推理时KV Cache和Batch显存占用也要提前压测否则模型还没上线GPU先被压垮了。7.3 特征管理与数据治理特征工程永远不会消失只是从“手工设计”变成了“平台化管理”。我见过太多深层模型因为一个垃圾特征翻车。特征上线之前至少要查三样东西覆盖率、稳定度、与标签的时间先后关系。覆盖率低于某阈值比如60%的特征对模型贡献很小却会拖慢训练稳定度差的特征比如一周内分布剧烈变化线上使用起来风险极高时间先后关系错位的特征就更不用说了属于数据事故。另外一个必须强调的点是在线离线特征一致性。训练时同一套特征逻辑和线上打分时用的必须是同一份代码、同一个版本否则模型学到的分布和线上输入分布根本对不上。最好建立特征校验流水线每天自动对比离线特征统计和线上采样特征统计差异超阈值时及时告警。这个工作很枯燥但对推荐系统的稳定性来说价值比无脑调模型结构大得多。7.4 速查表一代模型一代路最后把这套演进史总结成一张速查表方便大家按场景选型时快速定位。模型时代代表方法核心优势主要代价适合场景线性时代LR、FTRL简单、可解释、快速更新需要大量人工特征和交叉新团队快速上线基线、预算有限的场景浅层组合FM、FFM、GBDTLR自动二阶交叉、部分高阶交叉工程链路复杂、离线在线模式割裂特征稀疏、有强交叉关系的传统推荐深度表示DeepFM、DCN、xDeepFM端到端、非线性表达、自动高阶特征训练成本大、Embedding同步复杂大规模ID特征、复杂业务的中大型系统兴趣建模DIN、DIEN、Transformer序列动态兴趣、长短期行为建模序列长度敏感、推理成本高行为丰富、时效性强的电商和内容平台多任务与全域ESMM、MMoE解决稀疏与选择偏差、统一商业目标目标之间容易互相干扰转化链路长、多业务指标并存场景生成式与大模型生成式推荐、预训练增强语义强、序列建模强、端到端生成成本高、稳定性有待验证内容理解要求高、长期探索型业务这个表不是标准答案只是给了一个选型坐标系。真实业务中很多团队是同时使用多个时代模型形成级联结构粗排用LR或FM快速过滤精排用深度兴趣模型重排再套多目标模型和大模型增强的规则。演变史从来不是一条单行道更像是层层叠加的地层。8. 我的个人体会与给新人的建议如果让我压缩所有经验给正在学习CTR的新人三条建议我会说先吃透业务链路再谈模型结构。我在实际项目里见过太多同学一上来就追最新的模型结果连“这个候选是怎么进来的”“这个转化指标怎么归因”都没搞清最后做出的模型效果自然一般。第二条是不要迷信复杂度。模型结构不是越复杂越好一个DeepFM加一套扎实的特征管理往往比一个复杂的多任务大模型更容易见到收益。优先把数据管好把离线在线一致性搞定把样本质量提上去这些基础的收益天花板比模型层更高。第三条是重视从历史里找答案。很多当下看起来全新的问题回到十几年前甚至几十年前的模型思想里都能找到影子。LR时代的特征离散化经验放到深度学习CTR里一样适用FM解决稀疏交互的思路至今仍是很多新模型的理论底色。理解了这些你才不会被一波又一波的概念反复收割。最后再分享一个实际操作的小技巧每次要换模型结构时先给自己设定一个“增量下限”。比如要求新模型离线GAUC至少提升0.5个点否则不考虑上线。这个阈值看起来简单却能逼着团队把精力放在真正有效的改进上而不是为了换结构而换结构。CTR技术演变了这么多年最珍贵的东西从来不是某个模型的名字而是推动每个模型出现的真实问题和解决问题的耐心。

相关新闻

中小型机房IP温湿度监控极简组网方案

中小型机房IP温湿度监控极简组网方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:07:40 阅读更多 →
振动检测传感器选型与工程实践指南

振动检测传感器选型与工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:07:40 阅读更多 →
嵌入式OLED画线死循环排查:Bresenham算法边界与溢出修复

嵌入式OLED画线死循环排查:Bresenham算法边界与溢出修复

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:06:40 阅读更多 →

最新新闻

Sakurairo:AI 辅助阅读 + 媒体聚合,一个 WordPress 主题搞定个人博客

Sakurairo:AI 辅助阅读 + 媒体聚合,一个 WordPress 主题搞定个人博客

Sakurairo:AI 辅助阅读 媒体聚合,一个 WordPress 主题搞定个人博客 【免费下载链接】Sakurairo A WordPress theme that is built with AI-assisted reading features, colorful, user-friendly, well-rounded, and rich in functionalities. Support C…

2026/10/18 1:53:52 阅读更多 →
gdsdecomp 教程:从 PCK 快速恢复一个可编辑的 Godot 项目

gdsdecomp 教程:从 PCK 快速恢复一个可编辑的 Godot 项目

gdsdecomp 教程:从 PCK 快速恢复一个可编辑的 Godot 项目 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp gdsdecomp(Godot RE Tools)是一个 Godot 逆向工程…

2026/10/18 1:53:52 阅读更多 →
档案环境多节点温湿度数据可信校验四层防御体系

档案环境多节点温湿度数据可信校验四层防御体系

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:53:52 阅读更多 →
用HelixDB和S3为Agent构建长期记忆:从原理到docker-compose实践

用HelixDB和S3为Agent构建长期记忆:从原理到docker-compose实践

给Agent加长期记忆,我在生产环境里最后采用的方案,说出来你可能不信:HelixDB 加一个 S3 桶,就够了。不是额外引一个庞大中间件,不是自己搭一套存储集群,更不是把记忆写进Agent进程的内存里假装它不会丢&…

2026/10/18 1:53:52 阅读更多 →
SSH远程执行命令完全指南:从单条命令到批量运维实战

SSH远程执行命令完全指南:从单条命令到批量运维实战

简介:通过 SSH 在远程 Linux 系统上安全执行命令,是系统管理员、运维工程师与开发者绕不开的日常操作。这份 PDF 资料从 SSH 工作原理与加密认证机制入手,先解释加密隧道如何保障传输安全,再依次介绍远程执行单条命令、用逻辑运算…

2026/10/18 1:53:52 阅读更多 →
i茅台自动预约系统:一条Docker命令跑通每日定时预约

i茅台自动预约系统:一条Docker命令跑通每日定时预约

i茅台自动预约系统:一条Docker命令跑通每日定时预约 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法) 项目地址: https://gi…

2026/10/18 1:52:52 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →