2015年,公司的工程副总裁Xavier Amatriain,关于如何在Quora上使用机器学习给了一个很好的答案。从那时起,在Quora上使用机器学习发展的越来越快,我们不仅为现有的机器学习应用程序开发了更大更好的模型,而且还扩展了我们使用机器学习的领域。在这个答案中,我将给出一个蓝图,来描绘出在2017年Quora是如何使用机器学习的。
机器学习使用实例
我将介绍产品的各个不同组成部分,并讨论如何在其中使用机器学习。
1 .搜索信息
在Quora上分享知识的主要形式是问答。一开始,用户可能会有一个问题需要解答,或者会有一些 “信息需求”,他们想要得到满足。在Quora上有一个用户问了一个新问题之后,会有一套机器学习系统来对问题进行理解,即从问题中提取信息,以帮助我们更容易地完成剩余的工作。所以,我将介绍一下这个问题理解系统。
我们关心更多的是答案内容的质量,但这一切都基于问题的质量。我们有一个ML系统,它拿到一个问题,就会对问题进行质量分类,以此来帮助我们区分高质量和低质量的问题。除了问题质量,我们还决定了几个不同的问题类型,这帮助我们决定应该如何在之后的流程中处理这些问题。
最后,我们也会给不同主题的问题标记一个标签,标签决定了问题的主题。当大多数主题建模应用程序处理一个大文本和一个短小的主题时,我们会使用一个简短的问题文本和超过100万个潜在主题来标记这个问题,这也使它成为一个更具挑战性的问题。
在所有的问题理解模型中,我们会使用问题本身及其内容的特性,例如:提出问题的用户是谁,提此问题的所在地区等等。
满足用户信息需求的另一种方法是,让他们搜索现有的问题,来答案他们正在寻找的问题。我们有两种主要的搜索系统:Ask Bar search,在Quora主页上会有最顶端的搜索栏,提供全文搜索,这是一个很深入的搜索,你可以通过点击“搜索”来进行访问。这些搜索系统使用不同的排序算法,它们在搜索速度、相关性和结果的广度和深度上有所不同。
2.得到问题的答案
问题理解系统的输出在一个问题的生命周期中形成了一个重要的输入:得到专家的答案。在这里也有机器学习系统,帮助我们更好地解决这个问题。
问答是Quora的一个特点,它允许用户向其他用户发送请求,让他们为一个特定的问题写答案。我们将请求答案看成是一个机器学习问题。所以,我们在这篇博文中重点讨论了系统的细节:应用于请求答案的机器学习问题。
在A2A之外,我们的主要方法是通过Quora的主页来匹配专家答案的问题。对我们来说,排序问题是一个非常重要的问题。我们考虑如上所述的问题属性,用户属性,以及原始的和派生的特性作为排序模型的输入,生成一个局部的、相关的和个性化的提要。这是几天前我提供的截屏。
3.读取内容
正如你在上面看到的,它不仅可以包含你可以编写答案的问题,它还包括值得阅读的答案。对我们来说,答案的排序是另一个重要的问题。问题排序和答案排序使用类似的底层系统,但这两个有着不同的目标,因此,在其底层模型中会使用不同的特性集。另一个使用机器学习对值得阅读的答案进行排序的方式,是我们发送给用户的电子邮件摘要。所有这些排序问题都是由高级的ML系统提供的,这些系统使用多个模型和许多不同的特性来得出最终的排序。
一旦用户发现了一个有趣的问题,我们要确保他们在Quora上有很好的阅读体验。问题的答案排序是一个重要的ML应用程序,它确保了一个给定问题的最相关的答案会排在最靠前的位置。我们在这里详细讨论了如何用ML系统进行答案排序:机器学习方法应用于Quora上的答案排序。在答案的基础上,我们也做评论排序,以确保你能在上面看到最相关的答案。所有这些排名系统不仅仅是根据简单的赞同或反对的评论来排序,同时也根据这些用户的特征,评论内容的质量,以及活动参与等角度,以得出最终排名。
我们也要确保在你阅读了一个问题的答案后,你仍有很好的途径来找到问题相关的内容,并且能让你继续保持良好的阅读体验。一个由机器学习推动的产品特性是相关问题。我们在问题页面上显示相关的问题,这可以帮助用户更容易地浏览Quora上的问题,也帮助你在Quora上进行导航,比如相关话题(在主题页上显示)和热门话题(在主页上显示)。在主页上,我们还展示了一些主题供用户关注,它们都是基于我们对用户的了解而进行的个性化推荐。
上述ML系统的一个非常重要的元素是个性化。个性化包括使产品和基础系统与Quora的每一个用户相关联。使ML系统个性化的一个重要组成部分是对用户的理解机制。作为用户理解的一部分,我们观察并获取用户的各种特性,例如他们喜欢或不喜欢的主题,他们在不同领域的专业知识以及他们的社交网络属性。我们也有各种各样的“user-entity”(用户实体)推荐系统,比如:用户主题推荐、用户之间推荐等。所有这些个性化推荐不仅为 “Reading”应用程序提供了重要的基础,而且还可以将问题与专家回答以及其他使用场景进行匹配。
4.保持较高的内容质量
在Quora上,用户体验的关键之一就是内容质量。我们要确保我们的问题、答案、话题和其他内容的高质量,并且要一直保持高质量。为了做到这一点,我们使有一套机器学习系统来努力维护内容质量。以下是部分内容介绍:
重复问题检测:这涉及到检测具有相同内容的不同问题,并将它们合并成一个统一的问题。我们已经详细讨论了重复问题的检索,甚至发布了一个重复的问题数据集,并举行了一场Kaggle竞赛供你参与。
滥用内容检测:我们在Quora上有一项原则,“Be Nice, Be Respectful”(友善而尊重),但在网络社区中保持这样的原则总是很有挑战性的。我们将机器学习与评论者结合在一起,以帮助识别攻击性或伤害性的内容,这样我们就能更好地保护用户,并确保他们有一个很棒的Quora体验。
垃圾邮件检测:对于大多数受欢迎的用户生成内容的应用程序来说,垃圾邮件检测是一个重要问题,我们也一样关注这个问题。许多不同的ML系统会进行联合,共同处理垃圾邮件的内容和发布的用户。
还有许多其他的用于维护质量的ML系统,但考虑到空间的利益,暂时不会使用它们。
5.广告优化
2016年,我们也开始做出商业化的努力。目前,展示的广告与问题页面的内容相关。我们使用机器学习来进行广告CTR预测,这确保我们展示的广告与用户相关,同时这对广告商来说也是高性价比的合作。机器学习在商业化领域的扩展才刚开始,在接下来的几个月和几年里,我们将扩大ML系统在这方面的使用。
当然还有很多其他的机器学习系统,但不会去使用它们,这是为了避免答案过于冗长。
模型和库
我们的团队使用最好的模型和工具来完成这项工作,同时也要确保我们在这些工具中保持标准化和重用性。以下是我们使用的一些模型(没有特别的顺序):
逻辑回归
弹性网络
迭代决策树
随机森林
(深度)神经网络
LambdaMART
矩阵分解(SVD,BPR,加权ALS等)
矢量模型和其他NLP技术
k – means和其他聚类方法
等等
我们还支持一套广泛的开放资源和内部库,用于完成诸如Tensorflow、sklearn、xgboost、lightgboost、RankLib、nltk、QMF(Quora自己的矩阵分解库)等工作。
ML平台
自2015年以来,另一个令人兴奋的发展是建立了一个新的ML平台团队。ML平台团队的目标是让ML的工程师比其他公司更容易地使用机器学习,包括线下(模型培训)和线上(模型服务)。在线上,ML平台能帮助ML工程师构建和部署高性能、搞效率、实时的机器学习系统,这些系统具有很高的可靠性和可用性。在线下,ML平台团队支持ML工程师构建数据管道,以快速、标准化和可重用的方式进行特征生成和训练模型。
在Quora上有一个专门的平台团队支持机器学习,这有助于加速ML开发的速度。它也使我们的系统能够每天处理越来越大的数据。我们将在未来分享更多关于ML平台团队及其发展的细节。