写点什么

2017年,机器学习在Quora的五大应用场景

2017 年 5 月 31 日

2015 年,Quora 的工程主席 Xavier Amatriain 非常精彩地回答了 Quora 上的一个问题:“ Quora 在 2015 年将如何应用机器学习”。从那个时候开始,机器学习在 Quora 的应用得到了长足的发展。他们不仅更加深入地为已有的机器学习应用构建更大更好的模型,而且将机器学习技术应用到更多领域。而在今年,Quora 的工程经理 Nikhil Dandekar 在 Quora 上回答了类似的问题:“Quora 在 2017 年将如何应用机器学习”。以下译文翻译自 Nikhil 的回答内容,并已获得作者的授权,查看原文 “ How does Quora use machine learning in 2017 ”。

机器学习在 Quora 的五大应用场景

下面将介绍 Quora 平台各个部分的功能,以及我们是如何在每一个功能上应用机器学习的。

1. 查找信息

Quora 通过问答的形式实现知识的分享。分享从用户提出问题(或者叫“信息需求”)开始。在用户提问之后,我们的机器学习系统开始进行问题理解,例如,从问题中抽取信息,便于后续的处理。

我们十分关注内容的质量,不过好的内容是从好的问题开始的。我们的机器学习系统对问题进行质量分类,帮助我们识别出高质量和低质量的问题。除了问题的质量,我们还把问题分成不同的类型,这样我们在后续流程中就知道该如何处理这些问题。

最后,我们给每个问题打上主题标签,用于标记某个问题是属于哪个主题的。大多数主题建模系统会处理大量的文本和少量的主题,而我们需要处理简短的文本和超过百万的潜在主题,所以这个对于我们来说更加具有挑战性。

我们提取问题和上下文的特性,例如,问题的提问者、提问的地点,等等。

另外一种可以满足提问用户需求的方式是让他们搜索已有的问题,从而找到可以解答他们疑问的内容。我们有两个这样的系统,一个是提问框,一个是全文检索。前者在Quora 主页顶部提供了一个提问框,可以列出排名靠前的匹配问题;后者则提供了更加深入的内容匹配,可以通过点击提问框里的“搜索”按钮来查看匹配的内容。这两个系统使用了不同的排名算法,这些算法具有不同的搜索速度、匹配度以及搜索的深度和广度。

2. 为问题寻找答案

“问题理解”系统的产出成为下一步处理的重要输入:从专家那里获得答案。在这一步,我们仍然使用机器学习系统来帮我们解决问题。

Request Answers(之前叫 Ask To Answer)是 Quora 的一个产品特性,用户可以向其他人发送请求,请求他们来回答指定的问题。我们把这个特性归结为一个机器学习问题,我们的另一篇博文“ Ask To Answer as a Machine Learning Problem ”对这个问题进行了详细的描述。

除了 A2A,我们主要通过主页的问题种子(feed)来对未解答的问题和专家进行匹配。种子的问题排名对我们来说是一个非常重要的机器学习问题。我们要考虑问题本身的属性、用户的属性,以及其他一系列原始属性,并将它们作为排名模型的输入,为用户生成具有主题化、相关性和定制化的种子。下面的截图展示了几天前我的种子当中包含了哪些问题。

3. 阅读内容

从上图可以看到,种子里不仅包含了问题,还包含了答案。种子的答案排名是我们的另一个非常重要的机器学习问题。问题排名和答案排名使用的是相似的底层系统,不过因为要达成的目的不一样,所以在底层模型里使用的特征是不一样的。我们会向用户发送Email Digests,这也是另外一个机器学习的使用场景。以上这些排名问题都是通过高级的机器学习系统来解决的,这些系统通过多种模型和大量特征来完成最终的排名。

对于找到感兴趣问题的用户,我们要确保 Quora 能够为他们提供最佳的阅读体验。问题答案排名也是一个非常重要的机器学习问题,它可以确保与问题具有最高相关度的答案排在最前面。我们在“ A Machine Approach to Ranking Answers on Quora ”这篇文章里解释了答案排名的细节。我们还对评论进行排名,确保读者可以看到相关度最高的评论排在最前面。这些排名系统远远超出了普通的 upvote 和 downvote,它们通过相关的用户特征、内容质量、参与度等信息来完成最终的排名。

我们还希望用户在阅读完问题的答案之后,能够找到更多相关的内容。于是,找出相关问题就成为了机器学习要为我们提供的另一个特性。我们在问题页面上展示了相关的问题列表,方便用户浏览问题。相关主题(Related Topics)和趋势主题(Trending Topics)也可以帮助读者更好地浏览 Quora。我们还在主页上放置了一些板块,比如可关注的主题可关注的用户,它们也都是基于我们对用户的了解程度而定制的推荐系统。

以上的机器学习系统最为重要的元素就是个性化。个性化意味着产品和底层的系统需要与 Quora 的每一个用户相关。我们的用户理解组件是个性化系统的一个重要组件,我们抽取了用户的各种特征,比如他们喜欢和不喜欢的主题、他们在各个领域的专长,以及他们的社交网络属性。我们还有各种“用户实体”关系系统,比如用户与主题之间的关系用户和用户之间的关系,等等。这些个性化的信息不仅可以作为“阅读”应用的输入,还可以用于为问题寻找匹配的专家。

4. 保持高质量的内容

在用户体验方面,Quora 的内容质量是一个非常关键的因素。我们要确保我们的问题、答案、主题和其他内容都是以高质量为起点,并且一直保持很高的质量。为了做到这一点,我们使用了一些机器学习系统来保证网站内容的质量。

  • 重复问题检测:我们检测具有相同目的的问题,并把它们合并成单个问题。我们已经就该问题展开过讨论,并发布了一个重复问题的数据集,我们还开展了 Kaggle 竞赛
  • 恶意内容检测: Quora 有一个口号——“ Be Nice, Be Respectful ”,不过对于一个网络社区来说,这是一个很大的挑战。我们同时使用机器学习和人工审查来识别具有侵犯性的内容,这样就可以保护我们的用户,确保他们拥有良好的体验。
  • 垃圾检测:对于大多数由用户生成内容的应用来说,垃圾检测是一个无法回避的问题,我们也不例外。我们有一些机器学习系统专门解决这个问题。

我们还有其他很多机器学习系统用于维持高质量的网站内容,不过这里不一一例举了。

5. 广告优化

我们在 2016 年启动了货币化(monetization)。我们在问题页面上展示与问题相关的广告。我们通过机器学习进行广告 CTR 预测,确保所展示的问题与用户具有最高的相关度,同时能够为广告投放者带来最高的收益。不过,我们在货币化方面才刚刚起步,在未来,我们会继续扩展机器学习在这方面的应用。

除了上述的五个应用场景,我们还使用了其他机器学习系统,不过就不在这里一一累述了。

模型和库

我们的团队使用了最好的模型和工具,同时也进行了标准化,并能够重用这些工具。以下列出了一些我们使用的模型(排名不分先后)。

  • Logistic Regression
  • Elastic Nets
  • Gradient Boosted Decision Trees
  • Random Forests
  • (深度) 神经网络
  • LambdaMART
  • 矩阵因子分解 (SVD、BPR、Weighted ALS,等)
  • 向量模型和其他 NLP 技术
  • k-means 及其他聚类技术
  • 其他

我们也支持很多开源和内部的库,比如 TensorFlow、sklearn、xgboost、RankLib、nltk、 QMF (Quora 自己的矩阵因子分解库)以及其他一些内部的库。

机器学习平台

自 2015 年以来,我们组建了自己的机器学习平台团队。组建该团队的目标是为了简化机器学习工程师的工作,包括离线的工作(训练模型)和在线的工作(提供服务)。在在线工作方面,平台团队为机器学习工程师们提供了可靠和高可用的构建和部署系统,工程师们在这个平台上可以构建和部署高性能、低成本的实时机器学习应用。在离线工作方面,机器学习工程师们可以基于这个平台构建数据管道,以可重用和标准化的方式快速地抽取特征和训练模型。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 5 月 31 日 19:002165
用户头像

发布了 321 篇内容, 共 107.9 次阅读, 收获喜欢 101 次。

关注

评论

发布
暂无评论
发现更多内容

女员工被阿里录取工资二万六,辞职时被领导挽留:给你4万留下

程序员生活志

阿里 女程序员

讲烂了的mysql,今天再给大家重温一下

爱嘤嘤嘤斯坦

Java MySQL 数据库 编程 mysql事务

设计模式六大原则

刘志刚

设计原则

MobTech袤博与百度战略签约 携手布局数据智能产业新蓝图

Geek_116789

为什么我们需要制品管理?

Man

DevOps nexus 制品库管理 Artifactory

在前端如何玩转 Word 文档

阿宝哥

html markdown word

抢滩新基建,百度还会输给阿里和腾讯吗?

ToB行业头条

看动画学算法之:排序-插入排序

程序那些事

Java 数据结构 算法 插入排序

CAP原理简述

刘志刚

吴恩达推荐笔记:22张图总结深度学习全部知识

程序员生活志

学习 吴恩达

2020,是中国SaaS行业的机遇之年?

ToB行业头条

人人都需要一份自己的「使用说明书」

非著名程序员

程序员 程序人生 提升认知 独立思考 自我思考

三大 OSS 缓存加速系统巅峰对决

苏锐

hadoop cache JuiceFS JindoFS Performance

阿里拍卖,能不能拍到点儿上?

ToB行业头条

计算机网络基础(一)---计算机网络概览篇

书旅

php laravel 计算机网络

自动化测试首先是一种工作文化

wangwei1237

自动化测试 测试文化

《重学 Java 设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料

小傅哥

Java 设计模式 小傅哥 重构 代码质量

腾讯的ToB梦想

ToB行业头条

laravel redis队列不执行

kaer

laravel redis Queue

如何把百万级别的订单根据金额排序

码哥字节

数据结构 排序算法

Worktile完成新一轮融资,将发力研发管理赛道

Worktile

融资

Mysql插入百万条数据

Java小咖秀

MySQL 运维 数据

推荐系统大规模特征工程与FEDB的Spark基于LLVM优化

范式AI云

spark Sparksql 推荐系统 LLVM FEDB

我在项目中是这样配置Vue的

前端有的玩

Java Vue 前端 框架设计

第6周-作业2-总结

seng man

IDC2020 Q1通用服务器数据发布,浪潮信息成绩喜人

Geek_116789

为什么单元测试不是持续交付的唯一答案

陈琦

持续集成 单元测试

微信小程序使用GoEasy实现websocket实时通讯

GoEasy消息推送

小程序 websocket 即时通讯

时间去哪了?

escray

Spring5-Reactor函数式编程

小技术君

spring reactor Spring5 springboot

第6周-作业1

seng man

2017年,机器学习在Quora的五大应用场景-InfoQ