Bi-DFCL:用小流量 RCT 校准大规模营销日志

建议读法

先判断价值,再选择下钻深度

这版把正文压成 11 个大块。先看读前结论、方法主线和实验证据;如果准备复现,再看 PPL/PIFD、隐式梯度、训练 loop 和数据前提。

先读这里如果只想判断值不值得继续读,看这一屏就够

读前结论

这篇论文值得读。它不是又做了一个 uplift/CATE 模型,而是把优惠券/补贴系统里最麻烦的三件事放在同一个训练框架里:

Bi-DFCL 的取舍很清楚:让 RCT 负责校准方向,让 OBS 负责提供规模。

更具体一点,它用 RCT 上的 decision loss 训练一个 Bridge Network;Bridge 决定在 OBS 上怎么生成 counterfactual pseudo-label;Target Network 在大量 OBS 上训练。上线时只保留 Target 和预算优化器。Teacher、Bridge、隐式微分这些复杂东西都留在离线训练期。

我读完后的判断:如果要在优惠券/权益个性化里落地,先做 Bi-DFCL-PPL 的简化版,不要一上来复现 PIFD + implicit differentiation 的完整版。PPL 已经足够贴近预算分配问题,也更容易排查。

Bi-DFCL 方法主线:RCT 校准 Bridge,Bridge 改写 OBS 上的 pseudo-label,Target 最终上线接预算优化器。

1. 这篇论文到底解决什么问题

论文标题里的 large-scale marketing optimization 不是泛泛地说“营销更精准”。它指的是一个带预算约束的多 treatment 分配问题。每个用户、商家、商品或用户-商品对,都要从多个动作里选一个:不发券、发 5 元券、发 10 元券、免邮、折扣档位,等等。

模型需要同时预测两类东西:

然后优化器在总预算 $B$ 下做分配。

1.1 符号和业务含义

符号 论文含义 电商/优惠券语境
$i\in[N]$ 个体 用户、商家、商品、用户-商品对
$j\in[M]$ treatment 不发券、券面额、折扣档位、免邮等
$x_i$ 特征 用户/商品/上下文特征
$t_i$ 实际接受的 treatment 历史实际发放动作
$r_{ij}$ 潜在 revenue/outcome GMV、订单、毛利、复购等
$c_{ij}$ 潜在 cost 券成本、补贴、预算消耗
$z_{ij}$ 是否给 $i$ 分配 $j$ 分配决策
$B$ 总预算 活动预算、日预算、人群预算
$\lambda$ 预算影子价格 revenue 与 cost 的兑换率

每个样本只观测到实际 treatment 下的结果:

$$ (x_i,t_i,r_{i t_i},c_{i t_i}). $$

其他 treatment 下的 $r_{ij},c_{ij}$ 都是 counterfactual。优惠券问题的难点就在这里:你只知道用户拿了 10 元券之后发生了什么,不知道如果给 5 元券、不给券、给免邮会发生什么。

1.2 下游优化器:不是 uplift 排序,而是 MCKP

论文把问题写成 Multi-Treatment Budget Allocation Problem,形式上是 multi-choice knapsack problem:

$$ \begin{aligned} \max_{z}\quad & H(z;r,c)=\sum_{i=1}^{N}\sum_{j=1}^{M} z_{ij}r_{ij} \\ \text{s.t.}\quad & \sum_{i=1}^{N}\sum_{j=1}^{M}z_{ij}c_{ij}\le B, \\ & \sum_{j=1}^{M}z_{ij}=1,\quad \forall i\in[N], \\ & z_{ij}\in\{0,1\},\quad \forall i\in[N],j\in[M]. \end{aligned} $$

这比“预测 uplift 后排序”更接近真实投放系统。系统不是只问“给不给券”,而是要在多个档位里选,并且全局预算不能爆。

论文用 Lagrangian relaxation 近似求解。给定预算影子价格 $\lambda$ 后,每个个体独立选择 adjusted score 最大的 treatment:

$$ z^*_{ij} =\mathbf{1}\left\{ j=\arg\max_{j'\in[M]}\left(r_{ij'}-\lambda^*c_{ij'}\right) \right\}. $$

用模型预测时就是:

$$ \hat s_{ij}(\theta;\lambda)=\hat r_{ij}(\theta)-\lambda \hat c_{ij}(\theta). $$

这里有一个很实际的坑:$\lambda$ 不是普通超参,它是“多花一块钱预算值不值”的兑换率。如果 revenue 和 cost 的归因窗口不一致,或者 cost 口径和预算系统不一致,solver 会被错误的 $\lambda$ 带偏。


2. 为什么不能把 OBS 和 RCT 直接拼起来

论文的核心不是“多用一点数据”,而是如何分工使用两种数据。

数据源 优点 问题 在 Bi-DFCL 里的角色
$\mathcal D_{\mathrm{RCT}}$ treatment 随机,可构造无偏 decision estimator 贵、少、高方差 上层:评价 Target 的决策质量,更新 Bridge
$\mathcal D_{\mathrm{OBS}}$ 历史日志量大,覆盖广,低方差 受历史策略/选择偏差/混杂影响 下层:给 Target 提供大规模 prediction learning 信号

RCT 满足随机分配假设:

$$ (X,R(t),C(t))\perp T. $$

所以在 RCT 上,如果当前 policy 选择的 treatment 正好等于样本随机到的 treatment,就可以用这个样本的 observed outcome 来无偏估计 policy 的收益。代价是匹配率低,方差高。

OBS 不满足这个假设。历史系统可能更愿意给高潜用户发券,也可能把特定折扣投给特定城市、类目或商家。如果直接在 OBS 上最小化 decision loss,模型学到的可能不是因果效应,而是旧策略的选择偏差。

所以 Bi-DFCL 做了一个很关键的结构选择:

$$ \text{RCT controls direction; OBS provides scale.} $$

RCT 不和 OBS 平级 concat。RCT 站在上层,决定 OBS 应该怎么被利用。


方法主线Bridge 如何让 RCT 校准 OBS

3. Bi-DFCL 的方法主线

DFCL 原本可以粗略写成一个加权和:

$$ \mathcal L_{\mathrm{DFCL}}=\mathcal L_{\mathrm{DL}}+\alpha\mathcal L_{\mathrm{PL}}. $$

$\mathcal L_{\mathrm{DL}}$ 看下游分配质量,$\mathcal L_{\mathrm{PL}}$ 看预测误差。问题是:$\alpha$ 怎么调?RCT 样本少时,decision loss 方差很大;OBS 样本多时,prediction loss 又可能把有偏日志放大。

Bi-DFCL 把这个加权和改成 bi-level:

$$ \begin{aligned} \phi^*&=\arg\min_{\phi}\mathcal L_{\mathrm{DL}}\left(\theta^*(\phi);\mathcal D_{\mathrm{RCT}}\right),\\ \theta^*(\phi)&=\arg\min_{\theta}\mathcal L_{\mathrm{PL}}\left(\phi,\theta;\mathcal D_{\mathrm{OBS}}\right). \end{aligned} $$

读这个公式时不要急着看二阶梯度。先看角色:

这就是 “bridging observational and experimental data” 的具体含义。

3.1 三个网络,不要混淆

Target Network $\mathcal F_\theta$

Target 是上线模型。输入 $x_i$,输出所有 treatment 下的 revenue 和 cost:

$$ \mathcal F_\theta(x_i) =\left(\hat r_{i1},\ldots,\hat r_{iM},\hat c_{i1},\ldots,\hat c_{iM}\right). $$

Serving 阶段只需要:

$$ x_i\to\{\hat r_{ij},\hat c_{ij}\}_{j=1}^{M}\to\text{Lagrangian solver}\to\pi(i). $$

Teacher Network $\mathcal F_\psi$

Teacher 在 RCT 上预训练,然后固定。它提供相对无偏但高方差的 counterfactual anchor:

$$ \hat r^{\mathrm{pre}}_{ij}(\psi),\quad \hat c^{\mathrm{pre}}_{ij}(\psi). $$

它不是上线模型,也不继续被 decision loss 训练。

Bridge Network $\mathcal G_\phi$

Bridge 输出 revenue gate 和 cost gate:

$$ w^r_{ij}=\operatorname{sigmoid}\left(\mathcal G^r_\phi(i,j)\right),\quad w^c_{ij}=\operatorname{sigmoid}\left(\mathcal G^c_\phi(i,j)\right). $$

然后用 gate 混合 Teacher 与 Target,生成 counterfactual pseudo-label:

$$ r^{\mathrm{cf}}_{ij} =\hat r^{\mathrm{pre}}_{ij}(\psi)\cdot w^r_{ij} +\hat r_{ij}(\theta)\cdot(1-w^r_{ij}), $$

$$ c^{\mathrm{cf}}_{ij} =\hat c^{\mathrm{pre}}_{ij}(\psi)\cdot w^c_{ij} +\hat c_{ij}(\theta)\cdot(1-w^c_{ij}). $$

可以这样理解:

Bridge 不是 propensity reweighting,也不是普通 distillation。它学的是:哪些 counterfactual 更应该听 RCT Teacher,哪些地方可以利用 OBS/Target 的低方差信号。

论文正文没有把 Bridge 输入特征写得很细。工业复现时不能只写 $\mathcal G_\phi(i,j)$,至少要明确它看到哪些 user/treatment/context 表示,否则很容易做成一个过于粗糙的全局 gate。


4. 训练目标:下层学预测,上层看决策

4.1 下层:OBS prediction loss

对 OBS 样本,只有 factual treatment $t_i$ 下的标签真实可见。下层 loss 分两块。

Factual 部分用真实标签:

$$ \mathcal L_{\mathrm{fact}} =\mathbb{E}_{i,t_i}\left[ (r_{i t_i}-\hat r_{i t_i})^2+(c_{i t_i}-\hat c_{i t_i})^2 \right]. $$

Counterfactual 部分用 Bridge 生成的 pseudo-label:

$$ \mathcal L_{\mathrm{cf}} =\mathbb{E}_{i,j\ne t_i}\left[ (r^{\mathrm{cf}}_{ij}-\hat r_{ij})^2+(c^{\mathrm{cf}}_{ij}-\hat c_{ij})^2 \right]. $$

合起来:

$$ \mathcal L_{\mathrm{PL}}(\phi,\theta;\mathcal D_{\mathrm{OBS}}) =\mathcal L_{\mathrm{fact}}+\mathcal L_{\mathrm{cf}}. $$

这里 $\mathcal L_{\mathrm{PL}}$ 显式依赖 $\phi$,因为 pseudo-label 是 Bridge 造出来的。上层改 Bridge,本质上是在改 OBS 训练 Target 的方式。

一个复现时必须盯住的细节:pseudo-label 里包含当前 Target 输出,例如

$$ r^{\mathrm{cf}}_{ij}=w^r_{ij}\hat r^{\mathrm{pre}}_{ij}+(1-w^r_{ij})\hat r_{ij}(\theta). $$

如果不处理 detach,模型可能出现“追自己”的梯度路径。论文没有把 detach 策略讲透,工程里至少要明确四件事:

这块比公式看起来更危险。复现失败时,我会先查这里。

4.2 上层:RCT decision loss estimator

如果完整 counterfactual 都可见,decision loss 可以写成 policy 选择后的真实收益负值:

$$ \mathcal L_{\mathrm{DL}}(\theta) =-M\cdot\mathbb{E}_{i,j} \left[z^*_{ij}(\hat r(\theta),\hat c(\theta))\cdot r_{ij}\right]. $$

但真实世界里 $r_{ij}$ 不可全观测。RCT 的作用是提供无偏估计:

$$ \mathcal L_{\mathrm{DL}}(\theta;\mathcal D_{\mathrm{RCT}}) =-\mathbb{E}_{i,t_i}\left[ \frac{1}{p_{t_i}} \cdot z^*_{i t_i}(\hat r(\theta),\hat c(\theta)) \cdot r_{i t_i} \right]. $$

论文在均匀随机场景里写成 $N/N_{t_i}$。如果线上实验不是均匀随机,实践里应该用真实 logging probability $p(t_i\mid x_i)$。

预算约束也通过 RCT/IPW 估计:

$$ \left| \mathbb{E}_{i,t_i}\left[ \frac{1}{p_{t_i}} \cdot z^\lambda_{i t_i}(\hat r(\theta),\hat c(\theta)) \cdot c_{i t_i} \right] -\frac{B}{N} \right|\le \epsilon. $$

这个 estimator 的含义很直白:只有当当前 policy 选择的 treatment 正好等于 RCT 随机到的 treatment 时,这个样本才贡献收益/成本估计。RCT 能评价任意 policy,但方差会高,就是这个原因。


优化细节不可微决策、PPL/PIFD 与隐式梯度

5. 不可微的地方:PPL、PIFD 和隐式梯度

5.1 为什么 decision loss 不可微

下游选择里有 $\arg\max$ 和 indicator:

$$ z^*_{i t_i} =\mathbf{1}\left\{ t_i=\arg\max_{j\in[M]} \left[\hat r_{ij}(\theta)-\lambda^*\hat c_{ij}(\theta)\right] \right\}. $$

要用它更新 Bridge,就需要一个可微或近似可微的上层 signal。论文主要讨论 PPL 和 PIFD。

5.2 PPL:工程起点应该先选它

PPL 用 softmax relaxation 替代 hard indicator:

$$ z^d_{ij} =\frac{ \exp\left((\hat r_{ij}-\lambda^*\hat c_{ij})/\tau\right) }{ \sum_{k\in[M]} \exp\left((\hat r_{ik}-\lambda^*\hat c_{ik})/\tau\right) }. $$

上层 loss 写成:

$$ \mathcal L_{\mathrm{PPL}}(\theta;\mathcal D_{\mathrm{RCT}}) =-\mathbb{E}_{i,t_i}\left[ \frac{1}{p_{t_i}} \cdot z^d_{i t_i}(\theta) \cdot r_{i t_i} \right]. $$

PPL 的好处是简单、稳定、能直接 autograd,而且和给定预算 $B$ 对应的 $\lambda^*$ 对齐。缺点也明显:softmax 改变了原始离散优化 landscape,温度、score scale、$\lambda^*$ 稳定性都会影响训练。

我的建议是先从 PPL 做 baseline。PIFD 更接近 hard decision,但调试成本明显高。

5.3 PIFD:更贴近 hard decision,但更容易错

PIFD 试图估计:

$$ \frac{\partial \mathcal L_{\mathrm{DL}}}{\partial z'_{ij}}, $$

然后冻结这个梯度,把 surrogate 写成:

$$ \mathcal L_{\mathrm{PIFD}}(\theta;\mathcal D_{\mathrm{RCT}}) =\mathbb{E}_{i,j} \left[ \frac{\partial \mathcal L_{\mathrm{DL}}}{\partial z'_{ij}} \cdot z'_{ij}(\hat r(\theta),\hat c(\theta)) \right]. $$

附录的有限差分直觉是:轻微扰动预测,看 OR solver 的 decision loss 怎么变。

$$ \frac{\partial \mathcal L_{\mathrm{DL}}(r,c,\hat r,\hat c)}{\partial \hat r_{ij}} \approx \frac{ \mathcal L_{\mathrm{DL}}(r,c,\hat r+e_{ij}h,\hat c) - \mathcal L_{\mathrm{DL}}(r,c,\hat r,\hat c) }{h}. $$

逐元素扰动太慢,所以 paper 用 margin 近似。核心 score 是:

$$ a_{ij}=r_{ij}-\lambda^*c_{ij}. $$

越接近决策边界的样本,微小预测变化越可能改变 solver 输出,因此对 decision loss 的梯度影响越大。

PIFD 的问题是实现细节多:margin 接近 0 时数值不稳,符号、detach、梯度冻结、budget solver 一致性都容易出错。PPL 跑稳前,不建议先碰它。

5.4 Bridge 的上层梯度:隐式微分 + CG

Bi-level 的核心梯度是:

$$ \nabla_\phi \mathcal L_{\mathrm{DL}}(\theta^*(\phi);\mathcal D_{\mathrm{RCT}}) = \left.\nabla_\theta\mathcal L_{\mathrm{DL}}(\theta;\mathcal D_{\mathrm{RCT}})\right|_{\theta=\theta^*(\phi)} \cdot \frac{\partial\theta^*(\phi)}{\partial\phi}. $$

前一项由 PPL/PIFD 给出。后一项来自下层最优条件:

$$ \left. \frac{\partial\mathcal L_{\mathrm{PL}}(\phi,\theta;\mathcal D_{\mathrm{OBS}})}{\partial\theta} \right|_{\theta=\theta^*(\phi)}=0. $$

推导后得到:

$$ \frac{\partial\theta^*(\phi)}{\partial\phi} =-H_{\theta\theta}^{-1}H_{\phi\theta}, $$

其中

$$ H_{\theta\theta}=\nabla^2_{\theta\theta}\mathcal L_{\mathrm{PL}},\quad H_{\phi\theta}=\nabla^2_{\phi\theta}\mathcal L_{\mathrm{PL}}. $$

所以 upper gradient 可写成:

$$ \nabla_\phi \mathcal L_{\mathrm{upper}} = -\nabla_\theta\mathcal L_{\mathrm{DL}}\cdot H_{\theta\theta}^{-1}H_{\phi\theta}. $$

实际不会显式求 Hessian 逆,而是用 CG 解线性系统:

$$ H_{\theta\theta}v=b. $$

CG 只需要 Hessian-vector product:

$$ H p=\nabla_\theta\left(p^\top\nabla_\theta\mathcal L_{\mathrm{PL}}\right). $$

论文默认:

$$ k=5,\quad n_{\mathrm{cg}}=50. $$

其中 $k$ 是 assumed lower GD steps,$n_{\mathrm{cg}}$ 是 CG 迭代次数。


6. 训练流程:上线简单,训练复杂

可以把 Algorithm 1 理解成两个循环:lower update 更新 Target,upper update 更新 Bridge。

text
pretrain Teacher F_psi on RCT, freeze psi
initialize Target F_theta, Bridge G_phi

for OBS mini-batch B_obs:
    if batch_index % k == 0:
        theta_copy = copy(theta)
        for step in 1..k:
            pseudo labels = Bridge(Teacher, Target copy, B_obs)
            theta_copy <- theta_copy - lr * grad_theta L_PL(phi, theta_copy; B_obs)

        compute upper loss on RCT using theta_copy:
            L_upper = L_PPL or L_PIFD
        solve implicit linear system by CG
        update phi

    pseudo labels = Bridge(Teacher, current Target, B_obs)
    theta <- theta - lr * grad_theta L_PL(phi, theta; B_obs)

最重要的工程结论:上线时没有二阶微分、没有 Bridge、没有 Teacher。 线上只需要 Target 输出 $\hat r,\hat c$,再接 Lagrangian solver。复杂性都在离线训练。

框架图

Figure 1:Bi-DFCL 框架。RCT decision loss 在上层训练 Bridge;OBS prediction loss 在下层训练 Target;Teacher 作为 RCT 预训练 anchor;最终上线只保留 Target。

这张图看监督信号方向就够了:

$$ \mathcal D_{\mathrm{RCT}}\xrightarrow{\mathcal L_{\mathrm{DL}}}\mathcal G_\phi \xrightarrow{\text{pseudo-label rule}} \mathcal D_{\mathrm{OBS}}\xrightarrow{\mathcal L_{\mathrm{PL}}}\mathcal F_\theta. $$

RCT 不是多一份训练数据,而是控制 OBS 怎么被用。


证据离线实验、消融、预算鲁棒性和线上 A/B

7. 实验证据

7.1 数据集和指标

Dataset Features Treatments OBS train RCT train RCT val RCT test Metric
CRITEO-UPLIFT v2 Hybrid 12 2 3,498,294 698,980 1,397,959 4,193,878 AUCC
Marketing Data I 180 8 22,201,405 2,220,781 555,014 2,775,976 EOM
Marketing Data II 192 5 33,815,274 2,017,450 504,362 2,521,813 EOM

Criteo 的 hybrid 构造值得注意。原始 Criteo 是 RCT,论文先用 5% 数据训练 two-stage model,再用这个模型模拟 marketing policy,并把“模拟策略 assignment 与真实随机 assignment 相同”的样本作为 OBS。这是在造一个更像真实历史投放日志的 biased OBS。论文报告这个 OBS 的 ROI 比随机数据高 82.43%,说明它确实不像随机实验。

EOM 用 RCT/IPW 估计任意 budget allocation policy 的 per-capita revenue/cost:

$$ \bar r(B)=\frac{1}{N}\sum_i \frac{1}{p_{t_i}}r_{i t_i}\mathbf{1}\{t_i=\pi_B(x_i)\}, $$

$$ \bar c(B)=\frac{1}{N}\sum_i \frac{1}{p_{t_i}}c_{i t_i}\mathbf{1}\{t_i=\pi_B(x_i)\}. $$

Baseline 分三组:RCT-only、OBS-only、RCT+OBS。这个设计比较合理,分别回答:只用无偏小样本够不够、只用有偏大样本会怎样、普通融合是否足够。

7.2 主结果

Table 2 报告 20 runs 的 mean ± std。

Method CRITEO AUCC CRITEO 提升 Marketing I EOM Data I 提升 Marketing II EOM Data II 提升
TSM-SL RCT 0.7143 ± 0.0299 -- 1.0000 ± 0.0032 -- 1.0000 ± 0.0020 --
最强 RCT-only DFCL-DIFD 0.7441 +4.17% DFCL-PIFD 1.0170 +1.70% DFCL-PPL 1.0156 +1.56%
最强 OBS-only DragonNet 0.7490 +4.86% DR-JT 1.0102 +1.02% DR-JT 1.0054 +0.54%
最强 RCT+OBS baseline LTD-DR 0.7533 +5.46% AutoDebias 1.0175 +1.75% LTD-DR 1.0067 +0.67%
Bi-DFCL-PPL 0.7797 ± 0.0094 +9.16% 1.0277 ± 0.0024 +2.77% 1.0252 ± 0.0023 +2.52%
Bi-DFCL-PIFD 0.7812 ± 0.0084 +9.37% 1.0297 ± 0.0030 +2.97% 1.0249 ± 0.0018 +2.49%

我的解读:

7.3 消融实验

论文逐步加入四个组件:Decision Loss、Bi-level、Counterfactual Labels、Implicit Differentiation。

Decision Loss Bi-level Counterfactual Labels Implicit Diff Data I EOM Data I 提升 Data II EOM Data II 提升
1.0000 -- 1.0000 --
1.0167 +1.67% 1.0156 +1.56%
1.0240 +2.40% 1.0175 +1.75%
1.0248 +2.48% 1.0213 +2.13%
1.0277 +2.77% 1.0252 +2.52%

这张表比主结果更能解释方法为什么有效:

7.4 少量 RCT 能否校正大量 OBS

Marketing Data I 的数据量实验:

Method OBS RCT OBS:RCT EOM 提升
TSM-SL 2,220,781 0 -- 0.9869 -1.31%
TSM-SL 0 2,220,781 -- 1.0000 --
TSM-SL 22,201,405 0 -- 1.0067 +0.67%
Bi-DFCL-PPL 22,201,405 222,000 100.01:1 1.0190 +1.90%
Bi-DFCL-PPL 22,201,405 1,100,000 20.18:1 1.0258 +2.58%
Bi-DFCL-PPL 22,201,405 2,220,781 10.00:1 1.0277 +2.77%

这张表对业务最有用。小 OBS-only 低于 RCT baseline,说明有偏日志不能盲信;大 OBS-only 有提升,但有限;只用约 222K RCT 加 22.2M OBS,已经有 +1.90%。

这支持一种实际架构:保留持续小流量 RCT/exploration bucket,让它作为上层校正器,而不是要求随机流量大到能单独训练强模型。

7.5 预算鲁棒性

Figure 2:Marketing Data I 上多个 budget level 的 normalized EOM / incremental reward 曲线。
Figure 3:Marketing Data II 上多个 budget level 的 normalized EOM / incremental reward 曲线。

PPL 用的是某个预算 $B$ 对应的 $\lambda^*$,所以自然要问:它会不会只过拟合单个 budget?论文在多个 candidate budget level 下评估,Bi-DFCL 整体高于 TSM/DFCL/LTD 等方法。

这对优惠券系统很重要。活动预算、类目预算、城市预算会变化。如果模型只在一个 $B$ 上好,很难上线。论文结果支持 Bi-DFCL 有一定 budget robustness,但它仍是在有限候选预算上验证,不等于任意预算连续泛化都有保证。

7.6 训练成本和线上 A/B

附录给出的默认 MLP 结构:

Dataset 模型结构 输出解释
Criteo 64-32-32-4 2 个 revenue + 2 个 cost
Marketing I 128-64-32-16 8 个 revenue + 8 个 cost
Marketing II 128-64-32-10 5 个 revenue + 5 个 cost

默认 warm-start 20 epochs,两个工业数据集 500 epochs,两张 A100。$k=5,n_{\mathrm{cg}}=50$ 基本够用;CG 超过 50 后收益很小。

Marketing Data II 上 500 epochs 的训练时间:

Method Data Time min Relative
TSM-SL RCT+OBS 42.332 1.00×
LTD-DR RCT+OBS 492.559 11.63×
AutoDebias RCT+OBS 397.886 9.40×
Bi-DFCL-PPL RCT+OBS 265.263 6.26×
Bi-DFCL-PIFD RCT+OBS 294.927 6.96×

Bi-DFCL 不便宜,但比 LTD-DR/AutoDebias 快。关键是 inference 和普通 Target 一样,训练贵主要是离线问题。

线上 A/B 在美团外卖营销场景,约 790K online shops,四周,treatment 是 $\{0,5,10,15,20\}$ 折扣档位,目标是在每日预算约束下最大化订单数。

Method Week 1 Week 2 Week 3 Week 4 Overall improvement
TSM-SL 1.0000 ± 0.0022 1.0335 ± 0.0030 0.9217 ± 0.0017 0.9720 ± 0.0048 --
LTD-DR 1.0183 ± 0.0020 1.0378 ± 0.0039 0.9344 ± 0.0037 0.9723 ± 0.0070 +0.91%
DFCL-PIFD 1.0302 ± 0.0013 1.0436 ± 0.0020 0.9440 ± 0.0020 0.9799 ± 0.0018 +1.80%
Bi-DFCL-PPL 1.0428 ± 0.0019 1.0558 ± 0.0025 0.9582 ± 0.0019 0.9872 ± 0.0014 +3.00%
Bi-DFCL-PIFD 1.0470 ± 0.0021 1.0537 ± 0.0027 0.9581 ± 0.0024 0.9906 ± 0.0031 +3.22%

这是论文里最强的证据:Bi-DFCL 不只是 offline EOM 好看,它在真实预算约束折扣分配里也超过 DFCL-PIFD 和 LTD-DR。

限制也很明显:论文只披露 normalized orders,没有绝对订单量、预算消耗、ROI、profit、补贴率、长期留存,也没有分城市/类目/商家层级的异质性分析。线上结果是强证据,但不是完整业务评估。


业务映射优惠券/权益个性化怎么落地

8. 如果放到我们的优惠券/权益个性化里

最有价值的启发不是“照抄一个复杂 bi-level 模型”,而是这个训练架构:

随机实验不一定要大到能单独训练强模型。它可以作为上层评估器,持续校正如何使用海量 OBS。

映射到电商场景:

Paper 符号 电商含义
$i$ 用户、用户-商品对、用户-店铺对、会员、商家
$j$ 不发券/券面额/折扣档位/免邮/满减门槛组合
$r_{ij}$ GMV、订单、毛利、留存、复购、平台净收益
$c_{ij}$ 券成本、补贴、商家承担成本、平台预算消耗
$B$ 活动预算、日预算、人群预算、商家预算
RCT 小流量随机优惠实验或 exploration bucket
OBS 历史营销投放日志
Target 线上打分模型
Solver 预算分配器 / MCKP / Lagrangian ranking

我会按下面顺序做原型。

Stage 1:RCT-only DFCL-PPL baseline

先别碰 OBS。需要:

目标不是冲指标,而是确认数据口径、预算约束、EOM 指标和 solver 都是对的。

Stage 2:OBS + Teacher + fixed Bridge sanity check

先在 RCT 上训练 Teacher,OBS 上训练 Target。Bridge 不要一开始就学,先做固定 gate:

$$ w^r_{ij}=w^c_{ij}=\omega. $$

测试 $\omega\in\{0,0.25,0.5,0.75,1\}$。如果固定 gate 都不稳定,直接上 bi-level 没意义。

Stage 3:learned Bridge + explicit bi-level

每 $k$ 个 batch copy Target,做 $k$ 步 assumed lower update,用 RCT PPL 上层 loss 更新 Bridge。先不做 CG/ID,验证 Bridge 是否学到非平凡 gate。

监控:

$$ \mathbb{E}[w^r],\quad \mathbb{E}[w^c],\quad \operatorname{Var}(w^r),\quad \operatorname{Var}(w^c). $$

防止 gate collapse 到全 0 或全 1。

Stage 4:implicit differentiation + CG

PPL + learned Bridge 稳了以后,再实现 HVP、CG、damping 和 residual logging。建议记录:

$$ \|H v-b\|_2,\quad p^\top H p,\quad \|v\|_2. $$

这样能尽早发现非正定 Hessian 或数值爆炸。

Stage 5:PIFD 增强

PPL 稳定后再上 PIFD。PIFD 的第一优先级不是“实现公式”,而是验证有限差分梯度方向是否和 brute-force small batch perturbation 一致。


9. 数据前提和风险

最小字段:

字段 说明
$x_i$ 用户/商家/商品/上下文特征
$t_i$ 实际 treatment
$r_{i t_i}$ revenue/order/gmv/profit outcome
$c_{i t_i}$ coupon/subsidy cost
data source flag RCT or OBS
$p(t_i\mid x_i)$ RCT/OBS logging probability,至少 RCT 需要已知
attribution window outcome/cost 的归因窗口
budget $B$ 训练/评估预算或候选预算集合

几个风险要提前写进实验设计:

  1. Consistency:观测到的 $r_{i t_i}$ 确实等于潜在结果 $r_i(t_i)$;
  2. Positivity/overlap:重要人群和 treatment 在 RCT 中有足够覆盖;
  3. No interference:个体之间无干扰。折扣和商家竞争场景里,这个假设经常不完全成立;
  4. RCT 与 OBS 可比:时间、人群、活动机制不能漂移太大;
  5. 成本口径稳定:$c$ 的归因要和预算系统一致;
  6. 收益口径稳定:$r$ 不能只看订单而忽略毛利、退款和长期价值,除非业务目标真的只有订单。

10. 我的判断

这篇 paper 对优惠券/补贴个性化很有价值。它的贡献不是发明一个全新的因果估计器,而是把三件原本分开的事接到一起:

它最值得借鉴的是架构思路:小流量随机实验可以长期存在,作为历史日志的校正器。这样比“全靠 OBS”或“全靠大规模 A/B”都更现实。

如果短期落地,我会先复现 Bi-DFCL-PPL 的简化版。PIFD、implicit differentiation 和 learned Bridge 都可以往后放。先把 RCT/IPW evaluator、预算 solver、Target multi-head 输出、PPL loss 这四块跑稳,收益会更可控。


最后回看一页公式链条,把方法压缩成可复述版本

11. 读完后保留这条公式链

11.1 下游优化器

$$ z^*_{ij}=\mathbf{1}\left\{j=\arg\max_{j'}\left(\hat r_{ij'}-\lambda^*\hat c_{ij'}\right)\right\}. $$

11.2 RCT 上的无偏决策估计

$$ \mathcal L_{\mathrm{DL}} =-\mathbb{E}_{i,t_i}\left[ \frac{1}{p_{t_i}}z^*_{i t_i}r_{i t_i} \right]. $$

11.3 PPL 可微 surrogate

$$ \mathcal L_{\mathrm{PPL}} =-\mathbb{E}_{i,t_i}\left[ \frac{1}{p_{t_i}} \frac{\exp((\hat r_{i t_i}-\lambda^*\hat c_{i t_i})/\tau)}{\sum_j\exp((\hat r_{ij}-\lambda^*\hat c_{ij})/\tau)} r_{i t_i} \right]. $$

11.4 Bridge counterfactual pseudo-label

$$ r^{\mathrm{cf}}_{ij}=w^r_{ij}\hat r^{\mathrm{pre}}_{ij}+(1-w^r_{ij})\hat r_{ij}, \quad c^{\mathrm{cf}}_{ij}=w^c_{ij}\hat c^{\mathrm{pre}}_{ij}+(1-w^c_{ij})\hat c_{ij}. $$

11.5 OBS 下层 prediction loss

$$ \mathcal L_{\mathrm{PL}} =\mathbb{E}_{i,t_i}\left[(r_{i t_i}-\hat r_{i t_i})^2+(c_{i t_i}-\hat c_{i t_i})^2\right] +\mathbb{E}_{i,j\ne t_i}\left[(r^{\mathrm{cf}}_{ij}-\hat r_{ij})^2+(c^{\mathrm{cf}}_{ij}-\hat c_{ij})^2\right]. $$

11.6 Bi-level objective

$$ \phi^*=\arg\min_\phi \mathcal L_{\mathrm{DL}}(\theta^*(\phi);\mathcal D_{\mathrm{RCT}}), \quad \theta^*(\phi)=\arg\min_\theta \mathcal L_{\mathrm{PL}}(\phi,\theta;\mathcal D_{\mathrm{OBS}}). $$

11.7 Implicit gradient

$$ \nabla_\phi\mathcal L_{\mathrm{upper}} = -\nabla_\theta\mathcal L_{\mathrm{DL}} \cdot \left(\nabla^2_{\theta\theta}\mathcal L_{\mathrm{PL}}\right)^{-1} \cdot \nabla^2_{\phi\theta}\mathcal L_{\mathrm{PL}}. $$

一句话压缩:用 RCT 上近似可微的 decision signal,通过 bi-level gradient,控制 OBS 上的 counterfactual prediction learning。