[译] Twitter 时间线引入机器学习

in 互联网前沿
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9


写在前面:

翻译这篇文章,是看到后想起之前也试图给SF 优化时间线(已经上线了有好几个月了),相比现在的twitter 确实很简陋。而且也没有把时间线放在醒目位置。事实上,SF 的时间线在我加入之前已经存在很久了,包括上次的优化都在讨论要不要直接提出来作为首页。工具化 or 社交化? 思考了很多之后,还是只作为了实验项目(选择作为首页or not)保留。
而这篇twiiter关于时间线的排序算法优化则“高级”了很多(想来不止twitter,大多数的社交产品都在时间线上花了不止一次的迭代优化算法尝试,总是众口难调,却也总是在为数据优化不断尝试),引入了机器学习算法,让早期的算法通过训练变得更加精准--结尾给出了非常乐观的总结。
于我而言,文章最有用的地方大概是前文关于时间线改版的迭代总结了,个人觉得机器学习那块可能还是翻译的不够准确--也跟自己对机器学习这块了解不够的缘故吧。但也如文末的总结一样,机器学习的潜力和作用长远来看一定是不可估量的。那么,就用最近在读的《机器之心》作者预言的话作为这段啰嗦的结尾吧:

但是到了21世纪,机器将会在这个排他性十足的环境中与人类同行,长久相伴


原文地址 : Using Deep Learning at Scale in Twitter’s Timelines

By: Nicolas Koumchatzky and Anton Andryeyev


译文部分:

一年多的时间里我们都不断在优化呈现给用户的时间线,为了给用户提供更相关和精准的时间线内容我们不断的提高这里面的算法机制。

今天我们将阐述一下如何通过深度神经网络来优化我们的排序算法,这也得益于 Cortex (Twitter 内部 AI 技术团队之一) 的AI平台和建模能力。简言之:这意味着时间线内容与用户的关联度更紧密了,而在未来,这也敲开了我们利用深度学习社区的创新和新技术来更好优化产品的大门,尤其是在自然语言处理(NLP),对话理解和传媒领域。

我们是如何排序我们的时间线的?

在我们的排序算法之前,用户的时间线内容展示方式其实很简单: 所有的推文都是你关注的用户产生的内容,我们会把你上次访问后这些关注用户产生的新内容聚合并以最新到最旧的时间顺序展示出来。尽管概念简单,但因为推特的成千上万的用户体量每秒产生的内容也是巨大的,这对我们的技术架构和运维都是不小的挑战。

而在引入了排序算法之后,我们新增加了一个特征。在聚合了所有推文之后,我们会建立一个相关模型。这个相关模型会给每条推文一个关联分值,用于预测每个用户对于这条推文的感兴趣和关注程度。关联分值高的一些推文就会出现在你的时间线顶部,其它的推文内容则在这些相关推文的下方。考虑到我们给你推荐兴趣推文数量以及你两次访问网站的总时间间隔,我们可能也会向你推送「避免你错过」模型。这个模型仅仅包含一小部分在相关模型中关联分值最高(并也按由高到低)的推文,区别于相关模型中的推荐推文来看,后者都是按时间顺序排序的(对比的,避免错过模型应该不是)。这样做的目的是希望你能第一眼看到你最感兴趣的最佳推文—毕竟时间线内容是很长很长的。

为了能预测到某个你最感兴趣的推文,我们在算法模型中考虑了以下的特征值:

我们考虑的特征值以及他们之间的关联度都不断的在增长,也提醒了我们需要考虑到更细微差别的行为模式。

每一次你打开应用或者刷新的你的时间线,我们都会通过你上次访问的时间来对你关注的用户发布的推文设置关联分值来决定什么推文会展示在你的时间线顶部。这样的打分步骤需要一个更强的计算能力,因为我们每秒钟要给几千条推文计算分值来满足所有的时间线请求。尽管更丰富的模型已经能满足更匹配的推文质量,但作为一家互联网公司,速度和质量同等重要。这个独特挑战就是需要迅速计算分值并能及时反馈给正在浏览他们时间线的用户。至今我们已拥有了足够优秀的模型来最大可能的满足内容质量以及未来可能需要的改善。

正如你所能看到的,选择正确的方式来构建和运行预测模型对每个使用twitter的用户体验是有非常深远的影响的。

基于ML平台的时间线排序要求

就像上文总结提到的,预测模型必须要有以下约束来满足众多推文请求能及时展示给用户的条件:

我们一般用两天来衡量一个预测模型的质量。首先我们会在训练模型时用一个强定义精准性的公式来评估模型。它会告诉我们模型的表现怎样,尤其是在给感兴趣的推文打高分的情景下。尽管一般最后的模型都会作为一个早期预测指向标,但要预测用户看到这些推送的内容后作何反应仅仅靠这一个模型是远远不够的。

所以我们通常会实施一次或者多次 A/B 测试来监测用户使用不同推送算法的 Twitter 后的行为。并对测试结果进行分析。这里我们通常使用的公式一般直接和使用Twitter 的频次以及感兴趣程度相关的。例如,我们可能会跟踪每个用户参与次数,或者单次停留时长。每次A/B 测试之后,我们不仅可以判断是否新上线的预测模型让用户体验更好,而且也能准确衡量这次改版的改善程度。在Twitter ,像时间线排序这样的大系统项目,一个小的模型质量改善都会在用户体验上产生大的影响。

最后,尽管预期的实时速度能在一个模型中被实现,但发布这个(实时发布)模型也和其它新功能一样需要分析结果。我们会将这个模型的有效作用程度 和 任何可能存在的执行模型时增加的成本
两者之间进行衡量。额外增加的成本可能来自于硬件使用,或者更复杂的执行操作和支持。

除了预测模型本身,一系列请求也会被应用到机器学习框架中— 即,一系列允许用户定义,训练,分析和发布一个预测模型的工具。我们尤其关注于:

需要注意到的是,在用机器学习技术最开始,找到最佳模型(暂不考虑它是如何产生的)常常是第一考虑要素。毕竟,我们想证明,将所有预测模型一起使用是最有效的。

然而,随着预测方法更加成熟, ML 框架的易用性,扩展性都变得更加重要。如果一个复杂的模型只能由少数几个了解的工程师维护和扩展的话并不是一个长久之计,即便这个模型只是有一些细微的变化。随着越来越多的工作投入到数据挖掘,特征研究以及快速迭代实验,一个系统的核心开发功能特点应该变得至关重要。一个稳定和灵活的框架更有可能带来重复累积收益。随着在 AI 社区逐渐发现的新的优秀的算法和模型框架,找到一个原生支持深度学习的和复杂图表的平台才是这项工作(不断优化模型)的关键。

在时间线排序算法中引入深度学习

基于早期的图文识别技术的成熟,深度学习已经成为了如今许多技术公司一个必备的技术点了。一些大的研究团队已经建立,许多利用深度学习技术的前沿项目也在不同的环境中逐渐发布出来。

所以,已经有许多新的模型框架被创造出来用于解决具体领域的具体问题。人类大脑的处理能力和执行算法之间的差距越来越小。一个关键的理由就在于深度学习本质上就是模块化的。深度学习模型可以以各种方式组合(堆叠,串联等等)来创建一个计算图表。这个图表可以被不断学习训练,典型的场景是在批梯度下降(mini-batches)训练中用到的反向传播算法(back-propagation)和随机梯度下降算法(Stochastic gradient descent)。

低级别的模型在这里是每次使用的片段单位,是作为一种将输入和必要梯度 计算为输出内容的执行方式。事实上,在机器学习领域(torch-autograd, PyTorch,TensorFloe)最常用的一些库类型已经提供了可以处理大量数据的基本操作,典型的就是让使用者根据偏好的tensor操作包来具像化算法,同时也要依赖生成的计算图表。Torch-autograd 和 PyTorch 则要更近一步:计算图表可以动态生成且能从一个批梯度下降到另一个。

这些计算图表都有一个非常惊人的建模能力,学习这些的技术听起来格外吸引人,而最值得一提的是这些训练都是可扩展的。因为这些模型都是从批梯度下降训练中的数据集训练得来的,整个数据集的规格也可以是无限大。

让我们回到手上的问题来。 Tweet 排序算法和大部分研究人员和深度学习算法研究的问题有些不一样。最大的因素是因为 Tweet 的数据量级不大,同时也包括获取能力和请求延迟等因素。当前的数据特征并不能保证是模型正在记录的每一个数据的特征值。

通常这些问题都会用其他算法来解决,例如决策树,逻辑回归和特征crosing 和discretization等算法。这也是我们的时间线排序最初用到的算法。

陈述完上述的原因,我们有理由相信深度学习会让我们做得更好。为了将深度学习引入到产品中,我们必须要确定引入结果不能比之前差,同时模型和训练过程也需要足够快速。

所以Cortex 团队就做出了如下的一些调整和改善来适应这些约束:

影响

所有这些为了构建一个完整的深度学习平台所做的辛苦工作都得到了回报。在时间线排序算法的任务上,深度学习在离线模型的精准预估上取得了巨大的提高。这些增长在常规模型的生命周期上也一直持续着,包括对新功能的介绍环节以及将模型扩展到对新的用户参与度衡量参数。这证明了深度学习方法确实是稳定的,同时它的扩展推广也不错。最重要的是,将它引入到线上的效果显示,在用户参与度和停留时长上都取得了巨大的增长。同时在我们之前的分享中也提到了,更新的时间线在用户增长和参与度上都取到了不可磨灭的作用。

就像已经提到的,另一个值得提及的影响就是点对点框架实现。这个框架的终极设想就是一个非统一,可扩展的快速框架。这个框架可以将许多合适的深度学习技术和以 ML 方法建立的模型融合起来。这样的可塑性能够在以后的时间线排序优化上快速实现,同时也能不断优化迭代使用的模型的质量效果。

随着更多的公司团队将深度学习纳入他们的模型任务,相信这个框架的效果将会不断的优化和提高。

未来

在我们的时间线排序模型组件中使用机器学习方法已经带来了显著的提高。同时,Twitter 使用深度学习技术也是想展示我们对未来新兴技术的开放心态。这几年在机器学习领域,深度学习和 人工智能相关的研究已经产生了空前的(也仍不断在持续的)新创意和算法。我们深信让我们的 ML-驱使 的产品融入这项技术会对以后的获益起到关键作用。而这些可以通过搭建一个原生支持机器学习的可扩展平台来实现。

长远来看,这也能帮助我们更好理解twitter上的每一条推文和每一次互动,而且是实时的。

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.