我 相 信 这 么 优秀 的 你
已 经 置 顶 了 我
翻译|苏安东;刘筱天;杨润琦 选文|挖掘机
大数据分析挖掘作品
◇◆◇◆◇
编者按
Quora工程和算法的领军人物Xavier Amatriain揭秘机器学习在Quora的实际应用,包括排序、推荐、问题聚类等等。机器学习已经成为Quora这个充满复杂文本的社会化问答网站背后的核心引擎。
关于Quora,我们使用机器学习方法已经有一段时间了。我们不断地提出新的方法,并对现有的方法进行大的改进。重要的是要注意,所有这些改进都是首先通过使用许多不同类型的离线指标进行离线优化和测试,但总是最终通过A / B测试在线测试。
在下面的段落中,我将介绍Quora中关于机器学习的最重要的应用和技术。
◇◆◇◆◇
排行
排名可以说是机器学习在网络上最重要的应用之一。从非常大的公司到小公司已经创建了围绕将结果排列为查询字符串的能力的商业模型。 在Quora,我们使用排名算法在不同的上下文和不同的目的。
一个有趣的例子是回答排名。给定一个问题和这个问题的几个答案,我们总是喜欢按降序排列他们,以保持“最好的”答案在顶部和最坏的在底部(见下面屏幕截图)。
有很多不同的功能,可以用于确定问题的答案的正确顺序。为了确定,我们实际上首先需要确定我们在Quora定义为“好”的答案。想出这个定义的一个好方法是看看Quora认为“有用的答案”。您将阅读关于“真实”,“可重用”,“提供解释”或“格式良好”的答案。我们的机器学习算法实现了特定的学习到排名方法,具有许多不同的特征,试图编码最终与所有这些抽象概念相关的许多维度。例如,我们具有编码关于写作质量的信息的特征,而且还使用通知关于答案所接收的交互类型(例如,上升,下降或扩展)的特征。我们还具有与撰写答案的用户相关的特征,例如,包括用户在问题主题中的专业知识。
我们有许多其他应用程序在Quora中的排名,其中一些甚至可能被忽视。 例如,显示为具有给定答案的名称也以我们在顶部呈现的方式排列,我们认为对于给定问题/答案是最有信息的。 对于在向特定问题呈现可能的回答者时建议的那些名称也是如此。
让我们仔细观察排名ML算法的两个特定实例:搜索和个性化排名。
◇◆◇◆◇
搜索算法
对于诸如Quora的应用,搜索算法可以被看作是排名的另一个应用。 事实上,搜索可以分解为两个不同的步骤:文本匹配+排名。 在第一步中,返回以某种方式在搜索框中输入的与查询匹配的文档(问题)。 然后将那些文档视为第二步骤的候选,以便将这些排列结果用来优化诸如点击概率之类的内容。
该第二步骤确实是可以使用许多不同特征的学习到排名应用的另一示例。这些特征可以从在原始文本匹配步骤中已经使用的简单文本特征到与用户动作相关的其他特征,或对象属性(例如其流行度)。
◇◆◇◆◇
个性化排名
在一些情况下,如上所述,我们可能得到一个全局最佳排名的所有用户。换句话说,我们可以假设给定问题的大多数“有用”答案的顺序与阅读答案的用户无关。 然而,这种假设在许多重要案例中显然是站不住脚的。 一个这样非常重要的案例就是Quora Feed。 Quora Feed基本上是任何登录用户在登录产品时将看到的主页。在该页面中,我们正在尝试为给定用户在给定时间选择和排名最有趣的故事(参见下面的示例)。 这是一个个性化学习到排名的典型例子,类似于Netflix主页与电影和电视节目。
Quora的用例虽然比Netflix的电影和电视剧排名更具挑战性。事实上,我们可以看看我们的用例,作为Netflix,Facebook和Google新闻需要做的优化他们的个性化排名的组合。 一方面,我们希望确保排名较高的故事与用户具有相关性。 另一方面,Quora也在用户之间有明确的连接。 您的“社交网络”上的操作也应影响排名。 最后,Quora的故事有时可能与正在进行的趋势事件有关。及时性是另一个因素,应该影响模型的决定促进或降级一个故事。
正因为如此,有许多不同种类的功能可用于在Quora创建这样的个性化排名。 可以列举如下一些:
质量的问题/答案
用户感兴趣的主题
用户关注的其他用户
什么是趋势/流行
... ...
事实上,重要的是要记住,在Quora,我们感兴趣的是吸引用户阅读有趣的内容和提出问题,用户可以写出有趣的内容。 因此,我们必须包括既能代表答案的趣味性又能代表问题的特征。为了得到这些特征,我们使用从用户,作者和对象(答案\问题)完成的动作导出的信息。 在不同的时间窗口处考虑并聚合这些动作,并将其馈送到排序算法中。实际上有许多不同的派生功能进入我们的个性化Feed模型,我们不断尝试添加更多。
关于我们Feed评级应用程序的另一个重要考虑的方面是,我们需要能够对用户操作,展示次数,甚至趋势事件做出响应。 我们有越来越多的收集的数百万的问题和答案,我们不能试图为每个用户实时排名。为了优化体验,我们实施了一个多阶段排名解决方案,其中在实际执行最终排名之前,选择不同的候选并进行排名。
◇◆◇◆◇
推荐
上述的个性化排名就是推荐的一种形式,是类似的方法在不同的案例中的应用。例如,流行的Quora电子邮件文摘包括了已选择的并为您推荐的故事集合。这是一个不同的“learning-to-rank”模型,针对不同的目标函数进行了优化。
除了排名算法,我们还有其他个性化的推荐,出现在产品的不同部分。例如,在不同的地方,您会看到您应该关注的人或主题的建议。
◇◆◇◆◇
相关问题
另一个建议来源是基于用户与当前内容相关的问题。
相关问题通过使用考虑包括例如文本相似性、共同访问数据或其他共享特征(例如主题)的不同特征的另一个机器学习模型来确定。还考虑了与问题的普及程度或质量相关的其他特征。需要注意的是,衡量是否是一个好的“类似”推荐的标准不仅在于这个项目与源内容的相似度,更在于目标的“兴趣”。事实上,对于任何“相关项目”机器学习模型来说最棘手的问题之一是如何权衡相似性与其他相关性元素。
◇◆◇◆◇
重复
重复的问题是上述相关问题情况的极端情况。这是Quora的一个问题,因为我们要确保来自回答特定问题的用户的所有力量都是共享的,并且集中在正确的地方。将具有问题并希望将其添加到站点的用户指向预先存在的答案也很重要。因此,我们需要做大量的工作用来检测重复问题,特别是在用户创建问题的时候。
我们当前的解决方案是基于训练具有重复/非重复标签的二元分类器。我们使用从文本向量空间模型到基于使用特征的不同类型的信号。
◇◆◇◆◇
用户信任/专业推断
在像Quora这样的应用程序中,重要的是要了解一名用户是否可信。事实上,我们不仅有兴趣以绝对的方式回答这个问题,而且是关于一个给定的主题。用户可能非常熟悉某些主题,但对其他主题却不那么熟悉。在Quora,我们使用机器学习技术来推断用户专业知识。为了训练这些模型,我们有几个重要的特征。我们不仅知道用户在给定主题中写的答案,而且我们还知道用户在那些主题上收到的赞成、反对或者评论。我们还知道用户对主题有多少“赞同”,“赞同”是对来自其他用户的专业知识的明确承认。
另一个要注意的重要事情是,通过网络传播的信任/专业知识应该由算法纳入考虑范围。例如,如果我从机器学习的专家那里收到一个关于机器学习的回答的赞成票,那么这一票应该比没有专业知识的普通用户的投票更重要,对于赞同和其它”user-to-user”的特征也是如此。
◇◆◇◆◇
垃圾邮件检测和审核
像Quora这样的站点,为保持内容的高质量而自豪,必须非常警惕通过垃圾邮件、恶意或者非常低质量的内容试图愚弄系统。一个纯手工模型来审查内容无法扩展。解决这个问题的方法就是使用机器学习模型来检测这些问题。
在Quora,我们有几个模型可以检测与内容质量相关的不同问题。这些分类器的输出在大多数情况下不直接用于对内容做出决定,而是采用将这些问题/答案馈送到审核队列中的方式,然后手动审查。
◇◆◇◆◇
内容创建预测
关于Quora的一个非常重要的事情是,我们正在优化系统的许多部分,不仅为读者创造引人入胜的体验,而且最大限度地提高质量和所需的内容。出于这个原因,我们有一个机器学习模型,预测用户写一个特定问题的答案的概率。这允许我们的系统以不同的方式确定这些问题的优先级。其中的一个方式是系统自动的A2A (Ask to Answer),它是通过通知将这些问题发送给潜在作者。上面解释的其他排序系统也将使用该预测概率。
◇◆◇◆◇
模型
Quora已经尝试了许多不同的模型来解决上述不同的问题。有些时候,我们使用开源实现,但是许多其它情况我们最终采用更高效或灵活的内部版本来实现。
在这里我不深入讨论哪里使用什么模型的细节,但这里是一个在我们的系统的不同地方使用的模型列表:
逻辑回归
弹性网
梯度提升的决策树
随机森林
神经网络
LambdaMART
矩阵因式分解
矢量模型和其他NLP技术
... ...
◇◆◇◆◇
结论
如上所述,Quora以许多不同的方式使用机器学习。我们已经能够通过使用这些机器学习方法获得非常重要的收益,我们相信有更多的收获而且我们会继续对新技术投资。此外,我们已经开始考虑机器学习在不久的将来那些令人兴奋的新应用。这些应用包括广告排名、机器翻译和NLP的其他应用程序,这些应用程序将直接用于我们计划即将添加的新产品功能。