← 返回个人主页
READING NOTE / BLOG个人博客

AIGB:用扩散模型先规划状态轨迹,再生成广告出价

Castle Zeng个人博客

广告自动出价通常被写成一个逐步决策问题:看到当前预算、消耗速度和 CPC,立刻决定下一步把出价系数调高还是调低。AIGB 换了一个角度:先生成一条“理想的未来投放轨迹”,再反推出现在应该采用什么动作。

假设广告主一天有 1000 元预算,一天被切成 96 个 15 分钟时间步。传统强化学习关心的是:当前还剩 600 元,下一步出价系数该是多少?DiffBid 先回答另一个问题:接下来的剩余预算最好依次变成 580、555、530……还是 590、570、548……?有了理想的下一状态,再由逆动力学模型把“600 元变成 580 元”翻译成当前出价参数。

这就是论文 AIGB: Generative Auto-bidding via Diffusion Modeling 的核心:把广告出价从直接的 Action Optimization,改写成 State Trajectory Planning + Action Generation。

flowchart LR
    A[业务目标<br/>高 Return / CPC 合规 / 消耗节奏] -->|条件 y| B[Conditional Diffusion<br/>生成整条状态轨迹]
    H[已经发生的真实历史状态] -->|固定历史片段| B
    B -->|取下一目标状态 s'ₜ₊₁| C[Inverse Dynamics]
    H -->|最近 L+1 个状态| C
    C -->|出价参数 aₜ = λ| D[出价公式]
    D --> E[真实广告环境]
    E -->|得到真实下一状态| H
    H -->|下个 15 分钟重新规划| B

这张图还有一个容易忽略的细节:DiffBid 每次生成完整未来轨迹,却只执行由下一目标状态推导出的当前动作。15 分钟后拿到新的真实状态,再把整条未来轨迹重算一遍。它更像生成模型版本的滚动时域规划,而不是在早晨一次性排好全天计划后机械执行。

## 1. 为什么要从“预测动作”转向“规划状态”

1. 从预测动作转向规划状态

一个时间步的状态可以写成:

st=[剩余时间剩余预算预算消耗速度实时 CPC平均 CPC]s_t= \begin{bmatrix} \text{剩余时间}\\ \text{剩余预算}\\ \text{预算消耗速度}\\ \text{实时 CPC}\\ \text{平均 CPC} \end{bmatrix}

动作 ata_t 不是某一次曝光的最终报价,而是一组用于计算报价的出价参数。只考虑预算约束时,论文给出的报价形式可以简化为:

bi=λ0vib_i=\lambda_0 v_i

viv_i 是第 ii 个流量的预估价值,λ0\lambda_0 是当前时间段的出价系数,bib_i 才是参与竞价的价格。存在多种约束时,公式扩展为:

bi∗=λ0vi+Ci∑j=1Jλjpijb_i^*=\lambda_0v_i+C_i\sum_{j=1}^{J}\lambda_jp_{ij}

直接预测 λ\lambda 看起来最省事,但业务目标通常落在状态上:预算有没有按节奏花完、实时 CPC 有没有接近目标、后半天还剩多少预算。状态轨迹天然就是这些指标随时间的变化曲线,用它表达“想要什么”比用 96 个抽象动作更直观。

论文先用线上数据说明历史确实重要。只看最近一个状态时,预测下一状态的信息不够;历史长度从 1 增加到 3 后,Pearson 和 Spearman 相关系数明显上升,之后才趋于稳定。

图 1|历史状态长度与下一状态的 Pearson、Spearman、Kendall 相关系数。来源:AIGB 论文,Figure 1。

附录里的统计给出了这套状态轨迹建模更具体的业务依据:每个时间片内,赢得更多流量时 Cost Effectiveness 呈幂律下降;不同时间片的平均曝光成本波动相对有限。于是,一个时间片想赢多少流量、花多少预算,与剩余预算轨迹之间存在比较稳定的对应关系。

图 2|三个时间片的 Cost Effectiveness 曲线,以及一天内曝光成本的波动。来源:AIGB 论文,Figure 8。

2. 整体框架:条件生成、状态规划、动作反推

论文的 Figure 2 把整套系统画得很完整:左侧是 Return、约束和人工反馈,中间是对状态轨迹加噪与去噪的 Diffusion,右侧是从目标状态生成出价参数。

图 3|AIGB 的整体框架。条件进入 Temporal U-Net,Diffusion 生成状态轨迹,逆动力学再把下一状态变成出价参数。来源:AIGB 论文,Figure 2。

把它压缩成三个模块,就是:

  1. Conditional Diffusion:学习 pθ(x0∣y)p_\theta(x_0\mid y),给定业务目标 yy 生成完整状态轨迹 x0x_0。
  2. Inverse Dynamics:读取最近一段真实历史和生成的下一目标状态,输出当前出价参数。
  3. Rolling Execution:只执行当前一步,环境反馈真实状态后重新生成未来。

这里的 x0x_0 是一整条轨迹:

x0(τ)=(s1,s2,…,sT)x_0(\tau)=(s_1,s_2,\ldots,s_T)

如果一天有 96 个时间步、每个状态有 5 个特征,那么:

x0(τ)∈R96×5x_0(\tau)\in\mathbb R^{96\times5}

τ\tau 只是一条训练轨迹的编号。条件 y(τ)y(\tau) 则可以包含最终 Return、是否满足 CPC、消耗是否平滑、预算是否偏早消耗等信息。

DiffBid 的训练目标是条件最大似然估计:

max⁡θEτ∼D[log⁡pθ(x0(τ)∣y(τ))]\max_\theta \mathbb E_{\tau\sim\mathcal D} \left[ \log p_\theta(x_0(\tau)\mid y(\tau)) \right]

这句话翻译成业务语言就是:让真实历史轨迹在它实际取得的业务结果条件下,拥有尽可能高的生成概率。 文生图模型学习“文字条件下什么图片更像真实图片”,DiffBid 学习“业务目标条件下什么投放轨迹更像真实的高质量轨迹”。

## 3. Diffusion 如何生成一条 96 步投放轨迹

3. Diffusion 生成 96 步投放轨迹的过程

3.1 Forward Process:把规律逐渐打散

先取一条真实轨迹。为了方便理解,只保留剩余预算和 CPC 两个特征:

x0=[1000109509.89009.6⋮⋮]x_0= \begin{bmatrix} 1000 & 10\\ 950 & 9.8\\ 900 & 9.6\\ \vdots & \vdots \end{bmatrix}

它有很强的结构:剩余预算总体向下,CPC 在有限区间里变化,预算消耗还会体现早晚流量差异。Forward Process 每一步加入高斯噪声:

q(xk∣xk−1)=N(1−βkxk−1,βkI)q(x_k\mid x_{k-1})= \mathcal N\left(\sqrt{1-\beta_k}x_{k-1},\beta_k I\right)

等价地写成:

xk=1−βkxk−1+βkϵ,qquadϵ∼N(0,I)x_k=\sqrt{1-\beta_k}x_{k-1}+\sqrt{\beta_k}\epsilon,qquad \epsilon\sim\mathcal N(0,I)

不断执行 x0→x1→⋯→xKx_0\rightarrow x_1\rightarrow\cdots\rightarrow x_K,原来清晰的预算与 CPC 轨迹就会被破坏成接近标准高斯噪声的矩阵。

这里有两个完全不同的“时间”:

符号 含义 论文实验中的例子
tt 真实广告投放时间步 T=96T=96,每步 15 分钟
kk Diffusion 加噪或去噪步 搜索 K∈{5,10,20,30,50}K\in\{5,10,20,30,50\}

即使 K=20K=20,模型生成的仍然是长度为 96 的完整投放轨迹。20 表示把整个 96×596\times5 矩阵去噪多少轮,不是只规划 20 个广告时间步。

训练时也不需要真的从 x0x_0 一步步加到 xkx_k。利用 DDPM 的闭式形式,可以随机选择一个 kk,直接构造:

xk=αˉkx0+1−αˉkϵx_k=\sqrt{\bar\alpha_k}x_0+\sqrt{1-\bar\alpha_k}\epsilon

其中 αk=1−βk\alpha_k=1-\beta_k,αˉk=∏i=1kαi\bar\alpha_k=\prod_{i=1}^k\alpha_i。论文用 Cosine Schedule 控制噪声强度。

3.2 Reverse Process:预测噪声,而不是直接预测出价

真正需要学习的是去噪网络:

ϵθ(xk,y,k)\epsilon_\theta(x_k,y,k)

输入是带噪轨迹 xkx_k、业务条件 yy 和当前 Diffusion 步数 kk,输出是与轨迹同形状的噪声矩阵 ϵ^\hat\epsilon。论文使用 Temporal U-Net:3 个残差块,每个块包含时间卷积、Group Normalization 和 Mish 激活;时间步与条件分别经过 MLP 编码。

模型同时学习有条件和无条件两种预测。训练时以一定概率丢掉条件 yy,推理时用 Classifier-Free Guidance 合成两种噪声估计:

ϵ^k=ϵθ(xk,k)+ω[ϵθ(xk,y,k)−ϵθ(xk,k)]\hat\epsilon_k= \epsilon_\theta(x_k,k)+ \omega\left[ \epsilon_\theta(x_k,y,k)-\epsilon_\theta(x_k,k) \right]

ω=0\omega=0 时只依赖无条件模型,ω=1\omega=1 时等于条件模型,其他取值在两者之间插值或进一步放大条件方向。论文实验把 guidance scale 设为 0.2,同时把 condition dropout ratio 设为 0.2。

得到预测噪声以后,按 DDPM 的高斯反向过程采样:

xk−1=μθ(xk,y,k)+βkz,qquadz∼N(0,I)x_{k-1}=\mu_\theta(x_k,y,k)+\sqrt{\beta_k}z,qquad z\sim\mathcal N(0,I)

重复 KK 次,就从随机矩阵得到一条完整状态轨迹 x0′x'_0。

线上推理还有一个关键操作:每一轮去噪都把已经发生的历史片段重新覆盖回去,即 Algorithm 1 中的 xk[:t]←s0:tx_k[:t]\leftarrow s_{0:t}。所以模型不是凭空重写过去,而是在固定真实历史的前提下补全未来。

3.3 Inverse Dynamics:把目标状态翻译成当前动作

Diffusion 到这里仍然没有输出任何出价。它只给出下一目标状态 st+1′s'_{t+1}。当前动作由三层 MLP 完成:

a^t=fϕ(st−L:t,st+1′)\hat a_t=f_\phi(s_{t-L:t},s'_{t+1})

假设 10:00 的真实状态是:

st=[6001020]s_t= \begin{bmatrix} 600\\10\\20 \end{bmatrix}

分别表示剩余预算 600 元、CPC 为 10 元、最近每 15 分钟消耗 20 元。Diffusion 给出的下一目标状态是:

st+1′=[5759.825]s'_{t+1}= \begin{bmatrix} 575\\9.8\\25 \end{bmatrix}

这意味着接下来 15 分钟希望消耗 25 元,同时让 CPC 从 10 降到 9.8。逆动力学模型根据最近一段真实历史,判断什么出价参数最可能完成这次状态变化。假设它输出 λ^0=1.2\hat\lambda_0=1.2,某个流量的预估价值 vi=5v_i=5,最终报价就是:

bi=1.2×5=6b_i=1.2\times5=6

这个数值例子只用于说明机制。正向 Dynamics 是 (st,at)→st+1(s_t,a_t)\rightarrow s_{t+1},Inverse Dynamics 则把方向倒过来:(st,st+1)→at(s_t,s_{t+1})\rightarrow a_t。DiffBid 还把单个当前状态扩展成 st−L:ts_{t-L:t},让动作预测利用历史。

4. 训练与推理:两个监督学习任务串成一个决策系统

DiffBid 的总损失由两项 MSE 构成:

L(θ,ϕ)= E[∥ϵ−ϵθ(xk,y,k)∥2]+E[∥at−fϕ(st−L:t,st+1)∥2]\begin{aligned} \mathcal L(\theta,\phi) =&\ \mathbb E\left[\|\epsilon-\epsilon_\theta(x_k,y,k)\|^2\right]\\ &+\mathbb E\left[\|a_t-f_\phi(s_{t-L:t},s_{t+1})\|^2\right] \end{aligned}

第一项让 Temporal U-Net 预测加到真实轨迹上的噪声;第二项让逆动力学网络用“历史状态 + 下一真实状态”回归日志里的真实动作。整个训练不需要策略梯度、Q-learning 或 Bellman Bootstrapping。

flowchart TD
    subgraph 训练
      A1[历史状态轨迹 x₀] --> A2[随机采样 k 和噪声 ε]
      A2 --> A3[构造带噪轨迹 xₖ]
      Y1[轨迹结果条件 y] --> A4[Temporal U-Net]
      A3 --> A4
      A4 -->|预测 ε̂| A5[去噪 MSE]
      B1[历史 sₜ₋L:ₜ / 真实 sₜ₊₁] --> B2[Inverse Dynamics]
      B2 -->|预测 âₜ| B3[动作 MSE]
    end
    subgraph 推理
      C1[随机噪声轨迹] --> C2[固定真实历史并反复去噪 K 次]
      Y2[目标 Return / CPC / 节奏] --> C2
      C2 --> C3[完整预测轨迹]
      C3 -->|只取 s'ₜ₊₁| C4[Inverse Dynamics]
      H2[最近真实历史] --> C4
      C4 --> C5[当前出价参数]
    end

两阶段架构带来一个实际差异:训练逆动力学时,它看到的下一状态来自真实日志;推理时,下一目标状态来自 Diffusion。工程上需要关注这两种输入分布的差异,但滚动重规划能把已经发生的偏差及时写回历史,避免错误轨迹一路开环执行到当天结束。

5. 把 Return、CPC 和人工偏好统一成条件

DiffBid 最适合广告业务的部分,不只是“用了 Diffusion”,而是把多个目标统一成生成条件 yy。

5.1 Return 条件

一条轨迹的 Return 是:

R(τ)=∑t=1TrtR(\tau)=\sum_{t=1}^{T}r_t

论文用数据集内的最小值和最大值做归一化:

Rˉ=R(τ)−Rmin⁡Rmax⁡−Rmin⁡\bar R=\frac{R(\tau)-R_{\min}}{R_{\max}-R_{\min}}

假设 Rmin⁡=100R_{\min}=100、Rmax⁡=1000R_{\max}=1000,某条轨迹的 Return 为 820,那么 Rˉ=0.8\bar R=0.8。训练时模型学习 pθ(x0∣Rˉ)p_\theta(x_0\mid\bar R);生成时把 Rˉ\bar R 设为 1,就会朝数据里高 Return 轨迹的区域采样。

5.2 CPC 约束

假设广告主要求 CPC≤10CPC\le10。论文把每条历史轨迹是否达标编码成二值条件:

E=I(x≤C)E=\mathbb I(x\le C)
历史轨迹 最终 CPC 阈值 10 元 EE
A 8 满足 1
B 12 不满足 0
C 9 满足 1

推理时设 E=1E=1,相当于要求模型生成“像历史合规轨迹”的状态序列。若同时追求高 Return,就把条件写成 y=(Rˉ=1,E=1)y=(\bar R=1,E=1)。

论文用 Exceeding Ratio 衡量约束超出比例。与 IQL 相比,DiffBid 随 CPC 条件变化能明显调节超限率,同时让 Return 保持在较稳定水平。

图 4|IQL 与 DiffBid 在不同归一化 CPC 条件下的超限率和 Return。来源:AIGB 论文,Figure 4。

5.3 Smoothness 与 Early Spend

Smoothness 用相邻时间片消耗变化的均值表示:

x=1T∑t∣costt−costt−1∣x=\frac1T\sum_t|cost_t-cost_{t-1}|

Early Spend 则看前半天消耗占全天消耗的比例:

x=∑t=1T/2costt∑t=1Tcosttx=\frac{\sum_{t=1}^{T/2}cost_t}{\sum_{t=1}^{T}cost_t}

论文把二者都按阈值分成高、低条件。生成结果的分布确实会随条件移动:Early Spend 的高低两组分离得很清楚,Smoothness 也能改变分布形态。

图 5|Smoothness 与 Early Spend 条件下的生成分布。Low、High 是指定条件,True 是原始轨迹分布。来源:AIGB 论文,Figure 5。

把这些条件拼成一个向量:

y=(Rˉ,E,Smoothness,EarlySpend,…)y=(\bar R,E,\text{Smoothness},\text{EarlySpend},\ldots)

同一个模型就能在不同目标组合之间切换。它的思路不是为每种业务组合重新手工设计一套奖励函数,而是从历史日志里学习“哪些状态轨迹与这些结果共同出现”。

6. 第 5 章的理论:把轨迹似然改写成累计奖励

理论部分最关键的不是复杂的 VV、QQ 推导,而是一个很朴素的转换:整条轨迹的对数概率,可以拆成每一步条件概率的对数之和。

先忽略条件 yy,最大似然目标是:

max⁡θEx∼p∗[log⁡pθ(x)]\max_\theta\mathbb E_{x\sim p^*}[\log p_\theta(x)]

p∗p^* 是历史轨迹分布,pθp_\theta 是模型学到的分布。假设历史里三类轨迹的比例是:上午快速消耗 20%、全天匀速消耗 50%、下午集中消耗 30%,MLE 希望模型学到 (0.2,0.5,0.3)(0.2,0.5,0.3),而不是把其中一类错误放大成 (0.8,0.1,0.1)(0.8,0.1,0.1)。

对状态轨迹 x=(s0,s1,…,sT)x=(s_0,s_1,\ldots,s_T) 使用链式法则:

pθ(x)=pθ(s0)∏t=0T−1pθ(st+1∣s0:t)p_\theta(x)=p_\theta(s_0)\prod_{t=0}^{T-1}p_\theta(s_{t+1}\mid s_{0:t})

取对数后:

log⁡pθ(x)=log⁡pθ(s0)+∑t=0T−1log⁡pθ(st+1∣s0:t)\log p_\theta(x)=\log p_\theta(s_0)+\sum_{t=0}^{T-1}\log p_\theta(s_{t+1}\mid s_{0:t})

初始状态分布固定时,第一项可以视为常数。于是 MLE 变成:

max⁡θEp∗[∑t=0T−1log⁡pθ(st+1∣s0:t)]\max_\theta\mathbb E_{p^*}\left[ \sum_{t=0}^{T-1}\log p_\theta(s_{t+1}\mid s_{0:t}) \right]

它已经长得很像“累计奖励最大化”。只要定义:

rt=log⁡pθ(st+1∣s0:t)r_t=\log p_\theta(s_{t+1}\mid s_{0:t})

最大化轨迹似然,就等价于最大化这套构造奖励的累计值。

### 6.1 动作如何进入这套构造

6.1 把动作纳入构造

真实广告环境里,状态变化由动作产生。论文引入历史依赖策略 pα(at∣s0:t)p_\alpha(a_t\mid s_{0:t}) 和环境转移 pγ∗(st+1∣st,at)p_{\gamma^*}(s_{t+1}\mid s_t,a_t)。把动作积分掉,就得到策略诱导的下一状态概率:

pα(st+1∣s0:t)=∫pα(at∣s0:t)pγ∗(st+1∣st,at) datp_\alpha(s_{t+1}\mid s_{0:t})= \int p_\alpha(a_t\mid s_{0:t}) p_{\gamma^*}(s_{t+1}\mid s_t,a_t)\,da_t

用一个离散例子看更直观。当前剩余预算 600 元,策略以 0.7 的概率提高出价、0.3 的概率降低出价;提高出价后下一时间片花到 30 元的概率是 0.8,降低出价时这个概率是 0.2。那么:

P(下一时间片消耗 30 元)=0.7×0.8+0.3×0.2=0.62P(\text{下一时间片消耗 30 元})=0.7\times0.8+0.3\times0.2=0.62

论文把奖励定义为这个概率的对数:

rα(st+1,s0:t)=log⁡∫pα(at∣s0:t)pγ∗(st+1∣st,at) datr_\alpha(s_{t+1},s_{0:t})= \log\int p_\alpha(a_t\mid s_{0:t}) p_{\gamma^*}(s_{t+1}\mid s_t,a_t)\,da_t

某个策略给真实发生的下一状态分配 0.9 的概率,奖励是 log⁡0.9≈−0.105\log0.9\approx-0.105;另一个策略只分配 0.1,奖励是 log⁡0.1≈−2.303\log0.1\approx-2.303。最大化这项奖励,会鼓励策略更准确地复现示范数据里的状态转移。

### 6.2 为什么又出现了 V、Q 和 Bellman 关系

6.2 从轨迹 MLE 到 V、Q 与 Bellman 关系

作者进一步定义:

V∗(s0:t)=Ep∗[log⁡p∗(st+1:T∣s0:t)]V^*(s_{0:t})= \mathbb E_{p^*}\left[ \log p^*(s_{t+1:T}\mid s_{0:t}) \right]

它表示给定历史以后,未来真实状态序列的期望对数概率。按轨迹概率的递推分解,可以写成:

V∗(s0:t)=Ep∗[r(st+1,s0:t)+V∗(s0:t+1)]V^*(s_{0:t})= \mathbb E_{p^*}\left[ r(s_{t+1},s_{0:t})+V^*(s_{0:t+1}) \right]

再加入动作,就能构造 Q∗(at;s0:t)Q^*(a_t;s_{0:t}) 及相应的 Soft Policy Iteration 关系。整套证明想表达的是:

轨迹 MLE 的最优解⟷所构造的历史依赖决策问题的最优解\boxed{ \text{轨迹 MLE 的最优解} \longleftrightarrow \text{所构造的历史依赖决策问题的最优解} }

这里的 Value 是未来轨迹的期望对数概率,不是 GMV;构造奖励也不是线上直接观测到的业务收益。把这两点记住,第 5 章就不会再和传统 RL 的 V/QV/Q 混在一起。

## 7. 实验:DiffBid 学到了什么

7. 实验结果与分析

论文的离线环境把一天切成 96 步,每步 15 分钟;广告主数量为 30,预算在 1000 到 4000 元之间,每个时间步有 50 到 300 次曝光机会。

表 1|离线 Real Advertising System 的主要参数。来源:AIGB 论文,Table 5。

### 7.1 离线主结果:不同预算和数据规模下都领先

7.1 不同预算与数据规模下的离线结果

论文用 USCB 收集 5000 条基础轨迹,并通过随机探索构造 USCBEx-5K 和 USCBEx-50K;基线包括 USCB、BCQ、CQL、IQL 和 Decision Transformer。每种配置随机初始化环境 50 次,报告 Top-5 分数的平均值。

表 2|不同训练数据和预算下的累计收益。DiffBid 在 12 个组合里均为最高。来源:AIGB 论文,Table 1。

数据越丰富,DiffBid 的优势越明显。在 USCBEx-50K、预算 1.5K 的设置下,DiffBid 为 495.57,相对最强基线提升 8.05%;其余配置的相对提升在 0.65% 到 3.40% 之间。

### 7.2 消融:条件比历史逆动力学更关键,但两者都有效

7.2 消融实验:条件与历史逆动力学的作用

表 3|去掉条件(w/o cond)或只用当前状态与下一状态(w/o non-mkv)的结果。来源:AIGB 论文,Table 2。

去掉条件后,USCBEx-5K 从 2280.12 降到 1812.64,USCBEx-50K 从 2395.60 降到 1852.21;只去掉历史逆动力学时也会下降,但幅度更小。这说明高 Return 条件不是装饰项,而是决定生成方向的主要信号;历史状态则进一步改善动作可实现性。

### 7.3 状态轨迹:预算完成率更集中

7.3 状态轨迹与预算完成率

图 6|USCB 与 DiffBid 在一天内的预算剩余比例。颜色表示不同预算。来源:AIGB 论文,Figure 3。

USCB 的轨迹在尾段分散很大,不少广告主到一天结束仍剩较多预算;DiffBid 的轨迹更集中,绝大多数最终消耗超过 80%。对小预算广告主,模型还会把更多预算留到下午,因为下午流量的成本效率更高但数量有限。

7.4 Diffusion 步数与稳定性

图 7|左:不同 KK 对各预算的影响;右:CQL、IQL、DiffBid 在 30 次随机初始化下的结果分布。来源:AIGB 论文,Figure 6。

小预算对 Diffusion 步数更敏感,大预算在 K=10∼30K=10\sim30 之间变化不大;多数设置在 30 步内已经达到最好或接近最好的结果。稳定性图中,DiffBid 的分布更集中、低分失败样本更少。

附录还设计了一个长时域动作控制任务:Return 被重新定义成奇数时间步动作之和减去偶数时间步动作之和。IQL 的输出几乎不随条件变化,DiffBid 则能沿着条件切换动作模式。

图 8|动作控制实验。DFUSER 即论文图中的 DiffBid 实现。来源:AIGB 论文,Figure 7。

### 7.5 线上 A/B:GMV +2.81%,ROI +3.36%

7.5 线上 A/B 实验

论文在 2024 年 2 月 1 日到 2 月 8 日做了线上 A/B,与离线基线里表现较好的 IQL 比较。两组计划数和预算相同,DiffBid 的 Cost 下降 0.53%,Buy Count 上升 2.09%,GMV 上升 2.81%,ROI 上升 3.36%。

表 4|线上 A/B 结果。来源:AIGB 论文,Table 3。

代价是推理更慢:GPU 加速下 DiffBid 每次请求约 0.2 秒,基线约 0.07 秒。广告出价参数每几分钟更新一次,这个量级在论文的系统里仍可接受。

8. DiffBid 与 RL、Decision Transformer 的位置

维度 传统 RL Decision Transformer DiffBid
核心学习对象 Policy / Value / Q 条件动作序列 条件状态轨迹
训练方式 策略梯度、Q-learning 等 监督式序列建模 去噪学习 + 动作回归
Return 的角色 优化目标或奖励 RTG 条件 轨迹级生成条件
如何得到动作 策略直接输出 自回归生成动作 先规划状态,再用逆动力学反推动作
如何利用历史 依赖状态设计与网络结构 直接读取序列 轨迹生成与逆动力学都使用历史
典型优势 直接围绕回报优化 序列建模简单统一 全轨迹规划、多条件控制、训练稳定

DiffBid 最有价值的创新不是“把 U-Net 用到广告里”,而是这条分层链路:

业务目标→理想状态轨迹→下一目标状态→当前动作\text{业务目标} \rightarrow \text{理想状态轨迹} \rightarrow \text{下一目标状态} \rightarrow \text{当前动作}

Diffusion 只是实现轨迹生成的一种方式。只要能稳定学习 p(Trajectory∣Return, Constraints, Feedback)p(\text{Trajectory}\mid\text{Return, Constraints, Feedback}),Transformer、Flow Matching 或状态空间模型也可以替换进来。真正需要保留的是“先规划状态,再求动作”的建模方式,以及每个决策周期用真实反馈重新规划。

9. 工程上最值得继续追的三个问题

### 9.1 为什么生成完整 96 步,最后只用下一步

**完整轨迹生成、单步执行。**完整轨迹让模型同时考虑预算终点、早晚流量差异和 CPC 的长期变化,下一状态不是局部回归器独立猜出来的,而是整日计划的一部分。代价是每个决策点都要做 KK 次全轨迹去噪。论文的 Figure 6 说明 10 到 30 步已能工作,但没有直接比较“完整轨迹生成”与“只预测下一状态”的效果和延迟,这正是判断全轨迹规划价值的关键消融。

### 9.2 规划出的状态能否被动作实现

**规划状态的可实现性。**轨迹生成和动作生成由两个监督目标分别训练。Diffusion 可能提出历史里很少见的目标状态,Inverse Dynamics 却只在真实相邻状态上训练。更稳妥的后续方案可以加入轨迹可实现性评分、Forward Dynamics 一致性损失,或者让生成器在动作模型的可达区域内采样。

### 9.3 条件生成如何走向真正的收益优化

从条件生成走向收益优化。Rˉ=1\bar R=1 表示靠近训练数据中的高 Return 区域,E=1E=1 表示靠近历史合规轨迹。它们提供了灵活的目标控制,却没有把未来市场、硬约束和反事实收益直接放进生成目标。更进一步的系统需要把分布外收益估计、约束满足概率和在线反馈纳入同一套规划闭环。

10. 符号速查

表 5|论文主要符号。来源:AIGB 论文,Table 4。

一句话收束整篇论文:DiffBid 用条件 Diffusion 生成理想状态轨迹,用历史依赖的 Inverse Dynamics 把下一目标状态变成当前出价参数,再通过真实反馈不断滚动重规划。 第 4 章讲这套系统如何训练和运行,第 5 章则把轨迹 MLE 改写成一类历史依赖的序列决策问题。

参考资料