AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

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

  • 2017-05-31
  • 本文字数:3082 字

    阅读完需:约 10 分钟

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-05-31 19:003184
用户头像

发布了 322 篇内容, 共 153.6 次阅读, 收获喜欢 148 次。

关注

评论

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

Kindle的又一用处

孙苏勇

读书

天下武功,唯“拆”不破之MECE原则一| 技术人应知的创新思维模型 (5)

Alan

职场成长 技术人应知的创新思维模型 组合创新 结构化思维 28天写作

Tronex智能合约APP系统开发|Tronex智能合约软件开发

系统开发

腾讯T1~T9级别工程师具备专业的能力及知识点总结。

Linux服务器开发

程序员 腾讯 工程师 Linux服务器开发 岗位级别

2021数字化投资规划,你做好了吗?

张凯峰

架构 业务架构

基于 getty 的分布式事务框架seata-golang 通信模型详解

apache/dubbo-go

dubbo dubbo-go dubbogo seata

记录一次腾讯c/c++ linux后台开发岗面试经历(面试题含答案)

linux大本营

c++ Linux 腾讯 后台开发 架构师

架构师训练营第 1 期 - 第十二周总结

Todd-Lee

极客大学架构师训练营

架构师训练营第 1 期 - 第十二周作业

Todd-Lee

极客大学架构师训练营

学习笔记丨Linux中数据提取相关命令

Liuchengz.

Linux ubuntu #Ubuntu

作业-第8周

arcyao

第三周学习心得

cc

使用Tomcat Native提升Tomcat IO效率

程序那些事

tomcat nio 异步IO 程序那些事 bio

实践出真知!华为Android面试真题解析,附超全教程文档

欢喜学安卓

android 程序员 面试 移动开发

TRONex智能合约APP系统软件开发

系统开发

生产环境全链路压测建设历程之六 淘宝网2012年双十一的痛

数列科技杨德华

找到相同链表的点

落朽

腾讯T3大牛手把手教你!从外包月薪5K到阿里月薪15K,分享一点面试小经验

欢喜学安卓

android 程序员 面试 移动开发

网易游戏部门Java架构师必看的“完美版”Netty源码笔记

Java架构追梦

Java 学习 源码 架构 Netty

Github上标星82.1K+star面试笔记,可以帮你搞定95%以上的Java面试,已经帮助多人拿下offer

学习 程序员 面试 计算机

复盘不止复盘,更是个人认知升级加速器?

Alan

复盘 思维 技术人应知的创新思维模型 28天写作

【小菜学网络】物理层概述

fasionchan

网络编程 计算机网络 网络协议 TCP/IP 物理层

iOS面试高薪,进阶 你会这些呢嘛?

ios swift 面试

Singleton手绘

raox

极客大学架构师训练营

Week 12

黄立

与技术总监另起炉灶的CTO | 法庭上的CTO(8)

赵新龙

CTO 法庭上的CTO

架构之书:审美与《重构》

lidaobing

架构

架构师养成第三课

万有引力

第三周设计作业

cc

架构师训练营第三周课后作业

万有引力

《人工智能:一种现代的方法(第3版)》PDF

计算机与AI

人工智能 学习

2017年,机器学习在Quora的五大应用场景_语言 & 开发_Nikhil Dandekar_InfoQ精选文章