服务器 频道

以抖音集团信息流推荐场景为例|如何做复杂的AB实验设计?

  本文将以短视频平台的信息流推荐场景为例,结合相关团队在推荐场景开展A/B测试的实践经验,详解其复杂原理,并重点聚焦双边效应、网络效应问题,分享其对应的双边实验、社区分流实验设计思路。

  作为支持量化决策的科学工具,A/B 实验往往是复杂的,可能面临着用户的学习效应、新奇效应、长短不一致等诸多问题。

  而在 A/B 实验的众多使用场景中,推荐场景的 A/B 实验自有其独特且难解的复杂性。那么,其复杂性的成因究竟有哪些?它们给 A/B 实验的开展带来了哪些难题?面对这些难题,有哪些可行解决思路?

  01 推荐场景A/B测试具有复杂性

  / 推荐场景存在多边影响

  推荐场景下的 A/B 实验格外复杂的主要原因在于:它所影响的角色众多,并且这些角色往往同时受到影响。

  以抖音平台为例,平台上有3类典型角色:消费者、创作者以及平台方。消费者,指观看视频和直播的用户;创作者,指创作视频或开直播的用户,而平台方则需要在平台生态机制里提供优质服务,以提升长期 LTV。

  抖音平台的推荐场景,主要指的是用户访问抖音并进入推荐页、向下刷平台为其呈现内容的场景,即信息流推荐。

  而在信息流推荐中,用户的消费和作者的创作心智是同时受到推荐系统影响的。

  在决定用户观看的内容时,不仅用户的使用时长、浏览时长、消费的视频和直播数量以及次日是否会使用抖音将会受到影响;哪些内容会获得更多的分发和推荐;每个作者的视频创作被推荐给了哪些用户,又会收到怎样的反馈等方面同样会受到影响。

  与此同时,推荐系统还存在间接的影响链路,平台不仅通过用户影响作者,还通过用户影响其他用户,并且在社交网络的连接下,让这两个用户影响更广泛的用户。

  如上所述的双边和多边影响场景,就在一定程度上使得推荐场景的 A/B 测试比其他场景更为复杂。

  / 策略收益评估有偏

  一、简单A/B实验设计的不足

  下图展示了简单用户侧A/B实验的流程:

  ● 首先,通过随机分流将抖音的大盘用户将分成实验组和对照组,并分别向这两组用户展示不同的版本或者提供不同的策略;

  ● 然后,观察两组用户在抖音的长期留存、观看时长、广告转化率等行为数据;

  ● 最后,通过收集和分析这两组用户的行为数据和反馈,来比较哪种版本或者策略更有效,并最终据此做出产品优化和决策。  

  但该简单实验设计的问题在于:实验所评估得到的策略效果,与该策略实际推全后的真实效果并非一致。

  二、导致不一致的典型原因

  在实验中,导致该差异情形的原因众多,本文择取长短期不一致、推荐系统的自我演进、双边效应、网络效应这四种典型原因进行介绍。

  1. 长短期不一致

  长短期不一致问题,主要涉及用户的学习效应与指标收敛性两个因素。

  ● 用户的学习效应:

  在持续使用平台的过程中,用户会逐渐猜测推荐内容,并做出相应反馈。例如,在推荐系统向用户推荐更多广告时,用户可能会在短期内点击广告,然而长此以往,猜到推送内容是广告,于是便不再点击。

  这意味着,如果给用户推更多广告,短期内 GMV 会增长,但从长期看,用户点击量会下降,可能导致最终收入为负向。

  ● 指标收敛性:

  在当前的互联网行业中,一个实验的观察周期不宜过长。然而,诸多成熟平台却面临着严重的指标收敛性问题:

  它们在衡量诸如DAU的北极星指标时,往往需要很长时间才能观测出策略对于DAU的影响。

  以抖音平台的实验为例,很多实验能够在一到两个月之后,观察到DAU的显著收益,并且持续放大不收敛。

  但是在前期,无法看到这个策略对DAU的置信收益。这说明:实验指标的收敛性问题会导致一些短期实验并不能反映它的长期效果。

  2. 推荐系统的自我演进

  推荐系统本身存在着自我演进的特殊问题,即随着推荐系统中某一环节发生改变,其他环节也会发生自适应的改变,从而导致实验期间观察到的影响与推全后不同。

  以消费侧实验为例,如果在推荐系统的粗排环节进行迭代,推荐系统的精排等其他环节,则可能由于流量、时间等原因而并未观察和充分学习到粗排变化对自身的影响。

  但在实际推全时,随着样本量的提升,系统其他环节将逐渐学习到此效应。

  实际上,粗排的改变会对召回和精排产生影响,然而在实验期间,这种影响常常难以或无法被充分观测到。

  所以推荐系统的自我演进,就有可能致使实验期间的实验读数与正式推全的效果不一致。

  3. 双边效应

  双边效应是指,当平台上同时存在消费者和生产者两种身份时,用户侧策略可能同时影响生产者的生产意愿,此时消费侧实验的读数,不能全面地反映策略效果。

  4. 网络效应

  网络效应是一种特殊影响,它指的是,当实验组和对照组的用户存在于同一个社交网络的时候,实验处理可能会通过社交互动影响到对照组的用户。

  此时,对照组所反映的并非策略未生效时的表现,而是在策略某种非直接影响下的特殊表现。在此种情况下,对照组不能作为真实的对照组,消费侧的 A/B 实验读数也不准确。

  02 双边效应问题及其解决思路

  / 常规实验方案的不足

  举例而言,假设抖音平台想要发展游戏业务,对所有游戏主播进行流量扶持,以期扶持后游戏主播的开播时长能提升,游戏直播的供给能够增长。

  在此假设情况下,常规的实验方法是开设一个10%或20%的用户侧实验,依然将用户侧分为实验组和对照组,对一组用户进行游戏类目的流量扶持,而对另一组用户不进行流量扶持;

  然后观察用户在游戏类直播和非游戏类直播中的看播时长、打赏数据,以及留存数据等等。

  然而,在此情况下观察消费侧实验,只能得到流量扶持在用户侧的直接影响,也就是一阶影响。但在流量扶持后,游戏类主播的供给可能被激发,同时非游戏类直播的开播供给可能受到挤压,而这些发生在作者供给侧的影响,即潜在的二阶影响,则无法被观察到。

  因此,此时的策略存在双边效应的问题,但实验只能衡量单边效果。  

  / 双边实验思路

  在此情况下,可能出现的一个简单解决思路是:直接开设一个作者侧实验,将主播平均分配到实验组与对照组,然后对实验组的游戏主播进行流量扶持,以此评估作者侧的影响。

  然而,该解决思路并不可行,原因在于其忽视了流量增量的来源。具体而言,假设总共有6名主播,其中2名为游戏主播,4名为非游戏主播。如果对实验组的游戏类主播予以流量扶持,观察在扶持与否的情况下,主播的供给会产生怎样的变化。

  那么此时需要考虑的情况就在于:对游戏主播进行流量扶持时,这个额外的流量增量从何而来?

  实际上,流量增量的来源有两种:

  ● 其一,流量来源于同组非游戏类主播,即被扶持的游戏主播挤压了同组非游戏类主播的流量。这种情况符合预期,同时也是策略推全后,所真实存在的一种流量来源。

  ● 其二,流量来源于也可能来自于对照组主播,由于没有空白的对照组作者承担流量挤压,所以这部分由于流量侵蚀带来的供给提升结果有偏差,推全后流量不存在。

  举例而言,抖音平台在给某位用户同时推荐10个直播,这意味着前10个主播的排序。此时,如果通过流量扶持,把实验组的游戏主播,从排序的第11位提升到第10位。

  那么原来的第10位其实是无法控制的,我们无法控制它一定是实验组的作者。也就是他的流量来源可能是对照组作者,但是这个流量在推全之后就不存在了。

  因为策略实际推全之后将对 100%的作者生效,不存在空白的对照组作者来承担流挤压。因此,由于流量挤压所带来的供给提升,其实就是一个预期之外的有偏结果。

  综上所述,我们不希望在流量扶持的同时,实验组整体作者去抢对照组整体作者的流量,而只希望流量在实验组内部进行腾挪,这样我们评估的效果与真实推全的效果才会一致。

  基于这一结论,可从“在实验组内部腾挪流量”的角度出发,延伸出以下3条解决思路。接下来将对这些解决思路的构思、不足以及迭代进行详解。

  - 思路一:

  ● 思路介绍:

  在作者侧实验中打平实验组作者和对照组作者的总流量,也就是使被扶持作者的流量增量来源于组内,从而避免流量挤占。

  ● 局限分析:

  该解决方案所需要进一步考虑的问题在于:如何打平流量?如何判断是否打平流量?由于平台上用户和作者量级差异巨大,作者量级低。

  因此作者侧指标的灵敏性远远低于用户侧。从抖音平台的实验观察经验来看,作者侧实验的置信区间往往是用户侧的数十倍,所以从作者侧实验来判断流量是否打平,精度较差。

  - 思路2

  第2条思路是基于思路1的不足而进一步推导出来的。

  ● 思路介绍:

  同时开启用户侧实验和作者侧实验,将作者和用户同时分成两组,在实验组用户上扶持实验组作者。

  从用户侧实验中观测是否存在流量侵蚀问题,由于用户量级较大,测量精度较高,可较好地识别抢量问题;

  从作者侧实验中观测流量扶持对于被扶持、未被扶持的主播的开播时长、留存的影响,如下图所示。  

  思路2意在使实验组作者并不会因为被扶持而抢占对照组作者的流量,即要保证:

  1. 实验组作者在实验组用户上的流量 = 对照组作者在对照组用户上的流量 (黑T = 蓝C)

  2. 对照组作者在实验组用户上的流量 = 对照组作者在对照组用户上的流量 (绿C = 红C)

  3. 通过调整参数,使得「黑T = 蓝C」、「绿C=红C」。此时可以认为流量挤占的问题基本被解决,从而可以基于作者侧实验评估供给侧影响。

  ● 局限分析:

  然而,该思路仍然存在一定问题,具体分为以下2点。

  1. 在消偏的同时引入了新的偏

  如上图所示,对于7号和8号游戏主播而言,其实它只得到了3、4、5号用户的扶持。也就是说,虽然期望生效的是:所有游戏主播从所有用户中都得到扶持,但实际情况是:50%游戏主播在60%流量上被扶持。

  也就是说,实验组主播仅在部分流量上生效了扶持策略,而这就会导致对作者侧影响的评估可能高估或者低估。

  2. 消偏不完整

  该思路能够拉平流量的数量,然而却不一定能够拉平流量的质量,也就是说,我们能够通过调整参数,让实验组的作者整体返还给对照组作者流量,这能够达成。但问题在于,无法保证返还的这些流量是他们原本应得的高价值流量。

  实验组的作者在流量扶持下,获得了推荐系统的加分,所以被排在前列。然而,这可能导致实验组作者抢占了高质量流量,而将末尾的低质量流量归还给对照组的作者。

  因此,该思路仅仅消除了流量数量挤占的偏,但流量质量的偏并未能消除,即将流量的数量打平后,未必能保证将流量的质量也打平。

  - 思路3

  ● 思路介绍:

  这套思路来自于 Counterfactual Framework,其核心在于通过保证以下两点,从而实现:实验期间的作者侧实验效果,跟实验策略全量时效果是一致的。

  1. 实验期间,实验组作者的推出量和推出位置,跟实验策略全量生效时实验组作者的推出量和推出位置一致;

  2. 实验期间,对照组作者的推出量和推出位置,跟对照筑略全量生效时对照组作者的推出量和推出位置一致。  

  简单来说,即线上需保持两套排序策略,用实验组策略给实验组作者排序,用对照组策略给对照组作者排序,再将实验组和对照组作者合并到一起,这样可以保证流量数量和质量都是打平的。

  ● 优缺点分析

  1. 优点:总体而言,这个方案相对无偏,既消除了流量数量挤压带来的偏,也消除了流量质量不同带来的偏。

  2. 缺点:线上需要同时存在两套排序系统,计算成本高;另外无法做分层正交实验,同一时间同场景只能开一个实验,迭代效率较低。

  / 思路总结

  ● 同时考虑策略的双侧影响

  推荐侧流量策略实际上有双边作用,它在影响用户消费行为的同时,也会影响作者的投稿和开播意愿。

  如果仅仅开展消费者实验,就无法评估其对作者的影响,以及作者在受到影响后的变化反应。因此,需同时考虑策略的消费侧影响和供给侧影响,才能相对全面地刻画出策略上线后的真实影响。

  ● 基于Counterfactual Framework开展双边实验

  此时可开展基于Counterfactual Framework的双边实验机制,以评估推荐系统的迭代对作者和用户的联合影响,进而相对无偏地刻画出推荐策略的供给侧影响。

  但值得注意的是,该实验机制本身成本较高,计算量较大,且不支持正交,因此通常仅用此套实验框架评估比较重要的策略迭代。

  03 网络效应问题及其解决思路

  / 违背SUTVA假设

  从一个具有网络效应的实验案例来看:在传统的随机分流A/B实验中,如果实验组和对照组用户在同一个社交网络中,实验处理可能会通过社交互动影响到对照组用户,即实验组用户通过私信分享等方式将内容传递给对照组用户,导致对照组用户也出现类似实验组的行为,从而削弱对比效果,导致效应大小被低估。

  这就是网络效应导致的策略评估有偏情况,它违背了因果体系中的SUTVA假设。  

  当前学界有两种解决网络效应的方式:

  1. 对网络效应的影响建模,直接估计由网络效应带来的偏差;

  2. 从实验设计中削弱网络效应带来的影响。

  下文将主要讨论如何利用社区分流的思想,从实验设计上降低由网络效应带来的偏差。

  / 社区分流实验思路

  社区分流实验(Cluster Randomized Expreiment),顾名思义,是将社区(Cluster,而非用户)作为随机化的单元分配至不同实验组和对照组的一种分流方式。

  在社交类实验中,经常使用社区分流,以便把实验组和对照组用户的社交行为尽可能封闭在组内,减少实验组与对照组之间的相互影响(网络效应),以此来降低实验评估的偏差。  

  一、实验步骤及其原则

  下图展示了社区分流实验的步骤链路,下文将详解各步骤内容及其所遵循的原则。  

  1. 明确业务问题

  多数社交场景都是复杂的,而构造社交网络、做社区分割等一系列后续操作,首先取决于需要解决怎样的业务问题。

  举例而言,在抖音常见的社交场景中,例如基于作品的互动、私信等等,这些不同场景中的用户可能完全不同,存在不同的社交关系或社交网络。

  因此,首先需要明确处理的是哪个社交场景的业务问题,并且还需明确需要隔离的互动类型。例如,在私信场景中,我们就需要将会私聊的用户进行隔断,将其分在同一个社群里,以确保聊天互动不会穿透到对照组中。

  2. 基于判断构建社交网络

  基于对社交场景和业务问题的判断,可以进一步来构造社交网络。一个好的社交网络需要满足以下特征:

  ● 边对社交行为覆盖度足够高,以保证社交网络和业务问题对齐。

  ● 不宜过于稠密。否则不利于后续社区分割。

  3. 把社交网络分割成社区

  一个好的社区分割应当达到:

  ● 社群内点的连接尽量稠密,社群间点多的连接尽量稀疏;

  ● 对业务关注的社交互动行为有较好的封闭性;

  ● 避免形成巨型社区。

  4. 基于社区做分流

  模拟分流构造大量AA实验,确保社区分流的第一类错误维持在5%。

  5. 校验实验分流结果

  检验本次实验组,实验组和对照组的社区数量和大小分布是否存在显著差异。

  6. 策略效果评估

  以社区分流实验的指标作为策略效果的评估。

  二、基于Leiden算法的社区发现

  出于对计算效率和计算性能的考虑,抖音团队使用了Leiden作为划分社区的方法。抖音的社交网络规模十分庞大,其用户数量达到亿级,而社交网络规模可能比亿级还要高。

  在如此大规模的社交网络中,如果采用收敛速度很慢,或者计算逻辑十分复杂的网络,有时甚至无法得到明确的结果,即无法收敛,一直处于运算状态。

  1. 模块度

  Leiden 通过优化社区模块度指标来实现社区分割。模块度,简单来说,指的是社区内部边和随机网络的对比,如果社区内部边的稠密度比随机网络要高很多,那么就说明社区是集群状的,也就是进行了正确的社区分割。

  在如下图所示的公式中,m是网络中所有边的权重之和,A_ij表示节点i和节点j之间的边的权重,k_i 和 k_j 分别表示节点i和节点j的度数,即各自连接的边的权重之和。

  delta(c_i, c_j)是一个示性函数,如果节点i和j在同一个社区,delta(c_i, c_j)=1;否则,delta(c_i, c_j)=0。  

  这条式子代表了社区内的实际连接紧密程度与假定随机连接时的期望紧密程度的差异。

  模块度Q越接近于1,表明该社区划分的质量越高;反之,如果 Q 的值接近0或负数,则意味着社区内节点的连接不比随机连接更密集,社区结构没有显著意义 。

  Leiden算法流程:

  ● 把每个节点作为单独社区;

  ● 移动节点到不同社区、合并相同社区以提升模块度;

  ● 将每个节点合并为一个超节点,重新构建网络;

  ● 在新的聚合网络上重复局部优化和聚合步骤。  

  三、社区发现的效果评估

  1. 当真实划分已知时的效果评估指标

  ● NMI (Normalied Mutual Information):网络正确率,0到1之间(越高越准);

  ● ARI(Adjusted Rand Index):点正确归属社区的比例。

  2. 当真实划分未知时的效果评估指标

  ● 模块度(Q,Modularity):在社区内部的边的比例,减去边随机放置时社区内部期望边数的比例;

  ● 电导(Conductancy):社区间稀疏度,社区内点的社区间链接/总链接(越小越好);

  ● 覆盖度(Coverage):社区内紧密度,社区内点的社区内链接/总链接(越大越好)。

  3. 社区发现应用于社区分流的操作要点

  ● 需关注对实验组社交互动指标的封闭性

  ● 需兼顾社区的数量,保证样本量充足

  四、社区分流的均匀性检验

  基于社区做分流和基于用户做分流并没有本质上的差异,仅仅是分流单元的最小单位从 uid 变为 clusterID,也就是从user ID 变成了 cluster ID。

  1. 社区分流机制的均匀性检验:通过模拟分流形成1000个AA实验,计算各核心指标的误显著率。  

  图:各指标在社区分流下的AA误显著率

  2. 单次社区分流实验的均匀性检验。

  3. 社区分流与用户粒度分流实验的效果对比

  ● 网络效应的隔断能力:

  实现对社区互动的隔断能力是进行复杂实验设计的初衷,通过一个私信分享实验来看,它能够将绝大多数的私聊分享私信纳入实验组,这体现了其对于网络效应的隔断能力。  

  ● 策略效果的评估:

  对社区分流和用户分流下不同的策略效果发现,社区分流下的策略影响幅度均大于用户分流实验,符合原始假设。  

  ● 社区分流与用户分流的指标方差对比:

  bias和variance之间通常存在平衡问题,在降低bias的同时,可能就会提升variance;提升virance的同时,指标性能可能就不够了。

  在此基础上,抖音团队对比了社区分流和用户分流指标性能,发现社区分流的样本量更小,方差更大,但二者仍处于同一量级。  

  / 思路总结

  在社交实验中,如果实验组和对照组用户在同一个社交网络中,实验处理可能会通过社交互动影响到对照组用户,导致对照组用户也出现类似实验组的行为,从而削弱对比效果,策略效应大小被低估。

  为解决这一问题,抖音团队采用了社区分流实验,把实验组和对照组用户的社交行为尽可能封闭在组内,减少实验组与对照组之间的相互影响,降低实验评估的偏差。

  根据实践经验来看,由于分流的最小单位不同,社区分流实验会一定程度上放大指标的方差,降低检验的power,但损失整体可控。

0
相关文章