阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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 )关注我们。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2017-05-31 19:002611
用户头像

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

关注

评论

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

【STM32】PWM 输出 (标准库)

AXYZdong

硬件 stm32 2月春节不断更

1480. 一维数组的动态和

小马哥

算法 七日更

C语言实用第三方库Melon开箱即用之多线程模型

码哥比特

c c++ Linux 后端 框架

揭秘登上2021春晚舞台的黑科技-XR技术

架构精进之路

黑科技 vr 春晚 XR MR

【活动回顾】4步2小时,搭建爆火的语音聊天室

ZEGO即构

春节快过腻了?不妨关心下太空探索

脑极体

第四章作业-编写一个用例文档

秦挺

写公号大半年,看看我都收获了些啥

架构精进之路

技术 总结 微信公众号 成长笔记

程序员成长第五篇:如何选择城市工作?

石云升

程序员 2月春节不断更 选择城市

gradle中的增量构建

程序那些事

maven Gradle 程序那些事 构建工具

IDEA插件:快速删除Java代码中的注释

xiaoxi666

Java 代码注释 JavaParser

消息队列Kafka:入门基础

正向成长

kafka

这是我的第一次JavaScript初级技巧

我是哪吒

JavaScript 学习 程序员 大前端 2月春节不断更

微信红包封面,2021年为啥突然火了?

架构精进之路

春节 微信红包封面 商业洞察

2.react心智模型(来来来,让大脑有react思维吧)

全栈潇晨

React React Hooks react源码

【LeetCode】重塑矩阵Java题解

Albert

算法 LeetCode 2月春节不断更

【LeetCode】数组拆分Java题解

Albert

算法 LeetCode 2月春节不断更

第一次异地过年有感

石君

思考 情感

开发利器——C语言必备实用第三方库

码哥比特

c c++ Linux 后端 框架

1.开篇(听说你还在艰难的啃react源码)

全栈潇晨

React React Hooks react源码

EternalWallet为您提供快速、便捷、低价的国际汇款服务

Geek_c610c0

ElasticSearch.03 - 基本原理

insight

elasticsearch 2月春节不断更

C语言第三方库Melon开箱即用之词法分析器使用

码哥比特

c c++ Linux 后端 框架

13. 如果自己写的 Python 程序出错了,怎么办?

梦想橡皮擦

python 爬虫 2月春节不断更

3.Fiber(我是在内存中的dom)

全栈潇晨

React React Hooks react源码

字幕组时代落幕,翻译的未来可能是?

字节跳动技术团队

深度讲解背包问题:面试中每五道动态规划就有一道是背包模型 ...

宫水三叶的刷题日记

深度思考 面试 LeetCode 动态规划 数据结构与算法

今日笔记

Nydia

翻译:《实用的Python编程》01_05_Lists

codists

人工智能 后端 python 爬虫 列表 数据结构与算法

给hugo博客添加评论功能

远鹏

Hugo 静态博客 utterances

日记 2021年2月17日(周三)

Changing Lin

2月春节不断更

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