本文作者 Nikhil Dandekar,Quora 机器学习团队负责人。 早在2015年,Quora 技术副总裁Xavier Amatriain就如何在Quora中使用机器学习写了一个很好介绍:How does Quora use machine learning in 2015?感兴趣的读者可以参看链接[1]。 到今天,Quora 在机器学习的使用已经得到广泛增长,不仅在构建更大更好的模型方面走得更深入,同时也扩大了机器学习使用的领域。本文将给大家介绍Quora在2017年机器学习规划的全景图。 机器学习用例 下面将通过 Quora 产品的不同部分,来介绍我们是如何应用机器学习算法。 1. 使用机器学习来发现信息 Quora知识共享的主要方式是问答,这从用户想要了解的问题或是“信息需求”开始。用户在Quora上提出一个新问题后,我们有一套机器学习系统进行问题的理解分析,从提问中提取信息,从而进行后续流程。 什么是问题理解(question understanding)系统? 我们关心内容的质量,这一切都以从提问的质量开始。我们有一个ML系统来分析提问,并且进行问题质量分类(question quality classification),帮助区分高质量和低质量的提问。 除了提问质量,我们还需要确定问题类型(question type),这有助于问题的后续处理流程。 最后,我们也有问题主题标签(question-topic labeling),用于确定提问的主题。虽然业界大多数主题模型都是处理大文本和较小的主题本体,但我们面临的是小文本(一个简短的提问)和大主题(超过一百万个潜在主题来标记该提问),这使得它成为一个更具挑战性的问题。 在所有的问题理解模型中,我们使用从提问及其上下文导出特征,例如提问的用户,提问的地区等。 满足用户发现信息需求的另一种方法是让他们搜索现有的提问。我们有两个主要的搜索系统:
两种搜索使用不同的排序算法,这些算法在搜索速度,相关性以及返回结果的广度和深度方面各有不同。 2. 使用机器学习来获得回答 问题理解系统的输出,是问答系统下一个步骤从专家那里获得回答的重要输入。在这方面,也有机器学习系统来帮助我们更好地解决这个问题。 请求回答(Request Answers),以前称为要求回答(Ask To Answer)是一个允许用户将问题发送给其他用户的功能,它要求被请求的领域专家为相关提问写一个回答。 请求回答也是一个有趣的机器学习问题,想更多了解其中的技术细节可以参阅我们相关的文章:Ask To Answer as a Machine Learning Problem(见链接 [2])。 在A2A之外,将未答复的提问与相关专家进行匹配的主要方式是通过Quora主页Feed。在 feed 中,问答的排序是一个非常重要的问题,需要综合上述所说的提问属性、用户属性以及一整套其他原始和派生特征作为排序模型的输入,以生成个性化Feed。下面是几天前本人 feed 页面的截图。 3. 利用机器学习来提升阅读体验 如上图所示,feed 不仅包含可以回答的提问,还包括值得阅读的回答。feed 的回答排序(answers ranking)是另一个对我们非常重要的机器学习问题。feed 中的提问和回答排序使用类似的底层系统,但目标非常不同,因此在其基础模型中使用了不同的特征集。 另一个使用机器学习来评估值得阅读的回答是我们向用户发送的“电子邮件摘要”。所有这些问答的排序都由相当先进的ML系统提供支持,ML系统使用多种模型和许多不同特征组合来达到最终排序。 如果用户发现感兴趣的问题,我们希望他在Quora上有一个好的阅读体验。回答的排序(Ranking answers for questions)是一个重要的机器学习应用,用来确保最相关的回答排在给定提问的顶部。我们在这篇文章详细介绍ML背后的回答排序:A Machine Learning Approach to Ranking Answers on Quora[3] 使用机器学习的方法来对问题的回答排序。我们也对回答的评论排序,以确保用户在顶部看到最相关的评论。 所有这些排名算法超出了简单的顶踩数排序,需要综合使用相关互动用户的用户特征,使用内容质量,参与活动等,以实现最终排序。 我们还想用户在阅读特定问题的回答后,有便捷的途径来获得相关内容并继续阅读体验。“相关问题”(related questions)就是由机器学习来支持解决这个需求的产品功能。 我们在提问页面上显示相关问题,帮助用户更轻松地导航Quora 其他问题空间。在首页上,我们还会显示推荐关注的主题和用户,这两个都是基于我们对用户的了解而实现的个性化推荐系统。 上述机器学习系统中非常重要的一个元素是个性化。个性化让产品和底层系统与Quora每个用户相关。ML系统个性化的一个重要组成部分是用户理解(user understanding)信号。作为用户理解的一部分,我们观察和导出用户的各种特征,如他们喜欢/不喜欢的主题,他们在不同领域的专业知识和他们的社交网络属性。 我们还有各种“用户实体”亲密度系统,例如用户主题的亲密度(user-topic affinity),用户用户亲密度(user-user affinity)等。所有这些个性化信号都是重要的输入,不仅仅适用本节的“阅读体验”系统,而且也用在将提问与专家匹配等用例上。 4. 利用机器学习来提升内容质量 对Quora用户体验至关重要的事情之一就是内容质量。我们希望确保提问、回答、主题和其他内容从高质量开始,并在之后的生命周期同样保持高品质。为了做到这一点,我们有一套机器学习系统来保证内容质量。以下是其中的几个:
同时,还有许多其他ML系统用于维持内容质量,这里就不展开了。 5. 利用机器学习来实现广告优化 2016年,我们也开始了商业化运作。目前,我们在问答页面上展示与提问意图相关的广告。通过机器学习算法来进行广告点击率预测(Ads CTR prediction),从而确保展示的广告与用户相关,并为广告客户带来高价值。我们的机器学习尝试在商业化方面还刚开始,在未来的几个月和几年中,将扩大对ML的使用。 除了上面列举,我们还有其他功能的机器学习系统,篇幅关系就不一一展开了。 使用的模型和库 我们希望团队使用最佳的模型和工具来完成这项工作,同时也希望这些工具能够标准化和重用。下面是一些我们使用的模型(排序不分先后):
我们还支持一整套开源和内部库,用于完成工作,如Tensorflow, sklearn, xgboost, lightgbm, RankLib, nltk,QMF(Quora自己的矩阵因式分解库)[6], 以及其他一些内部库。 机器学习团队 自2015年以来,对我们来说,另一个令人激动的发展就是组建了一个新的机器学习平台团队。ML平台团队的目标是在离线(模型训练)和在线(模型服务)方面为公司其他部门的ML工程师提供更便捷的机器学习功能。 在线方面,ML平台通过系统来帮助ML工程师构建和部署高性能、高性价比的实时机器学习系统。 在离线方面,ML平台团队使ML工程师能够以快速,标准化和可重用的方式构建数据管道,特征生成和模型训练。 在Quora拥有专门的机器学习平台团队,帮助公司加快了ML开发速度,比以前快得多。同时也通过优化系统,每天可以处理更大更多的数据。我将在后续的文章中分享更多有关ML平台团队的细节及其路线图。 希望本文能给你一个很好关于Quora如何在2017年使用机器学习的全景图。如果上述任何一个方面让你激动,你应该知道我们正在招聘不同种类的机器学习岗位!查看我们的招聘页面[7] 了解更多。 相关链接:
推荐阅读 |