快手自动出价论文GAVE阅读笔记

背景

自动出价已成为广告平台在动态且充满竞争的在线环境中优化出价决策的关键策略。业界自动出价系统通常经历了三代演进:从基于规则的策略(如PID控制、预算 pacing),到基于强化学习(RL)的方法,再到基于生成式序列建模的方法。基于规则的策略计算开销小、部署简单,但难以适应动态市场。基于 RL 的方法虽然能够根据环境反馈自适应调整出价,但其 MDP 框架的状态独立性假设往往忽略了出价序列内的时间依赖关系和历史上下文。近年来,Decision Transformer(DT)将强化学习重新建模为序列建模任务,能够捕捉长程依赖,为离线自动出价提供了新的方向。

然而,将DT应用于真实自动出价场景仍面临诸多挑战:不同广告主的目标各异,评估指标可能涉及CPA/CPC等复杂约束;基于固定离线数据集训练可能使模型局限于数据中记载的行为模式,并引发行为崩溃;在巨大动作空间中进行探索还容易引发OOD(Out-of-Distribution)风险。为应对这些问题,快手提出了 GAVE(Generative Auto-Bidding with Value-Guided Explorations),一个基于DT的离线生成式自动出价框架,通过基于分数的RTG、动作探索机制和可学习价值函数三项创新,实现自适应优化、稳定更新和策略改进。

本文是笔者对快手论文《Generative Auto-Bidding with Value-Guided Explorations》(SIGIR 2025)的阅读笔记。如有不足之处,请指正。


自动出价问题定义

考虑在一个离散时间段内依次到达的 II I次曝光机会, i=1,...,Ii = 1, ..., I i=1,...,I。广告主需要为这些曝光机会提交出价 {bi }i=1I \{b_i\}_{i=1}^I {bi}i=1I。

竞价机制遵循以下规则:对于某次曝光机会 ii i,如果广告主的出价 bi b_i bi大于其他广告主的最高出价 bi− b_i^- bi−,则该广告主竞得该次曝光机会,并产生广告消耗 ci c_i ci。工业界一般采用广义二阶竞价机制(GSP),即竞胜的广告消耗等于第二高的出价。广告主的目标是最大化竞胜曝光的累计价值:
max⁡ ∑i=1I xivi (1) \max{\sum_{i=1}^I{x_i v_i}} \tag{1} maxi=1∑Ixivi(1)

其中, vi∈R+ v_i \in \mathbb{R}^+ vi∈R+表示曝光 ii i对于广告主的价值,例如预测转化率(pCVR)或预测点击率(pCTR); xi∈{0,1} x_i \in \{0, 1\} xi∈{0,1}表示广告主是否竞得曝光 ii i:
xi= { 1, if bi>bi− 0, otherwise (2) x_i = \begin{cases} 1, & \text{if } b_i > b_i^- \\ 0, & \text{otherwise} \end{cases} \tag{2} xi={1,0,if bi>bi−otherwise(2)

同时,广告主还需要满足多个约束。首先是预算约束,广告总消耗不能超过预算 BB B。在实际竞价平台中,这一约束通常由平台直接控制:当预算耗尽时,平台会通过将竞得变量 xi x_i xi置为0来停止该广告的曝光,从而避免超支。
∑i=1I xici ≤B (3) \sum_{i=1}^I{x_i c_i} \leq B \tag{3} i=1∑Ixici≤B(3)

其中, B∈R+B \in \mathbb{R}^+ B∈R+表示广告主的预算。

其他的KPI约束可用下式表示:
∑i=1I xici ∑i=1I xivi ≤C (4) \frac{\sum_{i=1}^I{x_i c_i}}{\sum_{i=1}^I{x_i v_i}} \leq C \tag{4} ∑i=1Ixivi∑i=1Ixici≤C(4)

上式中,分子是广告消耗。若 vi v_i vi是预测转化率(pCVR),则分母是转化数,分子除以分母即平均每个转化的广告消耗(转化成本);若 vi v_i vi是预测点击率(pCTR),则分母是点击数,分子除以分母即平均每个点击的广告消耗(点击成本)。 C∈R+C \in \mathbb{R}^+ C∈R+表示广告主可接受的最大转化或点击成本,即CPA(Cost Per Action/Acquisition,每次转化成本)。

需要注意的是,与预算约束由竞价平台直接控制不同,CPA等KPI约束在实际场景中通常是软约束:真实CPA需要整个出价周期结束后,根据全部曝光的实际价值 vi v_i vi才能计算,因此在出价过程中无法实时硬截断。这也解释了为什么建模时通常将其作为惩罚项加入目标函数,而非直接作为硬约束处理。

出价问题可表示为下述线性规划问题:
max⁡ b1,...,bI ∑i xivi s.t. ∑i xici ≤B ∑i xici ∑i xivi ≤C (5) \begin{aligned} \max_{b_1,...,b_I} \ & \sum_i{x_i v_i} \\ \text{s.t.} \ & \sum_i{x_i c_i} \leq B \\ & \frac{\sum_i{x_i c_i}}{\sum_i{x_i v_i}} \leq C \end{aligned} \tag{5} b1,...,bImax s.t. i∑xivii∑xici≤B∑ixivi∑ixici≤C(5)

进而,可求得最优出价策略为:
bi∗=λ0∗vi−∑j λj∗ ( qij (1− 1 CRj ) −kj pij ) (6) b_i^* = \lambda_0^* v_i - \sum_j{\lambda_j^*\left(\mathbf{q}{i j}\left(1-\mathbf{1}{C R_j}\right)-\mathbf{k}j \mathbf{p}{i j}\right)} \tag{6} bi∗=λ0∗vi−j∑λj∗(qij(1−1CRj)−kjpij)(6)

其中, bi∗ b_i^* bi∗表示对于曝光 ii i的理论最优出价; qij \mathbf{q}{i j} qij可以是任意绩效指标或常数; 1 CRj \mathbf{1}{C R_j} 1CRj是指示约束 jj j是否与成本相关的指示函数; pij \mathbf{p}_{i j} pij和 kj \mathbf{k}_j kj可视为在多个KPI条件下式 (5) 中 vi v_i vi和 CC C的扩展表达式。在仅考虑预算和CPA约束的情况下,上式可进一步简化为:
bi∗=(λ0∗+λ1∗C)vi=λ∗vi (7) b_i^* = (\lambda_0^* + \lambda_1^* C) v_i = \lambda^* v_i \tag{7} bi∗=(λ0∗+λ1∗C)vi=λ∗vi(7)

因此,自动出价问题可以转化为在出价过程中迭代寻找最优的统一出价参数 λ∗\lambda^* λ∗。


基于DT的自动出价

基于强化学习的自动出价通常假设出价是一个马尔可夫决策过程,满足状态转移 st+1 =f(st,at) s_{t+1} = f(s_t, a_t) st+1=f(st,at),即当前状态只依赖上一个时间点的状态。而Decision Transformer(DT)可以用于处理序列决策(sequential decision-making),挖掘长周期内的相关信息,而不仅依赖上一个时间点的状态。

DT将强化学习任务转化为序列建模问题,利用Transformer架构强大的建模能力来预测最优策略,在离线强化学习、复杂任务规划以及非马尔可夫决策问题中表现优异。

在基于DT的自动出价中,出价过程被划分为多个时间段,包含以下定义:

  • 状态 st \boldsymbol{s}_t st:是一个向量,包含在时间点 tt t关于出价环境的多个特征,例如剩余时间、未使用预算、历史出价信息等。
  • 动作 at a_t at:出价变量。在本论文中,最优动作即式 (7) 中的统一出价参数 λ∗\lambda^* λ∗,因此:

at=λt (8) a_t = \lambda_t \tag{8} at=λt(8)

  • 奖励 rwt rw_t rwt:令时间点 tt t和 t+1t+1 t+1之间有 Nt N_t Nt次曝光机会,则 rwt rw_t rwt可表示为:

rwt= ∑n=0Nt xnt vnt (9) rw_t = \sum_{n=0}^{N_t}{x_{n_t} v_{n_t}} \tag{9} rwt=n=0∑Ntxntvnt(9)

即时间点 tt t和 t+1t+1 t+1之间竞胜的曝光价值之和。

  • Return-To-Go(RTG) rt r_t rt:表示在剩余时间可获得的奖励之和:

rt= ∑t′=tT rwt′ (10) r_t = \sum_{t'=t}^T{rw_{t'}} \tag{10} rt=t′=t∑Trwt′(10)

其中, TT T为最终时间点,例如当天晚上12点。

出价过程可由下述轨迹(trajectory)表示:
τ=(r1,s1,a1,r2,s2,a2,...,rT,sT,aT) (11) \tau = (r_1, \boldsymbol{s}_1, a_1, r_2, \boldsymbol{s}_2, a_2, ..., r_T, \boldsymbol{s}_T, a_T) \tag{11} τ=(r1,s1,a1,r2,s2,a2,...,rT,sT,aT)(11)


GAVE 框架

GAVE 概览

GAVE(Generative Auto-Bidding With Value-Guided Explorations)采用 DT 架构,输入是式 (11) 所示的轨迹,即奖励、状态和动作的序列 (rt,st,at) (r_t, \boldsymbol{s}_t, a_t) (rt,st,at)。与传统 DT 相比,GAVE 在以下三个方面进行了创新:

  1. 基于分数的RTG(score-based RTG):通过可定制的分数函数将CPA等约束整合到训练阶段,使训练目标与不同广告主的评估指标对齐;
  2. 动作探索模块(action exploration module):在离线数据集之外探索新颖动作,并通过基于RTG的评估方法实现稳定更新;
  3. 可学习价值函数(learnable value function):估计未来RTG的上界,引导探索方向并缓解Out-of-Distribution(OOD)问题。

GAVE采用离线强化学习范式:对序列样本进行推理,然后在模拟竞价环境中进行评估,让被测模型与采用固定策略的其他智能体交互。

在时间点 tt t,GAVE基于输入的历史轨迹预测多个量:预测动作 a^t \hat{a}t a^t、探索系数 β^t \hat{\beta}t β^t、可学习价值函数 Vt+1 V{t+1} Vt+1的估计值 V^t+1 \hat{V}{t+1} V^t+1,以及RTG估计值 r^t+1 \hat{r}{t+1} r^t+1。该过程可由式 (12) 表示:
{ ( β^t , a^t , V^t+1 )=GAVE( rt−M , st−M , at−M ,...,rt,st) r^t+1 =GAVE( rt−M , st−M , at−M ,...,rt,st,at) a~t = β^t at (12) \begin{cases} (\hat{\beta}t, \hat{a}t, \hat{V}{t+1}) = GAVE(r{t-M}, \boldsymbol{s}
{t-M}, a_{t-M}, ..., r_t, \boldsymbol{s}t) \\ \hat{r}{t+1} = GAVE(r_{t-M}, \boldsymbol{s}{t-M}, a{t-M}, ..., r_t, \boldsymbol{s}_t, a_t) \\ \tilde{a}_t = \hat{\beta}_t a_t \end{cases} \tag{12} ⎩ ⎨ ⎧(β^t,a^t,V^t+1)=GAVE(rt−M,st−M,at−M,...,rt,st)r^t+1=GAVE(rt−M,st−M,at−M,...,rt,st,at)a~t=β^tat(12)

其中, MM M是超参数,表示输入序列包含 M+1M+1 M+1个时间步; a~t \tilde{a}_t a~t是由探索系数 β^t \hat{\beta}_t β^t生成的探索动作。

基于分数的RTG

如前文"自动出价问题定义"一节所述,直接优化竞胜曝光的累计奖励可能导致CPA约束超过限制。因此,目标函数需要引入惩罚项,刻画特定广告对于CPA约束的遵循程度。

"基于分数的RTG"的核心思想是:将测试阶段用于评估整个出价阶段的分数 SS S推广到每个时间步,得到 St S_t St,再通过 rt=ST− St−1 r_t = S_T - S_{t-1} rt=ST−St−1计算RTG。这样,训练阶段的优化目标不再是原始累计奖励,而是与最终评估指标一致的分数,从而自然实现训练目标与评估指标的对齐。

在测试阶段,使用分数 SS S(公式 13)评估整个出价阶段出价模型的性能,其中 γ=2\gamma=2 γ=2:
{ CPA= ∑i xici ∑i xivi P(CPA;C)=min⁡{ ( CCPA ) γ ,1} S=P(CPA;C)⋅∑i xivi (13) \begin{cases} CPA = \frac{\sum_i{x_i c_i}}{\sum_i{x_i v_i}} \\ \mathbb{P}(CPA; C) = \min{\left\{\left(\frac{C}{CPA}\right)^\gamma, 1\right\}} \\ S = \mathbb{P}(CPA; C) \cdot \sum_i{x_i v_i} \end{cases} \tag{13} ⎩ ⎨ ⎧CPA=∑ixivi∑ixiciP(CPA;C)=min{(CPAC)γ,1}S=P(CPA;C)⋅∑ixivi(13)

CPACPA CPA越大,即成本越高, P(CPA;C)\mathbb{P}(CPA; C) P(CPA;C)越小,分数 SS S越小。

论文直接在训练阶段整合上述约束,而不仅仅像先前工作那样只在测试阶段用分数 SS S筛选模型。相比于无约束的RTG,论文使用了带约束的分数:
{ CPAt= ∑iIt xici ∑iIt xivi P(CPAt;C)=min⁡{ ( C CPAt ) γ ,1} St=P(CPAt;C)⋅ ∑iIt xivi rt=ST− St−1 (14) \begin{cases} CPA_t = \frac{\sum_i^{I_t}{x_i c_i}}{\sum_i^{I_t}{x_i v_i}} \\ \mathbb{P}(CPA_t; C) = \min{\left\{\left(\frac{C}{CPA_t}\right)^\gamma, 1\right\}} \\ S_t = \mathbb{P}(CPA_t; C) \cdot \sum_i^{I_t}{x_i v_i} \\ r_t = S_T - S_{t-1} \end{cases} \tag{14} ⎩ ⎨ ⎧CPAt=∑iItxivi∑iItxiciP(CPAt;C)=min{(CPAtC)γ,1}St=P(CPAt;C)⋅∑iItxivirt=ST−St−1(14)

其中, It I_t It表示从时间点0到时间点 tt t的曝光数, St S_t St表示时间点 tt t的分数, TT T表示出价阶段最终的时间点。

更一般地,可将式 (14) 概括为:
rt=ST− St−1 (15) r_t = S_T - S_{t-1} \tag{15} rt=ST−St−1(15)

直观上, ST S_T ST是整个出价周期的最终累计分数, St−1 S_{t-1} St−1是到时间步 t−1t-1 t−1为止已经获得的累计分数,两者之差 rt r_t rt即为从时间步 tt t开始尚未获得、但预期可以获得的分数,因此可以作为RTG来指导模型优化。

这种基于分数的RTG函数增强了GAVE的灵活性,使其能够适用于多样化的广告目标。由于分数函数 SS S通常可微,不同广告目标可以通过可微编程的方式灵活地嵌入训练目标。

动作探索

探索旨在从离线数据中发现更好的策略。但在离线环境中无法与环境交互,离线探索会导致分布偏移(distribution shifts)。GAVE 设计了一种动作探索机制,在探索新颖动作的同时保持训练的稳定性。

在时间点 tt t,GAVE预测一个与 at a_t at维度相同的系数 β^t \hat{\beta}t β^t,生成新的动作 a~t \tilde{a}t a~t:
{ β^t =σ(FCβ(DT( rt−M , st−M , at−M ,...,rt,st))) a~t = β^t at (16) \begin{cases} \hat{\beta}t = \sigma(FC\beta(DT(r
{t-M}, \boldsymbol{s}
{t-M}, a_{t-M}, ..., r_t, \boldsymbol{s}_t))) \\ \tilde{a}_t = \hat{\beta}_t a_t \end{cases} \tag{16} {β^t=σ(FCβ(DT(rt−M,st−M,at−M,...,rt,st)))a~t=β^tat(16)

其中, DT(⋅)DT(\cdot) DT(⋅)表示Decision Transformer骨干网络, FCβ(⋅) FC_\beta(\cdot) FCβ(⋅)表示全连接网络层, σ\sigma σ是缩放函数:
σ(x)=Sigmoid(x)+0.5 (17) \sigma(x) = Sigmoid(x) + 0.5 \tag{17} σ(x)=Sigmoid(x)+0.5(17)

该函数将 β^t \hat{\beta}_t β^t限制在 (0.5,1.5)(0.5, 1.5) (0.5,1.5)之间,使得探索动作 a~t \tilde{a}_t a~t与动作标签 at a_t at接近,从而将分布偏移控制在较小范围内。

为了最小化分布偏移并保持训练稳定,GAVE不直接使用 a~t \tilde{a}t a~t生成新样本,而是将其作为额外标签来指导动作 a^t \hat{a}t a^t的更新方向。根据强化学习中的动作价值定义, at a_t at的动作价值可用 rt+1 r{t+1} rt+1表示,即采取动作后可获得的累计未来回报。因此,GAVE通过比较探索动作和原始动作标签的RTG来评估两者的优劣:
{ r~t+1 =GAVE( rt−M , st−M , at−M ,...,rt,st, a~t ) wt=Sigmoid(αr⋅( r~t+1 − r^t+1 )) (18) \begin{cases} \tilde{r}
{t+1} = GAVE(r_{t-M}, \boldsymbol{s}{t-M}, a{t-M}, ..., r_t, \boldsymbol{s}t, \tilde{a}t) \\ w_t = Sigmoid(\alpha_r \cdot (\tilde{r}{t+1} - \hat{r}{t+1})) \end{cases} \tag{18} {r~t+1=GAVE(rt−M,st−M,at−M,...,rt,st,a~t)wt=Sigmoid(αr⋅(r~t+1−r^t+1))(18)

其中, r~t+1 \tilde{r}{t+1} r~t+1和 r^t+1 \hat{r}{t+1} r^t+1分别是探索动作 a~t \tilde{a}_t a~t和原始动作标签 at a_t at的估计RTG, αr \alpha_r αr是正的超参数。 wt>0.5 w_t > 0.5 wt>0.5表示在估计RTG的意义下探索动作优于原始动作标签,更新方向更偏向 a~t \tilde{a}_t a~t;反之则更偏向 at a_t at。

对应的损失函数为:
{ Lr= 1M+1 ∑t−Mt ( r^t+1 − rt+1 )2 La= 1M+1 ∑t−Mt ((1−wt′)⋅( a^t −at)2+wt′⋅( a^t − a~t′ )2) (19) \begin{cases} L_r = \frac{1}{M+1}\sum_{t-M}^t{(\hat{r}{t+1} - r{t+1})^2} \\ L_a = \frac{1}{M+1}\sum_{t-M}^t{((1-w_t') \cdot (\hat{a}_t - a_t)^2 + w_t' \cdot (\hat{a}_t - \tilde{a}_t')^2)} \end{cases} \tag{19} {Lr=M+11∑t−Mt(r^t+1−rt+1)2La=M+11∑t−Mt((1−wt′)⋅(a^t−at)2+wt′⋅(a^t−a~t′)2)(19)

其中, wt′ w_t' wt′和 a~t′ \tilde{a}_t' a~t′分别表示 wt w_t wt和 a~t \tilde{a}_t a~t的梯度冻结版本。 Lr L_r Lr保证RTG预测的准确性; La L_a La在原始动作标签和探索动作之间实现平衡且稳定的更新。

可学习价值函数

虽然动作探索机制能够发现离线数据集之外的动作并保持稳定更新,但随机生成的探索动作并不能保证模型性能一定提升。为进一步引导探索方向、发现更优策略并缓解OOD问题,GAVE引入了可学习价值函数。

受强化学习中状态价值函数的启发,GAVE定义序列价值函数 Vt+1 V_{t+1} Vt+1,表示 rt+1 r_{t+1} rt+1的上界:
Vt+1 = arg⁡max⁡ at∈A rt+1 (20) V_{t+1} = \mathop{\arg\max}{a_t \in \mathbb{A}}{r{t+1}} \tag{20} Vt+1=argmaxat∈Art+1(20)

其中, A\mathbb{A} A表示可用动作空间。由于动作空间巨大且离线数据集中真实动作有限,无法直接统计计算 Vt+1 V_{t+1} Vt+1,因此通过expectile回归进行学习:
Le = 1M+1 ∑t−Mt (L2τ( rt+1 − V^t+1 )) = 1M+1 ∑t−Mt (∣τ−1(( rt+1 − V^t+1 )<0)∣⋅( rt+1 − V^t+1 )2) (21) \begin{aligned} L_e &= \frac{1}{M+1}\sum_{t-M}^t{(L_2^\tau(r_{t+1} - \hat{V}{t+1}))} \\ &= \frac{1}{M+1}\sum{t-M}^t{(|\tau - \mathbf{1}((r_{t+1}-\hat{V}{t+1}) < 0)| \cdot (r{t+1}-\hat{V}_{t+1})^2)} \end{aligned} \tag{21} Le=M+11t−M∑t(L2τ(rt+1−V^t+1))=M+11t−M∑t(∣τ−1((rt+1−V^t+1)<0)∣⋅(rt+1−V^t+1)2)(21)

其中, L2τ(y−m(x)) L_2^\tau(y - m(x)) L2τ(y−m(x))表示使用模型 m(x)m(x) m(x)预测标签 yy y的expectile τ∈(0,1)\tau \in (0, 1) τ∈(0,1)的损失函数; V^t+1 \hat{V}{t+1} V^t+1是 Vt+1 V{t+1} Vt+1的预测值; 1(⋅)\mathbf{1}(\cdot) 1(⋅)是指示函数。论文设置 τ=0.99\tau = 0.99 τ=0.99以学习 rt+1 r_{t+1} rt+1的上界。直观上,expectile损失通过系数 ∣τ−1(⋅)∣|\tau - \mathbf{1}(\cdot)| ∣τ−1(⋅)∣对正负误差赋予不同权重:当 τ>0.5\tau > 0.5 τ>0.5时,模型低估真实RTG会受到更大惩罚,而高估则相对宽容,因此预测值会趋向于标签分布的右侧尾部。当 τ=0.99\tau = 0.99 τ=0.99时,模型几乎只关注高RTG样本,从而估计出RTG的近似上界。

通过用 V^t+1 \hat{V}{t+1} V^t+1估计 Vt+1 V{t+1} Vt+1并引导 r~t+1 \tilde{r}{t+1} r~t+1的更新方向,GAVE隐式地将探索动作 a~t \tilde{a}t a~t的更新方向引向潜在最优动作:
Lv= 1M+1 ∑t−Mt ( r~t+1 − V^t+1′ )2 (22) L_v = \frac{1}{M+1}\sum
{t-M}^t{(\tilde{r}
{t+1} - \hat{V}_{t+1}')^2} \tag{22} Lv=M+11t−M∑t(r~t+1−V^t+1′)2(22)

其中, V^t+1′ \hat{V}{t+1}' V^t+1′是 V^t+1 \hat{V}{t+1} V^t+1的梯度冻结版本。通过 Lv L_v Lv,GAVE将探索动作的RTG锚定在估计的最优值附近,缓解OOD风险并实现受控外推以改进策略。

优化算法

综合上述模块,GAVE的总体损失函数为各损失项的加权和:
Lo=α1⋅Lr+α2⋅La+α3⋅Le+α4⋅Lv (23) L_o = \alpha_1 \cdot L_r + \alpha_2 \cdot L_a + \alpha_3 \cdot L_e + \alpha_4 \cdot L_v \tag{23} Lo=α1⋅Lr+α2⋅La+α3⋅Le+α4⋅Lv(23)

其中, {α1,α2,α3,α4} \{\alpha_1, \alpha_2, \alpha_3, \alpha_4\} {α1,α2,α3,α4}是控制各损失项相对贡献的超参数。四项损失分工明确: Lr L_r Lr保证RTG预测准确,使后续基于RTG的动作评估可靠; La L_a La在原始动作标签与探索动作之间取得平衡,实现稳定性保持更新; Le L_e Le学习未来RTG的上界; Lv L_v Lv用该上界引导探索方向,缓解OOD风险。GAVE的完整优化流程如算法1所示。

算法 1:GAVE优化算法

  • 输入 :离线数据集 D={(zj,yj) }j=1∣D∣ \mathcal{D}=\{(\boldsymbol{z}j, \boldsymbol{y}j)\}{j=1}^{|\mathcal{D}|} D={(zj,yj)}j=1∣D∣,其中 zj={ rt−M , st−M , at−M ,...,rt,st,at} \boldsymbol{z}j=\{r{t-M}, \boldsymbol{s}{t-M}, a_{t-M}, \ldots, r_t, \boldsymbol{s}_t, a_t\} zj={rt−M,st−M,at−M,...,rt,st,at}为含 M+1M+1 M+1个时间步的序列, yj={at, rt+1 } \boldsymbol{y}j=\{a_t, r{t+1}\} yj={at,rt+1}为标签集;
  • 输出 :训练好的模型 ff f(参数为 Φ\boldsymbol{\Phi} Φ)。
  1. 随机初始化模型 ff f 的参数 Φ\boldsymbol{\Phi} Φ;
  2. 对于第 1,...,MaxStep1, ..., MaxStep 1,...,MaxStep 步:
    • 从训练数据集 D\mathcal{D} D中采样一个批次 BB B;
    • 通过 f(B)f(B) f(B)和式 (12) 获得 β^t \hat{\beta}t β^t、 a^t \hat{a}t a^t、 V^t+1 \hat{V}{t+1} V^t+1、 r^t+1 \hat{r}{t+1} r^t+1,并根据 a~t = β^t at \tilde{a}_t = \hat{\beta}_t a_t a~t=β^tat计算探索动作;
    • 通过式 (18) 获得探索动作的RTG估计 r~t+1 \tilde{r}_{t+1} r~t+1和权重 wt w_t wt;
    • 基于式 (19)、(21) 和 (22) 分别计算损失 Lr L_r Lr、 La L_a La、 Le L_e Le和 Lv L_v Lv;
    • 基于式 (23) 计算总体损失 Lo L_o Lo;
    • 通过最小化 Lo L_o Lo更新模型参数 Φ\boldsymbol{\Phi} Φ;
  3. 返回训练好的模型 ff f。

在推理阶段,GAVE处理每个输入序列以预测 a^t =λt \hat{a}t = \lambda_t a^t=λt,作为时间步 tt t的出价参数;第 nn n个曝光的出价价格按式 (7) 计算为 btn =λt vtn b{tn} = \lambda_t v_{tn} btn=λtvtn。


离线实验

实验设置

论文在阿里妈妈发布的公开基准AuctionNet 及其稀疏版本AuctionNet-Sparse上进行实验。两个数据集均包含约 50 万条出价轨迹,跨越约 1 万个投放周期,每条轨迹 48 个时间步。

表 1:数据统计。

参数 AuctionNet AuctionNet-Sparse
Trajectories 479,376 479,376
Delivery Periods 9,987 9,987
Time steps in a trajectory 48 48
State dimension 16 16
Action dimension 1 1
Return-To-Go Dimension 1 1
Action range 0, 493 0, 589
Impression's value range 0, 1 0, 1
CPA range 6, 12 60, 130
Total conversion range 0, 1512 0, 57

评估采用模拟出价环境,48个不同策略的智能体竞争到来的曝光,测试模型依次替换每个智能体进行轮替测试,最终性能取平均。离线评估时,模型预测的动作直接作为出价参数使用(即 a^t =at \hat{a}_t = a_t a^t=at)。性能指标使用式 (13) 中 γ=2\gamma=2 γ=2的分数 SS S。

基线方法包括:DiffBid、USCB、CQL、IQL、BCQ、DT、CDT、GAS。

实现细节 。所有实验在NVIDIA H100 GPUs上进行。GAVE采用8层、16个注意力头的因果Transformer架构,使用AdamW优化器,学习率为 1e−51e^{-5} 1e−5,批次大小为128,最多训练40万步。其他超参数通过网格搜索确定。为保证统计显著性,论文使用最优参数配置进行10次独立运行并报告平均结果。

整体性能

表 2 :性能比较。粗体表示最高分数,下划线表示基线中的最佳结果,"*"表示经双尾t检验( p<0.05p<0.05 p<0.05)相对于最佳基线的统计显著提升。

Dataset Budget DiffBid USCB CQL IQL BCQ DT CDT GAS GAVE Improve
AuctionNet 50% 54 86 113 164 190 191 174 193 201* 4.15%
AuctionNet 75% 100 135 139 232 259 265 242 287 296* 3.14%
AuctionNet 100% 152 157 171 281 321 329 326 359 376* 4.74%
AuctionNet 125% 193 220 201 355 379 396 378 409 421* 2.93%
AuctionNet 150% 234 281 238 401 429 450 433 461 467* 1.30%
AuctionNet-Sparse 50% 9.9 11.5 12.8 16.5 17.7 14.8 11.2 18.4 19.6* 6.52%
AuctionNet-Sparse 75% 15.4 14.9 16.7 22.1 24.6 22.9 18.0 27.5 28.3* 2.91%
AuctionNet-Sparse 100% 19.5 17.5 22.2 30.0 31.1 29.6 31.2 36.1 37.2* 3.05%
AuctionNet-Sparse 125% 25.3 26.7 28.6 37.1 34.2 34.3 31.7 40.0 42.7* 6.75%
AuctionNet-Sparse 150% 30.8 31.3 35.8 43.1 37.9 44.5 39.1 46.5 47.4* 1.94%

从表2可以看出,GAVE在所有预算和数据集配置下均取得最优性能,相比最强基线GAS仍有1.3%--6.75%的提升。基于DT的方法(GAS、DT、CDT)整体优于传统RL和规则方法,验证了DT在捕捉时间依赖性和长程历史信息方面的优势。相比之下,DiffBid在长序列且高度动态的竞价环境中表现不佳,可能由于扩散模型的反向过程难以准确预测整条出价轨迹并从中学习。

对齐分析

为验证基于分数的RTG能够将训练目标与评估指标对齐,论文在AuctionNet-Sparse 100%预算下测试了三种评估指标 S1 S_1 S1、 S2 S_2 S2、 S3 S_3 S3:
{ S1=∑i xivi , S2=min⁡{ ( CCPA ) 2 ,1}⋅∑i xivi , S3=min⁡{ ( CCPA ) 5 ,1}⋅∑i xivi . (24) \begin{cases} S_1 = \sum_i{x_i v_i}, \\ S_2 = \min{\left\{\left(\frac{C}{CPA}\right)^2, 1\right\}} \cdot \sum_i{x_i v_i}, \\ S_3 = \min{\left\{\left(\frac{C}{CPA}\right)^5, 1\right\}} \cdot \sum_i{x_i v_i}. \end{cases} \tag{24} ⎩ ⎨ ⎧S1=∑ixivi,S2=min{(CPAC)2,1}⋅∑ixivi,S3=min{(CPAC)5,1}⋅∑ixivi.(24)

三者的业务含义有所不同: S1 S_1 S1只关注累计曝光价值,对应CPA约束较为宽松、允许成本波动的场景; S2 S_2 S2是论文采用的评估指标,对CPA施加中等程度的惩罚; S3 S_3 S3将CPA惩罚指数提高到5,对应CPA约束非常严格、要求成本必须贴近限制的场景。

表 3:对齐分析(AuctionNet-Sparse,100% 预算)。行表示训练 RTG,列表示评估指标。

Train \ Eval S1 S_1 S1 S2 S_2 S2 S3 S_3 S3
S1 S_1 S1 41.4 33.0 23.6
S2 S_2 S2 39.9 37.2 33.3
S3 S_3 S3 39.1 36.8 33.5

从表3可见,当训练RTG与评估指标一致时,GAVE均取得最高性能,说明基于分数的RTG能够有效对齐训练目标与评估指标。

参数分析

图2展示了训练过程中总体损失 Lo L_o Lo和权重 wt w_t wt的变化。 wt w_t wt通过Sigmoid将探索动作与原始动作标签的RTG差距映射到 (0,1)(0, 1) (0,1) 区间: wt w_t wt越接近1,说明探索动作 a~t \tilde{a}t a~t的估计RTG r~t+1 \tilde{r}{t+1} r~t+1显著高于原始标签 at a_t at的估计RTG r^t+1 \hat{r}_{t+1} r^t+1,探索动作越优; wt w_t wt越接近0则相反。随着训练进行, wt w_t wt从约0.5逐渐上升至0.5以上的稳定位置,说明在价值函数引导下,模型持续探索RTG更高且接近估计最优值的动作,验证了可学习价值函数对动作探索的指导作用。

消融实验

论文设计了两种GAVE变体,并与纯DT基线进行对比:

  • GAVE-VA:去除动作探索机制和可学习价值函数,仅保留基于分数的RTG;
  • GAVE-V :去除可学习价值函数,保留动作探索机制。由于去除了价值函数模块, Le L_e Le(expectile回归损失)和 Lv L_v Lv同时被移除,并改用损失 Lw=1−Sigmoid(αr⋅( r~t+1 − r^t+1′ )) L_w = 1 - \text{Sigmoid}(\alpha_r \cdot (\tilde{r}{t+1} - \hat{r}{t+1}^{\prime})) Lw=1−Sigmoid(αr⋅(r~t+1−r^t+1′)) 鼓励探索动作的RTG超过原始标签,其中 r^t+1′ \hat{r}{t+1}^{\prime} r^t+1′是 r^t+1 \hat{r}{t+1} r^t+1的梯度冻结版本。然而,这种无界引导容易使探索方向偏离真实分布,导致OOD 问题;
  • DT :去除GAVE的所有设计模块,仅使用原始累计奖励 ∑ixivi \sum_i x_i v_i ∑ixivi 作为RTG的纯Decision TransformerΩ线。

消融结果表明:(1)基于分数的RTG本身即可带来提升(GAVE-VA > DT),说明训练目标与评估指标对齐的重要性;(2)引入动作探索机制后性能进一步提升(GAVE-V > GAVE-VA),说明离线数据集之外的动作探索具有价值;(3)完整引入可学习价值函数后性能最佳(GAVE > GAVE-V),说明价值函数既能约束探索范围、缓解OOD问题,又能将探索方向引向潜在最优策略。


在线应用

论文还通过A/B测试在快手在线实时出价场景中验证了GAVE的有效性。在线测试的基线是当前生产环境中部署的离线强化学习算法IQL,测试场景包括Nobid(在每日预算内最大化转化数)和Costcap(在CPA/ROI限制下最大化转化数)两种。

在线系统中,状态为20步序列,特征包括预算、CPA限制、预测值、流量/成本速度、分时段预算、剩余时间和窗口平均出价系数。为稳定出价结果,出价系数 λt \lambda_t λt由GAVE输出动作 at a_t at加上前两小时窗口(含 EE E个时间步)内的平均出价系数确定:
λt=at+ 1∣E∣ ∑t′=t−Et−1 λt′ (25) \lambda_t = a_t + \frac{1}{|E|}\sum_{t'=t-E}^{t-1}{\lambda_{t'}} \tag{25} λt=at+∣E∣1t′=t−E∑t−1λt′(25)

其中, at a_t at是GAVE在时间步 tt t输出的动作。由于真实转化稀疏,训练时以预期总转化数 ∑ipcvri \sum_i pcvr_i ∑ipcvri的累计形式作为RTG(即每个时间步对应剩余预期转化数),其中 pcvri pcvr_i pcvri是获胜流量 ii i的预测转化率;推理阶段整个序列的目标RTG设置为该广告活动前一天的预期总转化数。

表 4:在线 A/B 测试。

Cost Conversion Target cost CPA valid ratio
Nobid +0.8% +8.0% +3.2% /
Costcap +2.0% +3.6% +2.2% +1.9%

在线A/B测试持续五天,对每个广告活动,25%的预算和流量分配给基线模型,另外25%的预算和流量分配给GAVE。这里的"Target cost"是按广告活动价值加权后的转化指标(Costcap场景下用CPA限制加权,Nobid场景下用历史平均真实CPA加权),用于统一衡量不同广告活动的转化贡献。在Nobid场景中,GAVE在成本仅增加0.8%的情况下,转化数提升8.0%,目标成本提升3.2%。在Costcap场景中,GAVE实现了成本+2.0%、转化数+3.6%、目标成本+2.2%、CPA有效比例+1.9%的全面提升。该结果验证了GAVE在真实工业环境中的有效性。


相关工作

离线强化学习与Decision Transformer

强化学习通过与环境交互训练决策智能体,但在线交互在真实应用中风险较高。离线RL通过从静态数据集中学习策略来解决这一问题,BCQ、CQL、IQL等方法在稳定控制、缓解价值过估计和减少分布偏移方面表现良好。然而,这些方法对MDP的依赖限制了对历史观测和长程依赖的建模。Decision Transformer将 RL重新建模为序列建模任务,利用Transformer捕捉历史模式和长程依赖,在离线RL中取得了优异性能。CDT等扩展进一步实现了零样本约束适应。

在线广告平台的自动出价

自动出价在管理大规模广告拍卖中发挥着关键作用。早期方法如PID和OnlineLP基于规则,使用反馈回路和随机规划解决预算pacing和出价优化问题。基于RL的方法如RLB、USCB、MAAB、SORL能够处理高维状态和多智能体协调。近年来,DiffBid和GAS等生成式序列建模方法分别使用扩散模型和带蒙特卡洛树搜索(MCTS)的transformer改进了出价轨迹生成。GAVE在此基础上提出了基于分数的RTG、动作探索机制和可学习价值函数,以实现对齐优化目标、增强探索并学习最优策略。


总结

本文对快手提出的GAVE框架进行了系统梳理。GAVE 基于Decision Transformer,针对离线自动出价场景中的三个关键挑战提出了创新解决方案:

  1. 基于分数的RTG:通过可定制的分数函数将CPA等约束整合到训练阶段,实现训练目标与评估指标的对齐;
  2. 动作探索机制:通过预测探索系数生成邻近动作,并基于RTG评估其优劣,实现保持训练稳定的更新;
  3. 可学习价值函数:通过expectile回归估计未来RTG的上界,引导探索方向并缓解OOD风险。

实验结果表明,GAVE在公开数据集和快手真实在线场景中均取得了优于现有基线的性能。该工作为动态竞价环境中的自动出价策略优化提供了有效的解决方案。


参考文献

相关推荐
智者知已应修善业1 小时前
【P12159蓝桥杯数组翻转】2025-4-24
c语言·c++·经验分享·笔记·算法·蓝桥杯
小巧的砖头2 小时前
使用SVN+CruiseControl+ANT实现持续集成之一
学习·算法
人道领域2 小时前
【LeetCode刷题日记】贪心算法理论与实战:455.分发饼干最优解
java·开发语言·数据结构·算法·leetcode·贪心算法
小O的算法实验室2 小时前
2026年ACM TCH,动态救护车路径优化:结合 K-means 聚类与多目标粒子群算法两阶段策略
算法
在书中成长2 小时前
HarmonyOS 小游戏《对战五子棋》开发第8篇 - GomokuEngine核心引擎设计(三):五子连珠判定算法
算法·华为·harmonyos
Let's Chat Coding3 小时前
MAC 消息认证码:同时验证来源和完整性
算法·哈希算法
cc.ChenLy5 小时前
算法从入门到精通实战指南
算法
Jerry11 小时前
LeetCode 160. 相交链表
算法
Jerry12 小时前
LeetCode 19. 删除链表的倒数第 N 个结点
算法