ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

直播推广轻量出价算法:预算平滑、水位估计与动态折扣实战

直播推广轻量出价算法:预算平滑、水位估计与动态折扣实战

直播推广的出价,乍看只是广告系统里的一个小模块,实际动手做过的工程师都知道,这里面的复杂度一点都不小。一场直播往往只有两三个小时,预算要在开播窗口内花完,还要守住广告主设定的回报率红线;与此同时,竞价水位每隔几分钟就可能出现一大截变化。传统货架电商那种按天、按周设定的推广节奏,拿到直播间里经常失灵。最近,数据挖掘领域的一个重要学术会议上,某头部电商平台的广告算法团队放出了一项关于直播推广轻量出价算法的工作。引人注意的是,它没有走强化学习全参自学习的路线,反而把出价决策做成了几个可解释信号的小组合,主打“轻量、好用”。我当时的感受是,这个方向对一线广告算法工程师太友好了:可解释,易上线,出了问题也容易排查。这篇博文会把这类轻量出价算法背后的设计逻辑讲清楚,从真实痛点、核心机制,到实验设计、迁移边界,尽量还原一个完整的落地视角。

1. 直播推广出价的真实痛点:为什么传统方案越来越不好用

1.1 直播推广和货架式推广的三个本质差异

第一种差异是时间窗。货架式推广的预算按天消耗,商品详情页相对固定,点击转化链路可以按天或者按周来做归因。直播间完全不同,一场直播的有效推广窗口可能只有两三个小时,出价决策必须在分钟级甚至秒级完成,错过了某个流量高峰,后面再想补量基本补不回来。这个时间尺度的变化,让很多原本在货架场景表现良好的出价策略直接失灵。

第二种差异是目标随开播进程变化。货架式推广的目标通常是“日GMV最大化”,一天之内目标相对稳定。直播间则复杂很多:开场阶段要冲在线人数,直播间需要有热度;中场阶段追求转化和成交,ROI压力大;尾场阶段要清库存、冲单量,接受更低的回报要求。同样是“最大化成交额”,不同阶段对应的最优出价行为完全不同。

第三种差异是流量质量的高度动态性。直播间里的在线人数、主播正在讲解的商品、库存深度都在随时变化。同一个用户上午刷到一个直播间,可能只是随便看看;下午再进同一个直播间,可能正好被主播的话术打动,转化概率完全不一样。这意味着点击率、转化率的预估基准本身就在不断漂移,出价算法如果只依赖静态的商品特征,很难跟上节奏。

1.2 现网出价方案的两个极端:规则太笨,模型太沉

行业里现存的做法基本落在两个极端上。

第一类是完全靠规则出价,运营或者算法人员手工设置几个出价系数,比如按类目统一加价百分之多少、超出某个成本阈值就降价。它的优点一目了然:简单、可解释、上线快。缺点是太笨,一场直播里的流量变化非常快,手工系数往往滞后几个小时。我见过不少商家在直播开场时因为出价系数设得太高,预算前十分钟就烧掉一大半,后面只能眼睁睁看着直播间没有付费流量。

第二类是端到端强化学习出价。理论上这是上限最高的方案,模型可以自动学到不同时段、不同流量组合下的最优出价策略。但代价同样明显:需要海量历史数据做训练,对样本覆盖要求极高;线上推理链路复杂,出了问题时很难定位是哪个模块的锅;再加上可解释性几乎为零,运营和销售根本没法跟商家解释“为什么这一场直播的消耗曲线长这样”。中小广告主面对一个黑盒,很容易产生不信任感。

下面这个表可以更直观地看出两种方案的差异:

维度规则出价端到端强化学习出价
可解释性完全可解释几乎不可解释
上线成本低,配置参数即可高,需要完整训练与上线链路
数据需求低高,需要大规模历史样本
自适应能力弱,依赖人工更新强,模型自学习
风险策略滞后、预算浪费黑盒误判、冷启动难、排查困难

两头的空隙,恰好是轻量出价算法的生存空间。

1.3 轻量出价算法真正想解决的,不是性能问题

很多人第一次听到“轻量出价算法”,容易把它理解成“为了省计算资源做的简化版本”。但在直播推广这个场景里,轻量算法的核心价值不是少用几台服务器,而是让策略本身变得更透明、更可控。

轻量出价算法做的事情,是把“在预算约束下最大化转化目标”这个复杂问题,拆成几个各自承担明确职责的小模块。每个模块都回答一个简单问题:现在预算消耗快不快?当前竞价竞争激烈不激烈?这个流量值不值得花这么多钱?然后把这些答案组合成最终的出价。

这样做的好处,不限于工程实现简单。更重要的是,当算法跑出来的结果不符合预期时,团队可以快速定位到具体模块,而不是面对一个整体性的“模型结果”。在实际广告业务里,“可解释”往往比“多提升0.5%的效率”更有价值,因为只有说清楚了算法在做什么,运营、销售、商家才会真的敢用。

2. 出价算法怎么做“减法”:约束先行,信号才不打架

2.1 先把出价目标拆成“目标+硬约束”

轻量出价算法在设计上有一个很关键的顺序:先立约束,再谈优化。多数复杂模型容易犯的错,是把所有诉求都塞进一个目标函数里,让模型自己去权衡。到上线时运营发现这个商家的ROI破线了,模型团队却说不清为什么。

出价本质上是一个带约束的在线决策问题。

  • 目标:在预算约束下最大化直播间的有效成交额。
  • 约束一:ROI不能低于商家设定的红线,否则商家亏钱,推广计划很快会被关掉。
  • 约束二:预算要在整场直播内相对平滑地消耗,不能前半场打满、后半场断流。
  • 约束三:单次点击成本不能超过合理阈值,防止流量被个别高溢价关键词拉爆。
  • 约束四:要有“保底曝光”的机制,哪怕转化预测很低,也要保证直播间有一定的付费流量,否则整场直播完全没有新用户进来。

当约束和目标冲突的时候,优先保约束。原因很实际:目标是否最大化,往往要看完一整场直播才知道;但ROI破线、预算透支这些问题,半小时内就会出现,一旦发生,商家和运营对算法的信任就会崩塌。

2.2 出价决策那几路关键信号,怎么组织成一张可解释的输入表

轻量出价算法用的信号,并不是越多越好。它遵循一个原则:只在出价公式里放进那些“运营人员也能听懂”的信号。

信号来源计算方式作用
用户价值信号预估点击率乘预估转化率再乘客单价决定一次展示“值多少钱”
商品状态信号库存深度、销量热度、当前讲解进度判断当下商品值不值得加价
直播间信号在线人数、停留时长、开播剩余时间判断流量环境和转化氛围
预算状态已消耗预算比例、剩余预算、实时消耗速率控制预算平滑度
竞价水位近N次竞价成交价的分位数或均值判断当前竞争激烈程度

信号的组织方式也很有讲究:时间窗越短,预算状态和竞价水位这两个信号在决策中的权重就应该越高;越接近直播尾声,商品状态和直播间信号的作用会越来越大。换句话说,出价算法不能对所有信号一视同仁,而是要根据直播所处阶段动态调整。

2.3 “轻量”的三个层次:训练、推理、调参

轻量出价算法所说的“轻量”,实际包含三个层面。弄明白这三个层面,才能理解为什么这种思路能在一线团队落地。

第一个层面是训练轻量。它不是从零训练一个巨大的决策模型,而是在平台已经有的点击率、转化率预估模型之上,叠加一层可解析的计算。现有预估模型负责回答“这个用户值多少价值”,出价算法只负责回答“基于这个价值,我该出多少钱”。这大幅降低了对训练集群和数据量的依赖。

第二个层面是推理轻量。线上实时决策只需要几次乘法和查表,不需要在每一刻都跑一个复杂的序列模型。这不仅意味着更低的延迟和成本,更重要的是,不会出现“线上推理超时导致出价失败”这类隐性事故。

第三个层面是调参轻量。核心超参数控制在个位数,并且每个参数都有明确的业务含义,比如“预算平滑系数”就是控制预算消耗节奏的,“水位偏移系数”就是控制对竞争强度反应的敏感度。运营人员看到参数名,就能大概猜出改动之后会发生什么。这一点,是很多深度学习模型做不到的。

有人会质疑:轻量代表上限低,性能不够好。但如果用一个乐队来类比:端到端强化学习像一支上百人的管弦乐团,阵容豪华但每场演出的协调成本极高;轻量算法像一支三五人的爵士乐队,灵活、随时能加人、每一件乐器都能被观众听出来。在直播这样快节奏的业务里,后者往往能更快站上舞台。

3. 核心机制落地拆解:预算平滑、水位估计与动态出价折扣

3.1 预算平滑:如何让一整场直播不至于前5分钟烧掉80%预算

直播推广最常见的预算事故,就是开场阶段预算被瞬间打穿。原因是开播前几分钟是流量竞争最激烈的时段,如果出价策略继续按“高转化价值”给一个比较高的出价上限,系统会在很短时间内赢得大量曝光,预算哗啦啦就没了。等直播进入真正适合转化的中场,反而没有预算可以消耗。

预算平滑机制要做的事情,就是让预算尽量跟着直播节奏走。最朴素的参考是理想消耗率:用剩余预算除以剩余直播时长,得到接下来每分钟大概能花多少钱。实际操作中,不会直接用这个瞬时值,因为很容易被单次大额消耗干扰。更常见的做法是,用一个指数加权移动平均(EWMA)计算实际消耗速率,然后和理想消耗率做对比:

  • 实际消耗率明显高于理想值,说明预算花得太快,出价要往下压;
  • 实际消耗率明显低于理想值,说明花得太慢,流量拿得不足,出价可以适当放开;
  • 整体还要叠加一个保护上限,任何时刻的出价都不能超过这个上限,从机制上杜绝某几分钟突然烧掉一大笔预算的情况。

预算平滑系数本身也要做限幅,不能一会儿0.5一会儿1.5。单步变化太剧烈,流量曲线会忽高忽低,反而影响直播间流量的稳定性。一般会做一个幅度限制,保证每五分钟之间的系数变化在合理范围内。

3.2 竞价水位估计:下一个时刻的成交价格,到底值多少钱

出价策略绕不开一个问题:当前流量竞争到底有多激烈?如果完全跟着预估价值走,遇到高价流量就抢,很容易导致成本失控;如果出价太保守,又会大量丢量,直播间冷启动转不起来。

竞价水位估计,就是用来回答“现在赢一次流量大概要花多少钱”。比较简单的方法是把最近一段时间内实际成交的竞价价格做一个 EWMA,或者取最近若干次竞价成交价的70%到80%分位来判断高位。更精细一点的分段统计,是把一场直播切成若干个时间窗口,分别统计每个窗口的竞争强度,因为直播间在不同时间段的竞争激烈程度差异可能很大。

水位估计里隐藏着一个经典偏差:日志里能够看到的成交价,都是有选择偏差的,只有赢得竞价的记录才会留下来,输掉的竞价没有成交价。如果直接用这些记录做统计,水位估计会被系统性低估——你以为当前赢量成本不高,实际上是因为你只看到了那些“便宜的赢量”,真正贵的流量没有进入样本。做水位估计的团队,几乎都会在这个问题上摔一跤。可行的修正思路是,用竞价走势、估算的输单价格等辅助信息做偏差校正,或者至少对低估方向做一个保守的修正。

3.3 动态出价折扣率:出一口价钱的完整计算示例

把前面的机制串起来,就得到最终出价的常用形式。预算平滑系数负责控制预算节奏,水位偏移系数负责应对竞争强度,直播阶段系数负责反映临近收场的紧迫程度。

一个比较典型的计算结构是这样的:

  • 基础出价 = 预估转化价值 × 目标ROI约束的倒数 × 品类系数
  • 最终出价 = 基础出价 × 预算平滑系数 × 水位偏移系数 × 直播阶段系数

用一个例子说明。假设某次展示的预估转化价值是4元,品类系数按1.0算,商家设定的ROI目标是2,那么基础出价就是2元。当前预算消耗略快,预算平滑系数给了0.9;竞价水位偏高,水位偏移系数给了0.95;直播进入尾场,转化氛围强,直播阶段系数给到1.1。于是最终出价就是2乘以0.9乘以0.95乘以1.1,约等于1.881元。

这些折扣系数全部采用乘法结构,是刻意的设计。乘法的好处是便于单一变量调试。改任何一个系数,影响的都是“整体出价的缩放比例”,不会破坏其他模块的计算逻辑。某个环节出了问题,直接把对应系数摘出来看就行。

最后还要记得加一个兜底:如果计算出来的最终出价低于某个最低出价,就取最低出价,确保直播间不会出现完全没有曝光的情况。

3.4 叠加直播间上下文:开播剩余时长与在线人数也能进出价

直播场景给轻量出价算法提供了一些独特的上下文信号。最典型的是开播剩余时长。距离直播结束越近,用户的临场转化意愿通常越强,因为错过了这一轮的讲解,可能就再也要不到同样的优惠力度。所以在最后半小时,适度上调出价往往是合理的。

在线人数趋势也是有用的信号。直播间在线人数断崖式下降时,一方面竞争可能会减弱,但另一方面流量质量也可能下降,这时候到底该加价还是降价,不能一概而论,还要结合当前讲解的商品类型来判断。如果主播正在讲解的是全场引流款,用户进来后停留和点击的意愿高,那么即使竞争激烈,也值得搏一下;如果已经是尾场清库存环节,在线人数也在掉,那更合理的操作可能是降低出价,把预算留给下一场。

不过这里有个忠告:不要看到有用信号就拼命往里加。每多一个信号,策略的调参复杂度就上升一截,又会慢慢滑向黑盒。一个信号能不能加进来,标准很简单:运营能不能听懂它为什么影响出价。如果解释成本太高,就算离线数据看着有效果,也不建议引入。

4. 从离线仿真到灰度上线的完整链路:实验设计和踩坑记录

4.1 离线仿真能回答什么,不能回答什么

出价算法上线前,通常先在离线环境里做一轮仿真。做法是把历史日志重放一遍,模拟如果当时使用新的出价策略,预算会怎么消耗、曝光量会发生什么变化。

离线仿真在验证“逻辑是否正确”这件事上非常有效。比如预算平滑模块会不会计算出负数、折扣系数会不会出现极端值、预算曲线在大流量直播间是否收敛,这些问题离线一下就能查出来。但离线仿真有两个明显的盲区。

第一个盲区是它无法模拟竞争对手对策略的反应。你换了一个更激进的出价策略,对手不一定还会按原来的方式出价。第二个盲区是自然流量和广告流量的联动。直播间热度变高之后,自然流量的曝光也可能增加,而离线仿真只能看到历史自然流量,无法反映这种实时反馈。

所以我一直认为,离线仿真通过是上线的基本门槛,但离线效果跑得很好,绝不代表线上AB实验一定能赢。不要被离线指标迷惑。

4.2 分层分桶的灰度实验:别让实验桶互相抢预算

广告场景的灰度实验,比普通推荐场景更难做。因为广告流量背后是一个共享的预算池和竞价环境,实验组和对照组不是完全独立的。

最常见的错误,是把直播间按维度简单分成两组,一组用新出价算法,一组用旧出价算法。这样分出来的结果经常是失真的:新算法出价更激进,抢走了对照组本该拿到的流量,对照组的消耗下降,不是因为旧算法变差了,而是因为流量被实验组抢走了。两个桶之间互相干扰,最后读出来的结论完全不可信。

做这类实验时,有几个设计要点值得注意。第一是分层分桶,流量层、预算层要独立随机,不要在同一次实验里同时改多个变量。第二是按流量量级分层统计,大直播间和小直播间的行为差异巨大,混在一起看均值,很容易产生严重误导。第三是实验周期至少要覆盖一个完整的直播周期,最好能观察一周以上,覆盖不同日期和不同时段。第四是方差控制,统计显著性检验时要按直播间维度做聚类,不要简单把每一条曝光当独立样本。

观测指标也要系统地看,包括广告消耗、千次展示成本、点击率、转化率、广告ROI,以及ROI的方差。ROI均值提升但不稳定,有时候并不是好事,因为广告主更在意的是每天开播能不能守住自己的目标线。

4.3 三个踩坑案例与诊断方法

结合我接触过的类似系统,有三个坑很典型。

第一个坑是预算前几分钟耗尽。现象是实验组大量直播间一开场就没预算了,后面整场直播都没有广告流量。排查链路先从预算消耗曲线上发现异常,再去看预算平滑系数的分布,结果发现高流量直播间的系数触发了上限保护。修复方案是在平滑机制之上加一个“开场前N分钟出价上限”的强保护,从机制上避免开场阶段过度竞价。

第二个坑是低流量直播间数据波动大。小直播间可能一天也没多少曝光,一场直播的ROI要么是0要么特别高,单看曲线完全没意义。如果实验结论直接把小直播间和大直播间放在一起平均,很容易被几个极端值带偏。最后处理方式是按流量量级分层,小直播间必须累计多日数据再看整体趋势。

第三个坑是水位信号偏差导致整体出价偏低。现象是上线后广告消耗明显下降,点击率反而上升。初看像是效率变好了,但细一想其实是出价太保守,拿到的都是一些便宜的尾部流量。根因就是前面提到的幸存者偏差——水位的统计基于胜出成交价,没有校正输掉的竞价,导致水位被系统性低估。修正后整体出价水平回升,消耗和点击率才恢复正常。

这三个坑的共同点在于:光看最终指标很难定位问题,一定要配合分模块的可观测数据。

4.4 线上看板与异常定位:把算法变成可观测服务

轻量出价算法在工程运维上有一个巨大的先天优势:出价路径完全透明。每一个模块的中间结果,都可以单独拿出来观察。

我建议把直播推广出价的线上看板做成两层。第一层是整体业务层,包括预算消耗曲线、平均出价、广告消耗、ROI这些核心指标,供运营和业务方快速判断健康度。第二层是模块层,展示预算平滑系数、水位偏移系数、平均折扣系数、水位预估值这些中间变量,供算法团队做异常定位。

某个直播间ROI突然破线时,排查路径通常是:先看整体消耗曲线是否异常,再看是哪个模块的系数变了。如果预估值没变,但出价变高了,大概率是水位偏移系数主动抬高了出价;如果出价没变,但ROI在掉,那问题更可能出在点击率、转化率预估环节,而不是出价策略本身。能够在十分钟内定位到问题模块,这在复杂模型方案里几乎不敢想象。

5. 这类算法能迁移到哪些地方:从直播到短视频、从电商到内容

5.1 短视频带货出价:迁移成本最低的场景

短视频带货和直播带货有一个相似点:内容的有效窗口都很短。一条视频发布后,热度往往集中在发布后的几个小时到一天之内,预算需要跟着热度曲线消耗。把直播推广的轻量出价算法迁移到短视频场景,迁移成本相当低。

需要替换的主要是信号层。直播场景里有“开播剩余时长”,短视频场景没有这个概念,可以换成“视频发布后的剩余有效热度时间”,用视频的发布时间加上互动趋势来判断内容现在处于生命周期的哪个阶段。直播间的在线人数、讲解进度,也可以换成视频的播放完成率、互动率等信号来辅助判断流量质量。整体框架不用动,预算平滑、水位估计、动态折扣三层机制原样搬过去即可。

5.2 弱信号场景的替代目标:互动、停留与回访

不是所有场景都有明确的购买转化目标。品牌广告、内容推广、门店引流这些场景,用户的转化链路很长,直接预估购买转化价值往往不准。

这类场景其实也能复用轻量出价算法的框架,关键是替换“价值信号”。没有购买转化,就考虑用互动率、停留时长、回访概率组合成一个“综合价值分”,再放进基础出价公式里。公式结构不需要改,但价值信号本身要做独立校准。弱信号的校准比强转化信号更麻烦,因为互动率和最终的转化之间往往有时间差,需要单独跑一轮样本做系数拟合,不能直接照搬电商场景的参数。

5.3 轻量策略与强化学习的互补:先跑通,再升级

最后想聊一个经常被误解的点:轻量出价算法和强化学习出价并不是非此即敌的关系。在真实业务路径里,它们完全可以分阶段配合使用。

第一个阶段,先用轻量出价框架把业务跑起来,让商家看到预算消耗是合理的、ROI是可预测的,建立运营和销售对算法的信任。同时,这段时间积累了大量真实竞价数据和不同策略下的效果样本,这些数据是强化学习模型最需要的东西。

第二个阶段,等数据量足够覆盖主要直播类型和时段后,可以选择在某个具体模块里引入强化学习。比如动态折扣率这个环节,输入是水位、剩余预算、直播阶段这些状态,输出是折扣系数,状态空间不大,模型训练难度可控,上线后也还保留着其他模块的可解释性。

第三个阶段,也只有到团队积累了足够的模型运维能力之后,才值得考虑端到端方案。多数团队其实走不到这一步,也根本没必要强行走。先用轻量策略站住,再用模型做锦上添花,是更稳妥也更容易出成果的路径。

最后分享一点实际操作中的体会。我见过不少团队一上来就规划端到端强化学习出价,结果在可解释性、运维成本和冷启动上消耗了大量资源。轻量出价的真正价值不只是在计算效率上省了几个服务,而是让每个人都能说清楚自己的策略在做什么、为什么这么做。对于直播推广这种时间窗短、业务节奏快的场景,这种透明度千金难换。如果你正打算在直播或短视频出价上做优化,我的建议是:先按“预算平滑、水位估计、动态折扣”这个框架搭一个最小可用版本,再一点点加信号;等跑明白之后再谈更复杂的模型。这样踩的坑最少,上线的速度和被业务接受的程度往往会超出预期。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进