来源:36氪

概要:对于个性化分发与推荐,Netflix都是一个走在前面的公司。其首页的个性化推荐策略不断被后来者所模仿。

对于个性化分发与推荐,Netflix都是一个走在前面的公司。其首页的个性化推荐策略不断被后来者所模仿。近日,Netflix官方在Medium上的技术博客发表了一篇文章,介绍了Netflix在个性化推荐领域最新的进展,即影视作品的封面图个性化。为什么要在这个方面做个性化?这个方面的个性化有什么挑战?Netflix采取了什么策略来应对这些挑战?

多年来,Netflix的个性化推荐系统的主要目标一直都是在合适的时间,向合适的用户推荐其感兴趣的内容。在大量的用户以及海量的用户匹配上,给每一个用户找到其感兴趣的内容是至关重要的。但推荐的作用还不止于此。这背后还有很多问题,比如为什么你应该关心我们推荐的任何特别的影视作品呢?对于一个用户不熟悉的新作品,我们说些什么才能激发起你的兴趣呢?我们怎么才能让你相信一个作品值得一看呢?回答这些问题对于帮助我们的用户发现优秀的影视作品是至关重要的,尤其是对于那些并不为人所熟知的或一些新的作品。解决这一挑战的一个途径是,从我们用来描述影视作品的封面图入手。如果代表影视作品的封面图捕捉到了一些吸引人的东西,那么它就会充当你的入口,给你一些视觉上的“证据”,来解释为什么这个作品可能对你来说是合适的。这些封面图可能会突出你所认识的一个演员,捕捉到一个激动人心的时刻,比如令人激动的汽车追逐,或者包含一个戏剧性的场景来传达电影或电视节目的精髓。如果我们在你的主页上呈现出完美的画面(正如他们所说的:一张图像胜过千言万语),那么也许,你会尝试一下。这是Netflix与传统媒体产品不同的另一种方式:在为每个用户提供个性化的推荐和个性化的视觉效果上,我们有超过1亿种不同的产品。

一个没有配图的Netflix主页。


在之前的工作中,我们讨论了为每个用户推荐的每个影视作品找到一个完美封面图的努力。通过多臂bandit算法,我们可以为作品找到最合适的封面图。以《怪奇物语》为例,获得了大部分用户的欢迎。然而,考虑到品味和喜好的多样性,如果我们能找到对于每一位用户来说的最佳封面图,来突出一个与他们特别相关的主题,岂不是更好?

为《怪奇物语》提供的封面图,不同的图涵盖了节目中的广泛主题。


作为灵感启发,让我们挖掘一些让封面图的个性化变得有意义的场景。考虑下面的例子,不同的用户有不同的观看历史。箭头左侧是一个用户过去看过的三个影视作品。在箭头右侧是我们为会员推荐的颇受欢迎的作品及其封面图。

让我们考虑一下,尝试怎么将电影《心灵捕手》的封面图变得个性化。在这里,我们可以根据一个成员喜欢不同类型和主题的程度来将这个决定个性化。对于看过很多浪漫电影的人来说,如果我们展示的是包含Matt Damon和Minnie Driver的封面图,可能会引发他们对《心灵捕手》的兴趣。而如果我们使用的是包含著名喜剧演员Robin Williams的封面图,那么看过很多喜剧的人可能会被吸引到这部电影里去。

在另一个场景中,让我们想象一下,对演员们的不同喜好会如何影响电影《低俗小说》封面图的个性化。一位看过Uma Thurman许多电影的用户可能会对包含Uma的《低俗小说》的封面图作出积极回应。与此同时,如果封面图具有John Travolta的特色的话,其粉丝可能对看《低俗小说》更感兴趣。

当然,并不是所有的个性化封面图都能找到如此清晰和明显的场景。因此,我们不会在这里穷尽所有规则,而是依靠数据来告诉我们应该使用什么图片。总的来说,通过封面图的个性化,我们帮助每一个影视作品向每一个用户展现出最好的一面,从而提高我们的用户体验。

需要克服的挑战

在Netflix,我们一直积极拥抱个性化。通过算法来不断改善用户体验的许多方面。其中就包括主页的序列选择,每个位置选什么影视作品,以及向用户发送的消息等等。对于我们来说,每一个新方面的个性化都面临着独特的挑战。对封面图的个性化展示也不例外,也展现出了不同的挑战。封面图个性化的一个挑战是,我们只能选择一个封面图来代表我们为特定位置选择的影视作品。相比之下,典型的推荐设置让我们向用户提供多种选择,这样我们就可以从用户的选择中了解他们的偏好。这意味着,在一个封闭的循环中运行,图像选择是一个“先有鸡还是先有蛋”的问题:如果一个用户播放了一个影视作品,它只能来自我们决定向那个成员展示的封面图。但我们想要理解的是,当为一个影视作品呈现某一特定的封面图时,它会影响一个用户播放(或不播放)一个影视作品。什么时候当一个用户在播放一个影视(或不)时,不会考虑我们展示的是哪个图片。因此,封面图的个性化问题还要在传统的推荐问题之上,需要与算法互相配合。当然,要想正确地学习如何个性化封面图,我们需要收集大量的数据,以找到一些信号,来表明对一名用户来说,一个特定的封面图要比其他的封面图要好得多。

另一个挑战是理解改变向用户展示的封面图会产生什么影响,尤其是在一个影视作品的不同系列之间。改变封面图是否会降低影视作品的可识别性,使其难以在视觉上再次定位作品,例如,如果用户之前觉得有兴趣但还没有看过?或者,改变封面图本身会导致用户重新考虑它,因为有了更好的选择?很显然,如果我们能找到更好的封面图给一个用户,我们应该使用它。但是持续的变化也会让人们感到困惑。不断变换的图像也会带来一个归因问题,因为不清楚是哪个图像导致一个用户对影视作品感兴趣。

第三,要理解封面图与我们在同一页面或会话中选择的其他封面图之间的关系,是一种挑战。也许,一个醒目的特写人物在一个影视作品的页面上是很突出的,因为它比其他的封面图更引人注目。但如果每个封面图都有相似的图像,那么整个页面看起来就不那么吸引人了。孤立地看每一个封面图可能还不够,我们需要考虑如何在一个页面的各个影视作品中选择一组不同的图像。除了其他作品的封面图之外,封面图的效果可能取决于作品的其他资料(例如,简介,预告片等)。因此,我们可能需要一个多样化的选择,让每个选项在保障吸引力的同时实现互补。为了实现有效的个性化,我们还需要为每一个影视作品建立一个良好的封面图库。

这意味着,我们需要一些材料,具有吸引力、信息性和代表性,从而避免“点击诱饵”。一组影视作品的图片也需要足够多样化,以覆盖对内容不同方面感兴趣的广大潜在受众。毕竟,一张封面图的吸引力和展现的信息怎么样,取决于看到它的那个人。因此,我们需要有封面图,不仅能突出影视作品中不同的主题,而且还能突出不同的美学。我们的艺术家和设计师团队努力创造各种各样的图像。他们还考虑了个性化算法,该算法会在生成封面图的创作过程中选择图像。

最后,在规模化上面,封面图个性化也面临着工程上的挑战。一个挑战是,我们的用户体验是非常直观的,因此包含了大量的图像。因此,对每一个作品都使用个性化,意味着系统在峰值时需要每秒处理超过 2000 万个低延迟请求。这样的系统必须是强大的:如果不能正确地渲染UI中的封面图,就会大大降低用户的体验。我们的个性化算法还需要在影视作品发布时迅速做出反应,这意味着在冷启动的情况下快速学习个性化。然后,在推出之后,算法必须不断地适应,因为封面图的效果会随着时间的推移而变化,而用户的品味也会发生变化。

情境化的bandit算法

Netflix的推荐引擎有很大一部分是由机器学习算法驱动的。传统上,我们会收集一批关于我们的用户如何使用这项服务的数据。然后我们在这批数据上运行一种新的机器学习算法。接下来,我们将通过一个A/B测试来测试这一新的算法,以对抗当前的系统。A/B测试可以帮助我们在随机分组的成员中进行尝试,了解新算法是否优于当前的系统。A组的成员使用当前的系统,而B组的成员则得到新的算法。如果发现B组的成员与Netflix有更高的互动,那么我们就会向全体成员推出新的算法。不幸的是,这批处理方法会带来遗憾(regret):许多成员长时间没有从更好的体验中受益。如下图所示。

为了减少这种遗憾,我们放弃了批量机器学习,考虑在线机器学习。对于封面图的个性化,我们使用的特定在线学习框架是情景化的bandits。与其等待收集完整的数据,再等待构建学习一个模型,然后等待A/B测试结束,情景化的bandits会迅速找出对于每个用户和情境来说最佳的个性化封面图。简单地说,情景化的bandit是一种在线学习算法,它可以权衡收集训练数据所需的成本,这些数据是在持续的基础上学习无偏见的模型所必需的,而这些数据的好处是将学习模型应用到每个用户的使用场景中。在我们之前的非个性化的图像选择工作中,我们使用了非情景化的bandit,无论情景如何,我们都找到了较好的图像。对于个性化来说,用户都是是在场景中的,因为我们期望不同的用户对图像做出不同的反应。

情景化的bandits的一个关键属性是,他们的设计目的是尽量减少遗憾。在高层次上,通过在学习模型的预测中注入受控随机化来获得情景化bandits的训练数据。随机化方案的复杂性可以从简单的具有均匀随机性的Epsilon-Greedy算法到封闭循环变化为闭环方案,其随着模型不确定性而自适应地改变随机化程度。一般来说,我们将此过程称为数据挖掘(data exploration)。可供影视作品使用的候选封面图的数量,以及系统将被部署的总体用户的数量,将决定数据挖掘策略的选择。通过这样的挖掘,我们需要记录每个封面图选择的随机化信息。这种日志记录允许我们纠正倾斜的选择倾向,从而以一种无偏见的方式进行离线模型评估,如后面所述。

由于我们向用户展示的封面图可能不会使用预测的最佳图像,因此在情景化的bandit中进行挖掘通常会产生成本(或遗憾)。这种随机化对用户体验(以及我们的度量标准)有什么影响?由于有超过1亿的用户,挖掘带来的遗憾值通常非常小,并且在我们的大量用户基础上进行分摊,每个成员都暗中帮助为一小部分目录提供关于封面图的反馈。这使得每个用户的挖掘成本可以忽略不计,这是在选择情景化的bandit来改善我们用户体验的关键方面的一个重要考虑因素。如果成本高,随机化和对情景化的bandit的挖掘就不那么合适了。

在我们的在线挖掘计划中,我们获得了一个训练数据集,为每一个(用户、作品、图像)元组记录,无论这个选择是否导致了影视作品的播放。此外,我们还可以控制对封面图的挖掘,使封面图的选择不会经常发生变化。这样就可以更清楚地说明用户对特定封面图的参与程度。我们还会通过观察用户参与的质量来仔细判断每一个观察结果的标签,从而避免学习一种推荐“点击诱饵”图片的模式:吸引用户开始播放,但最终导致低质量的互动。

模型训练

在这个在线学习环境中,我们会根据情景来为每个用户挑选最好的封面图。通常情况下,每个影视作品都会有几十个备选的封面图。为了学习选择模型,我们可以考虑通过在一个影视作品中独立地为用户的封面图进行排序来简化问题。即使有了这种简化,我们仍然可以通过影视作品来学习用户的图像偏好,因为对于每一个备选的图像来说,有一部分会引起用户的参与,而另一部分则不会。这些偏好可以被建模来预测每一个(用户、作品、图像)元组,以及用户将享受高质量参与度的可能性。这些可以是监督学习模型,也可以是与Thompson Sampling、LinUCB或Bayesian方法相匹配的情景化bandit,这些方法可以智能地平衡用数据挖掘做出最好的预测。

潜在信号

在情景化的bandit中,情景通常被表示为作为模型输入的特征向量。有很多信号可以作为这个问题的特征。特别地,我们可以考虑用户的许多属性:他们所看的影视作品及类型,用户与特定作品的互动,他们的国家,他们的语言偏好,使用的设备,每天的使用时间和每星期的使用情况。由于我们的算法会结合我们的个性化推荐引擎来选择图像,所以,我们还可以使用关于我们的各种推荐算法如何看待影视作品的信号,而不管用什么图片来呈现它。

一个重要的考虑因素是,有些图片在备选库中自然会比其他图片更好。我们观察了数据挖掘中所有图片的总体播放率。我们之前的非个性化封面图选择使用了整体的差异来决定一个影视作品的最佳封面图。在我们新的情境个性化模型中,整体的播放率仍然很重要,并且个性化推荐仍会与非个性化图像排名有一定重合。


图像选择


封面图对用户的最佳分配是一个选择问题,从一个影视作品的可用图像池中找到最佳的备选图像。一旦模型被训练成如上所述,我们就用它来为每一个情景化的图像排名。该模型预测在给定的用户背景下给定封面图的播放率。我们根据这些概率对一组图像进行排序,选出最有可能性的一组图像。这是我们给那个特定用户的图像。

效果评估

为了评估我们的情景化bandit,在上线之前,我们可以使用一种称为重播的离线技术。这种方法允许我们根据记录的挖掘数据来回答反事实问题(图1)。换句话说,如果我们用不带偏见的方式使用不同的算法,那么我们可以将历史会话中发生的事情进行比较。

图1:根据记录的数据计算重放指标的简单示例。对于每个成员,分配一个随机的图像(第一行)。系统记录了用户的印象,以及这个页面是否播放了影视作品(绿色圆圈),或者没有播放(红圈)。通过匹配随机分配和模型分配重合的部分(黑色方块),计算该子集的分数来计算新模型的重播指数。


重播让我们看到,如果我们假设图片是通过一种新的算法来选择的,而不是之前使用的算法,那么我们就可以看到成员们是如何参与我们的为其提供的影视作品的。对于图像,我们感兴趣的是几个指标,尤其是像上面所描述的“播放率”。图 2 显示了与随机选择或非情境 bandits 相比,情境 bandits 如何提高记录中用户的平均参与率。

图2:基于图像探索数据记录中重播率,不同算法选择的图像平均分数(越高越好)。随机(绿色)表示随机选择图像,简单的 bandit 算法(黄色)选择具有最高分数的图像。情境 bandit 算法(蓝色和粉红色)根据情境为不同的成员选择不同的图像。

图3:基于个人资料文件类型的情景图像选择示例。Comedy 指主要观看喜剧片的个人资料,Romance 代表看爱情片最多的用户个人资料。情景化bandit选择了著名喜剧演员Robin Williams的形象,并选择了一对亲吻情侣的照片,让他们更倾向于Romance。


经过对多种离线模型进行试验之后,我们找到了可以提高重播率的模型,我们最终进行了A/B测试,在多种情况下将个性化情境 bandit 与非个性化 bandit 进行比较。正如我们所假设的那样,个性化的工作方式使我们的核心指标产生了显著的提升。我们还发现,在离线模型下测量重播率与线上模型之间的合理性关联。在线结果也产生了一些有趣的见解。例如,在用户没有与影像作品进行过交互的情况下,个性化带来的提升就更大了。这是有道理的,因为我们认为,当一个影视作品不那么为人所熟知的时候,封面图对用户来说就更重要了。

结论

通过这种方法,我们已经开始了第一步,为我们的推荐选择个性化的封面图,从而使服务质量更好。这使得我们的用户发现新内容的方式有了显著的改进。所以我们已经把它推广给了所有用户!这个项目是第一次,我们不仅对推荐内容进行了个性化,而且对推荐的方式也进行了个性化。但还有很多机会可以扩大和改进这种最初的方法。这些机会包括开发一种算法来处理冷启动,方法是将新图像和新影视作品尽快地个性化,例如使用计算机视觉技术。另一个可能性是将这种个性化的方法扩展到我们使用的其他类型的艺术作品,以及其他描述我们的作品的材料,比如例如简介,元数据和预告片。

原文链接:https://medium.com/netflix-techblog/artwork-personalization-c589f074ad76

未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。由互联网进化论作者,计算机博士刘锋与中国科学院虚拟经济与数据科学研究中心石勇、刘颖教授创建。

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎支持和加入我们。扫描以下二维码或点击本文左下角“阅读原文”

Netflix 官方技术博客:个性化分发与推荐,走在前列的 Netflix 是怎么做的?相关推荐

  1. 推荐20个优秀企业技术博客

    想获得第一手的新闻线索但无从下手?想确认最准确的行业动态但找不到来源?InfoQ编辑们的日常工作就是在第一时间内搜索.更新来自四面八方的新闻线索,收集最有价值的新闻信息.现在,向大家推荐InfoQ编辑 ...

  2. “我有必要写技术博客吗?” 写技术博客一年,谈谈其得失优劣

    本文全文不含任何推广,所提到的博主.公众号皆为笔者真真切切接触.学习过的. 大三上学期读了许多"程序员"的公众号,当时计算机基础知识并不好,很多文章读的一知半解.只记得关注了几个很 ...

  3. 一系列国内外顶尖互联网公司的技术博客,晋升程序员必备!

    顶尖公司是大多数程序员都梦寐以求进入的地方,但是技术不行怎么办?学啊!这里收集了一系列国内外顶尖互联网公司的技术博客,好好给自己充充电! 国内技术博客列表 腾讯游戏 DBA 团队 http://ten ...

  4. 我从大学开始写博客,如何写一篇技术博客,谈谈我的看法!

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 我一直推崇学技术可以写技术博客去沉淀自己的知识, ...

  5. 技术博客|第9期:Hadoop3升级实践

    2022年第009篇 Hadoop 3 发布已有5年,最新版本已经更新到3.3.2.在这5年中,Hadoop发布了许多重大特性.HDFS EC编码趋于成熟,在提升容错的前提下降低了存储空间:HDFS ...

  6. 如何写一篇好的技术博客

    在工作过程中,发现对很多东西都一知半解,不是很透澈,到头来很容易模糊,如果有一篇好的技术博客予以总结,一来即使忘记了,回国头来再看,仍然能 够从自己的思路中恢复:二来总结一下,还会发现一些潜在问题:三 ...

  7. HAproxy - 铁钉 - 51CTO技术博客

    HAproxy - 铁钉 - 51CTO技术博客 HAproxy 2009-11-30 14:24:37 标签:HAproxy 休闲 职场 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出 ...

  8. 手把手教你写高质量Android技术博客,画图工具,录像工具,Markdown写法

    前言 作为程序员,写博客是一件很有意义的事情,可以加深自己对技术的理解,可以结交更多的朋友,记录自己的技术轨迹,而且分享可以让更多的人从中受益,独乐乐不如众乐乐嘛. 但是要写好博客也不是件容易的事,一 ...

  9. 国外公司技术博客盘点

    相比国内技术团队博客对前端的专注,国外大公司的技术博客涉猎范围更广一些.我先整理一些大厂的 Blog,再根据行业,整理其他公司的 Blog. [Oreilly] Oreilly ideas https ...

最新文章

  1. CCAI 2020 | 黄铁军:“仿真主义”下的人工智能发展之路
  2. 多图 | 搞懂volatile和synchronized的区别
  3. [bzoj3676] [APIO2014]回文串
  4. 2019年寒假作业1编辑总结
  5. TCL 过程proc
  6. java发送http连接
  7. C语言equal(),C ++中的std :: equal()
  8. linux下ftp服务阶段实验(3)
  9. xcode 证书生成、加载
  10. php查询过滤字段,php 字符过滤类,用于过滤各类用户输入的数据
  11. pyhive python连接hive
  12. 还能利用信息差赚钱吗?
  13. 详解 Redis 中布隆过滤器解决缓存穿透问题
  14. 用java把word转pdf
  15. Excel知道身份证号码怎么快速提取出年龄
  16. 从身家500万到两手空空,看她如何再次成功翻身
  17. 视频转gif如何做?三步教你视频转gif制作
  18. HPE MSA存储的高性能连接解决方案
  19. 天猫双12爬虫(福利:266万条商品数据免费下载)
  20. java_多线程下载

热门文章

  1. macOS新版本终于删掉自带Python2,这波操作连Python死忠粉都叫好
  2. 2019微信年度报告!!!
  3. DeepMind提出基于视觉的强化学习模型,十八般兵器对机器人不在话下
  4. 干货!一文读懂人工智能和机器学习有什么关系
  5. 机器学习本该用起来更简单
  6. 人工智能算法模型必会之——正则化方法综述
  7. Python之父考虑重构Python解释器
  8. 欧洲AI规范先行,值得肯定与借鉴 --- 我看欧盟发布AI道德规范
  9. Hinton最新专访:别让AI解释自己,AI寒冬不会再来
  10. SAP ABAP 如何查询一个变量表里的变量被哪支程序使用到?