写点什么

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:002876
用户头像

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

关注

评论

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

云小课 | 需求任务还未分解,该咋整!项目管理Scrum项目工作分解的心酸谁能知?

华为云开发者联盟

项目管理 敏捷 devcloud

GaussDB(DWS)应用实践丨负载管理与作业排队处理方法

华为云开发者联盟

数据 负载 GaussDB

忒棒了!阿里P8大牛用这份技术点直接带你玩转高可用服务架构

比伯

Java 编程 架构 互联网 程序人生

深入浅出理解视频编解码技术

拍乐云Pano

音视频 RTC 拍乐云 视频编解码 视频算法

区块链应用落地,物流供应链平台搭建

t13823115967

区块链应用

ICT芯矿链挖矿矿机系统开发平台丨ICT芯矿链源码案例

系统开发咨询1357O98O718

ICT芯矿链矿机系统开发

12.5大数据集群资源管理系统Yarn

张荣召

12.4大数据计算框架MapReduce-架构

张荣召

喜讯 | 拍乐云荣登2020「年度最具投资价值创新企业TOP20」榜单

拍乐云Pano

音视频 拍乐云

公安大数据分析系统开发,情报研判系统搭建

t13823115967

智慧公安

云原生体系下的技海浮沉与理论探索

阿里巴巴云原生

Serverless 容器 微服务 云原生 k8s

12.7作业

张荣召

DolphinDB与Aliyun HybridDB for PostgreSQL在金融数据集上的比较

DolphinDB

postgresql 阿里云 时序数据库 DolphinDB 数据库开发

投行工作的本质 | 读《投行职业进阶指南:从新手到合伙人》

邓瑞恒Ryan

读书笔记 投资 金融 投行 职业第二曲线

《微信小程序开发入门与实践》.pdf

田维常

12.3大数据计算框架MapReduce-编程框架

张荣召

北京天源迪科与重庆邮电大学移通学院成功签约

DT极客

【涂鸦物联网足迹】物联网常见通信协议

IoT云工坊

物联网 HTTP 通信协议 mqtt coap

Norvarm波场链系统开发方案丨Norvarm波场源码功能

系统开发咨询1357O98O718

Norvarm波场链系统开发

探究神秘的SpringMVC,寻找遗失的web.xml踪迹

996小迁

Java 编程 程序员 架构 面试

第八周总结

小兵

从物理空间到数字世界,数字孪生打造智能化基础设施

华为云开发者联盟

IoT 智能 数字

Gemini双子新约交易所系统软件APP开发

系统开发

快来!开源一份阿里微服务指导手册:SpringBoot+SpringCloud+消息中间件

Java架构追梦

Java 架构 面试 微服务

巨头们为什么要开源自己的技术?解析科技企业对软件开源的态度

Marilyn

开源 敏捷开发

我看技术人的成长路径

阿里巴巴云原生

开发者 云原生 技术人 自我思考 职场成长

第八周大作业

小兵

H3C核心交换机故障处理通用流程

12.6大数据仓库Hive

张荣召

构建一张音视频全球大网究竟需要多少个节点?Pano Backbone技术探秘

拍乐云Pano

音视频 RTC 拍乐云

看到Mybatis源码就感到烦躁,怎么办?

田维常

mybatis

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