微信号:ai-front

介绍:面向AI爱好者、开发者和科学家,提供最新最全AI领域技术资讯、一线业界实践案例、搜罗整理业界技术分享干货、最新AI论文解读。每周一节技术分享公开课,助力你全面拥抱人工智能技术。

提速100倍,秒杀传统A\/B测试!Netflix推出交错测试个性化推荐算法

2017-12-05 15:10 欢迎关注
编译 | Debra
编辑 | Vincent
AI 前线导读:Netflix 的推荐和个性化功能向来精准,例如,其主页上的“热门推荐”是根据视频的个性化排名,而“Trending Now ”则是结合最近的流行趋势由算法推荐。这些算法为 Netflix 平台上 1 亿多名会员构建个性化的主页,以保证用户体验。现在,Netflix 针对不同的目的对算法进行了优化,其中,Netflix 的交错算法(interleaving)测量用户偏好,为用户推出个性化推荐视频的速度,比传统 A/B 测试的 100 倍还快!

更多干货内容请关注微信公众号“AI 前线”(ID:ai-front)

(图 1:Netflix 会员个性主页,使用多种排名算法为会员提供个性化推荐,从左至右的视频排序由排名算法决定)

Netflix 不断优化推荐算法,从该平台创建新的排名算法及其离线性能评估开始。之后,Netflx 使用 A / B 测试法对核心评估指标进行在线评测,以达到用户满意度最大化的目标。这些指标通常包括月订阅用户的留存率和会员观看时长。随着排名算法和 Netflix 整体产品的优化,实现这些指标需要越来越大的样本量和较长的测试时长。

为了加快算法创新,Netflix 设计了一个分两阶段进行的线上测试法。第一阶段是一个快速筛选的过程,从众多算法中挑选出性能最优的排序算法。第二阶段,是对减量算法进行传统的 A / B 测试,以测量其对会员长期行为的影响。在这篇文章中,我们将重点放在第一阶段所使用的方法上:一种可以更加精准推测用户偏好的交错测试技术。

交错测试提高算法速度

Netflx 表示,推动该公司算法创新的主要动力,是通过快速测试众多算法,从而提高学习速度。首先,我们需要拓展筛选阶段新算法的数量,这些算法应满足两个条件:

·对排序算法的质量非常敏感,也就是说,它可以从与传统的 A / B 测试相比所需的小得多的样本量中,可靠地识别出最佳算法。

·对第二阶段进行准确预测:第一阶段衡量的指标与核 / B 评估的指标一致。

使用交错技术实现上述过程,可以极大地加快测试过程(参见图 2)。其中,第一阶段可以在数日内完成,并筛选出一小组最优排名算法。第二阶段只需要测试第一阶段筛选出的算法,这使得与传统的 A / B 测试相,测试时间大大减少。

(图 2:使用交错算法,灯泡代表新算法,其中筛选出的算法用红色表示。交错测试可以更快地选出最优候选推荐算法,比传统的 A / B 测试速度更快)

使用重复步骤设计以确定用户偏好

为了提高交错算法的灵敏度,我们以用户对可口可乐和百事可乐的偏好为例进行测试。如果使用传统的 A / B 测试,我们可能会随机将测试对象分成两组,并进行盲试。之后,把没有标签的可口可乐和百事可乐分别分发给两组人员。在实验结束时,我们可以通过测量两组成员汽水的剩余量来确定用户对可口可乐或百事可乐的偏好,以及该测试的不确定性。

虽然,这种方法很有效,但测试方法仍可以改进。首先,测量不确定性的主要来源是:测试人员饮用汽水习惯的差异性,这是因为,这部分人口可能是从不喝苏打水的人,也可能是重度苏打水消费者。其次,饮用大量苏打水的人员可能只占测试对象的一小部分,但是他们可能在苏打水消费者中占很大比例。因此,两组之间的重度苏打水消费者比例即使出现微小的不平衡,也可能对我们的结论产生重大影响。

作为传统 A / B 测试的替代方法,我们可以使用重复测量的设计来衡量用户对可口可乐或百事可乐的偏好。这样,测试对象不会被随机分配。相反,每个人都可以选择可乐或百事可乐(两个品牌都没有可识别的标签,但仍然在视觉上可区分)。在实验结束时,我们可以比较个体实验对象的苏打水剩余量。在这个设计中,我们 1)消除了个体苏打水消费者习惯的差异性,2)通过给予每个人同样的权重,减少了重度苏打水消费者对测试结果的实质性影响。

Netflix 交错测试法

Netflix 在第一阶段的实验中使用交错算法来确定两个排名算法的用户偏好。下图描述了 A / B 测试和交错测试之间的区别。在传统的 A / B 测试中,我们选择两组用户:其中一组使用排名算法 A,另一组使用算法 B。而交错测试法,则是综合了算法 A 和算法 B。这样,可以向用户并排展示选择,以确定偏好排名算法(用户不能区分哪种算法推荐了某个特定视频)。通过比较观看时长比例,以及排名算法推荐视频的归因来计算排名算法的相对偏好。

(图 3:A / B 测试与交错测试比较。在传统的 A / B 测试中,调查对象被分成两组,两组分别使用排序算法 A 和算法 B 进行测试,对留存率和观看市场等核心评估标准进行比对。相反,交错测试在一组测试对象中综合排名 A 和排名 B。通过比较 A 组或 B 组推荐视频的观看时长比例,来确定排名算法的用户偏好)

当在 Netflix 主页上展示由排序算法 A 和 B 综合生成的一组推荐视频时,我们必须考虑位置偏差的的问题:用户播放视频的概率从左到右递减。为了使交错测试生成有效的测试结果,我们必须确保在视频排列的所有位置,有同等的几率来自排序算法 A 或 B。

为了解决这个问题,Netflix 一直在使用一种叫做 team draft 交错测试的变体,该测试模仿一场体育赛事组成团队的过程。在这个过程中,两名队长抛硬币,以确定谁有优先选择权。之后队长轮流挑选剩下队员中排名最高的优秀队员,直到组成团队。这与 Netflix 的交错推荐类似,视频代表可选的队员,排名算法 A 和 B 代表两个队长的排序偏好。我们随机确定排名算法所推荐的交错测试列表中的第一个视频,然后排名算法轮流交替,推荐剩下排名最高的视频(见图 4)。排名算法 A 或 B 的用户偏好是通过比较哪个算法生成交错算法推荐列表视频的观看时长份额更大来决定的,其中观看量归因于贡献视频的排名。

(图 4:使用 team draft 综合两个排名算法的推荐视频)

比较交错测试和传统 A/B 测试的灵敏度

在两个阶段使用交错测试的首要要求,是其能够以少量样本可靠地确定更好的排序算法。为了评估交错测试是否满足这个要求,我们对之进行测试,其中排序算法 A 优于排序算法 B。然后,我们使用这两组排名,同时进行交错测试和 A / B 测试。

为了比较交错测试与 A / B 测试的灵敏度,我们采用自举二次抽样方法,以不同样本大小测试交错算法和 A / B 测试的偏好。在进行自举分析时,我们将 N 个用户分配给交错测试区,或将 N / 2 个用户分配给传统 A / B 测试区,这样,随机预测每个排序算法与真实用户偏好产生偏差的几率为 50%。当这个概率为 5%时,检测排序质量差异的能力达 95%。因此,交错测试使用较少用户数量,即可超越这个数值的算法,灵敏度更高。

图 5 表示分析结果。我们将交错测试的用户偏好与 A / B 中常用的两个度量标准进行比较:整体播放情况与特定算法标准。图中显示,用于评估 A / B 测试的指标灵敏度很高,但交错算法更加灵敏:它比最灵敏的 A / B 测试所使用的样品用户至少少 100 倍,就可以达到 95%的推荐能力。

(图 5:已知相对质量的两个排名,交错测试与传统 A / B 测试的灵敏度比较。与传统 A/B 测试相比,交错测试的灵敏度测试的指标为自举二次抽样(Bootstrap subsampling)。结果显示,即使与灵敏度最高的 A / B 测试指标相比,交错测试用户偏好需要的样本也至少比前者少 100 倍)

交错权值与 A / B 权值的相关性

进行交错测试的第二个要求,是交错测试阶段的权值需要与传统的 A / B 测试保持一致性。 现在,我们来评估交错测试偏好在 A / B 测试中是否具有预测性。

下图表示交错偏好权值相对于 A / B 权值的变化,每个点代表评估生成算法的不同排名算法权值。我们发现,交错权值和最敏感的 A / B 测试权值之间有很强的相关性和一致性,这表示,交错偏好在传统 A / B 测试中具有预测性。

(图 6:交错权值与最敏感的 A / B 权值之间的相关性。 每个点代表评估生成算法的不同排名算法权值,交错偏好权值与最敏感的 A / B 权值之间有很强的相关性)

结论

从测试结果来看,交错算法是一项可以加速排名算法创新的技术,让 Netflix 能够灵敏地获知用户对排序算法的偏好,并在数天内找出最佳候选算法,并快速测试大量新算法,从而提高学习速度。

然而,虽然交错算法使得推荐算法的灵敏度得到巨大提升,且与 A / B 权值保持一致性,但它确实也存在局限性。

首先,实施交错算法框架的过程相当复杂,从工程的角度来看,这是一个挑战。而且,业务逻辑也是采用这种技术的一个干扰因素,因为它需要构建可扩展的解决方案,来进行一致性检查和问题的自动检测。其次,尽管交错算法能够快速识别最佳排名算法,但是其缺陷是排名算法的用户偏好权值是相对的。也就是说,它不能直接测量用户留存率等权值。

对此,我们通过在第二阶段进行 A / B 测试来解决其局限性问题。在这一阶段,最优算法已经被筛选出来,因此我们可以增加每个测试区的样本数量来启动测试,以观测用户的长期行为。


 
AI前线 更多文章 ImageNet冠军带你入门计算机视觉:卷积神经网络 学习人工智能需要哪些必备的数学基础? 论文导读 | 动态神经网络工具包Dynet Netflix推荐算法,让每个人看到不一样的电影海报 Jeff Dean出品:用机器学习索引替代B-Trees,3倍性能提升,10-100倍空间缩小
猜您喜欢 移动端重构实战系列0——sandal 和 sheral Linux自主访问控制机制模块之详细描述-函数实现机制(11) Yahoo首页前端主程Nicholas Zakas:教你10个JavaScript性能提升技巧 Android基础进阶之学习使用AIDL进行跨进程通信 让用户对你的APP了如指掌