云科技时代 2018-06-13
机器之心原创
作者:邱陆陆
「知乎希望利用 AI 技术打造一个智能社区。」
每次知乎的技术负责人公开谈及人工智能技术,「智能社区」都是一个绕不开的词汇。然而「智能社区」也是一个相对陌生的概念:如今研究者与工程师们明确了深度神经网络在语音、图像和自然语言数据上的作用,并将它们进行逐一的细化和延展成了种种「智能应用」。然而「智能社区」是什么?
「每个人来到知乎,都能快速看到他感兴趣的人和内容,他的疑问可以被极速送达到有意愿和能力回答的人,他也会快速遇到让他拍案的好问题,分享只有他最懂的信息,收获最令他满足和愉悦的认同,与他希望遇到的人产生有价值的交流、讨论,甚至争执。这一切会是这个时代的思考和总结。我们会以从未有过的效率,创造思维的连接。让每个个体的思考和经验,被分享,被筛选,被总结,被转化成为这个时代的知识。知识的生产方式和迭代效率会因为这样的连接发生质的改变。」这是知乎合伙人、高级副总裁李大海对智能社区的定义。
然而为什么选择 AI 技术实现这一目标?AI 技术为社区带来了哪些变化?五月,机器之心来到知乎,希望找到这些问题的答案。
请输入描述
不是「哪里有 AI」而是「处处皆 AI」
知乎诞生的初心是认为「在信息爆炸的互联网海洋中,有价值的信息仍然是稀缺的」。而其中最有价值的部分,是那些深藏在某些特定用户的脑海中的知识、经验与见解。平台需要对这些内容进行大量的挖掘与沉淀工作,才能让它们被真正需要的用户利用起来。完成这样的工作需要庞大的用户基数——这一点知乎已经通过成为最大的中文知识分享平台做到了。而规模也带来了问题多样性的指数级增长,让原有的产品机制开始「失效」,对排序、推荐算法都提出了更高的需求,这就是 AI 技术引入的必要性。
这个过程与深度学习本身的兴起逻辑是一致的:当数据的数量超出一定范围,人类就很难从大量数据中找到规律,需要在自己设置设计模型结构的基础上,引入可训练的模型,让机器帮助研究者完成参数的选择。而当数据的维度也超过一定范围时,进行特征提取变成了需要消耗大量人力物力进行试验的工作,因此研究者进一步引入可训练的特征提取器。
「AI 技术的引入让每一个人持有的信息都能高效地被发掘、得到交流、并且通过大家评价的过程进行过滤。换言之,整个知识生产的方式、节奏和效率都得到了质的变化,知识的生产与消费、社区的建立与管理,都变成了一个不一样的过程。」李大海总结道。
在这样的一个智能社区里,对 AI 技术的应用情况是十分惊人的。当我们试图从业务逻辑对知乎对 AI 的应用进行梳理,会发现从内容生产、消费到用户连接与社区管理,每一个过程都涉及不同的机器学习问题,放眼望去,与其说「哪里有 AI」,不如说「处处皆 AI」。
内容生产部分,可以分为问题提出与问题路由。问题提出是一个从用户的查询中识别出意图,发现知乎现在还无法满足的意图,引导用户进行提问,并根据用户的意图生成合理的问题的过程,得到提问和描述后,后台的卷积神经网络模型会从知乎超过二十五万个话题中选择出最匹配的话题,进行话题的推荐和绑定。问题路由则是如何分发问题以让合适的用户看到问题、激发他们的创作欲望。这就是一个典型的机器学习排序(learning to rank)问题。先在众多用户中通过召回定位合适的范围,然后通过 pointwise/pairwise/listwise 等排序方法,找出最有可能接受邀请以及最有可能产生优质回答的用户,进行推荐,或让用户选择委托系统进行邀请。
内容的分发和消费部分,按照情景可以分为首页信息流、搜索和相关推荐等。在信息流部分,李大海特别强调,「知乎的信息流设计与其他平台有所不同的地方在于,知乎希望用户来探索更大的世界而不是进入信息茧房,因此我们特别注重在信息流里拓展用户的兴趣边界。」除此之外,搜索是典型的文本与问题之间相关性回归问题,而相关推荐则既可以基于用户进行,也可以基于问答文本进行,可以用协同过滤(Collaborative Filtering)的方法进行,也可以用深度表示的方法进行。
连接和治理则是社区特有的需求,知乎在连接方向的追求是「让人发现更多有趣的灵魂」,本质上是理解用户价值观、兴趣,然后进行推荐的过程。而治理则是甄别不同类别的低质行为(如答非所问、软文)和不友善行为(阴阳怪气、贴标签),以针对不同情况进行不同处理,降低对讨论氛围的影响。
而除了业务逻辑主线的各个部分外,AI 技术也帮助进行了众多的细节优化,比如如何对不同呈现形式的信息流进行针对性渲染:如何挑选封面图、挑选后如何进行
裁剪操作,以在首页的卡片中呈现更多信息量,帮助用户判断是否要进行消费。
「知乎从 16 年起进行开始引入机器学习相关算法,最开始从经典机器学习方法开始(例如梯度提升决策树(GBDT)),再逐步替换成深度神经网络(DNN)的新方法。」李大海也提到了在业界的深度学习方法迭代之迅速,「一、两年前,带注意力机制的双向 LSTM 模型还是一个『新方法』,如今已经是一个『经典方法』了。」
内容消费里的 AI 技术:从首页信息流说起
当你打开知乎,你看到的是什么?
知乎的「推荐」信息流是首页里十分重要的一栏。用户在这里可以看到符合自己兴趣的内容,当下的一些热点讨论,也有知乎帮助你拓展兴趣边界的探索。然而知乎上仅问题与回答就超过 1 亿条,其中还有类目繁多的 live、电子书等付费内容。这道拥有超过一亿个选项的多选题,没有任何一个排序算法能独立给出令人满意的答案。因此庞大的内容体系决定了,只有分层级的排序系统才能胜任这个任务。
知乎的首页负责人张瑞用一张架构图为机器之心详细地描述了这个名为「水晶球」的推荐系统的组成。
首页上出现的内容经历过两次排序。第一次是从数十个推荐队列里被「召回」,第二次是在合并后经过深层神经网络(DNN)的「排序」。
「召回」的第一个步骤是,召回模块根据用户的历史行为表现(用户画像),确定数十个推荐队列,或者说数十个「召回源」的召回比例和召回数量。
推荐队列是一个个含有特定标签的内容合集。有些队列里内容性质相似,比如热点新闻队列、视频队列。还有的队列与用户行为紧密相关,比如关注的人队列、搜索关键词队列。
「召回」过程的第二个步骤是各召回源根据用户的需求分别将自己的队列中的内容做排序后,按召回数量返回内容。
整个「召回」过程都是以用户为中心的、高度个性化的:
比如一个初来乍到的新用户还没有「关注的人」,召回模块就不会从关注的人队列拉取内容,而是转向兴趣探测队列,帮助算法更好地了解用户。
再比如今天的视频类内容非常丰富,但是根据用户画像,这位用户极少消费视频内容,那么召回模块仍然只会从视频队列请求三条内容,视频队列也只推荐三条最符合用户需求的内容。
而不同的推荐队列长度从几千到数十万各有不同、召回过程中采用的排序方法也各有不同。有的召回源会对用户和内容都做嵌入式表示 (embedding),进而通过内积的方式确定召回的对象;还有的召回源,比如关键词队列,会采用倒排索引的方式,用自然语言处理的方式把内容打上标签,然后针对用户的关键词需求,组建倒排索引,进行召回。
「召回」过程会选出数百条候选内容进入「排序」过程,最后,DNN 可以在一百毫秒内对这数百条完成打分和排序过程,决定推送给用户的内容。
「我们把系统命名为『水晶球』,是希望能够通过这个系统得以一窥用户想要看到什么内容,然后推荐给他。」
排序算法进化史:从 edgerank 到深度神经网络
张瑞也为我们讲述了首页信息流的「算法进化史」。
「首页一开始是基于 edgerank 算法进行简单的算法排序,后来逐渐引入了以 GBDT 为主的机器学习排序技术,现在这个阶段会把深度神经网络技术(DNN)应用在召回和排序的各个阶段,现在的大部分推荐结果都是通过神经网络推荐的。」
现在的 DNN 模型本质上是一个用于预测的回归模型,预测的对象是用户是否对一条内容感兴趣。回归的目标是一个与兴趣相关的用户行为的综合打分:用户是否有点击、是否进行阅读、阅读了多长时间、是否收藏、是否有正面或负面的评论等等。
预测所使用的特征主要可以分为三类:用户相关、内容相关以及上下文相关。用户相关的特征包括用户画像、用户一段时间内的阅读历史等等,内容相关的特征包括内容的标签、赞数、历史点击率等,上下文特征则是可能影响用户行为的时间空间特征。例如用户在早上可能会偏好阅读与成长相关的内容,晚上则更多阅读泛兴趣类内容。
预测模型主体是一个多路径网络结构:一个四层的神经网络把用户特征都表达为一个 256 个浮点数输出单元的向量,另一个神经网络把内容特征提取为另一个 256 维的向量,两个向量与代表上下文的向量一起,经过一个两层的全连接神经网络,输出最后的预测结果,即用户感兴趣的程度。
DNN 排序模型的前身是 GBDT 模型。「GBDT 模型的缺点来自它能接受的数据规模。」张瑞介绍道,「我们曾经做过实验,分别用 2000 万和 2 亿条数据训练同样的 GBDT 模型,得到的模型效果没有太大区别,换言之,数千万的数据量,已经达到了 GBDT 的容量极限。而这正是深度学习模型的优势所在:更大规模的数据、更多的特征会进一步增加深度学习模型的效力。如今在线上对排序阶段的内容进行打分的就是我们使用数亿条样本训练的一个 DNN 模型。」
张瑞也展示了两张 DNN 模型的引入在用户数据上得到的体现:
「在半年的时间里,用户在线时长取得了 50% 的增长。用户人均在线时长是每个用户每天使用信息流的平均时间长度,是一个代表了用户兴趣的良好指标,1 月开始的第一波增长来自于召回逐渐开始使用 DNN 技术,3 月开始的增长主要对应排序开始使用 DNN 模型的过程。」
他还格外兴奋地讲述了点击率「下降」背后的故事:
「我们发现,完全基于用户反馈进行推荐后,用户的表现会表现出趋同性——大家都去看热门的、吸引眼球的内容。我们觉得这虽然增加了点击率,但给用户带来的整体体验是不好的。所以我们通过产品策略等手段对这部分内容进行了比例上的调整,控制吸引眼球但是对用户成长作用不大的内容的比例,提高知识型内容的推送比例。」
这样的产品策略变动必然引起了点击率的下降,「但是在线时长仍然在稳定的增长,说明用户对我们的改进是认可的。我们希望大家不只是刷知乎的时候很开心,之后也能获得成长。新闻是有时效性的,但知识是不会随着时间贬值的。我们希望算法能够挖掘到长效的优质内容,把这部分内容传递给用户。」
知乎的独一无二:以社区为基础的 AI
作为一个独一无二的社区,知乎在利用 AI 技术方面有着明确的优势:
「知乎的特长在于我们拥有非常多附带用户行为的语料。我们很少去进行人工数据标注,而是更多地利用语料与行为数据之间天然的相关关系。」李大海说。
在拥有大量评论的基础上,还有大量用户对评论的反馈:哪些用户点了赞成、哪些用户点了反对,又有哪些用户进行了举报,进行每一种操作的用户都是什么样的用户;在拥有大量问题及描述的基础上,还有非常多邀请数据:邀请了哪些用户,他们是否接受了邀请,是否产生了优质回答。
这些数据都可以转化为大量的高质量标注数据。尤其是对于自然语言领域这类主观性更强、不容易获得「标准答案」的问题而言,用户反馈是最高质量的标签。
知乎的另一个特长在于明确的落地场景和非常愿意表达的用户群体。
张瑞也谈及了知乎的「推荐算法成长」与「用户成长」之间密不可分的关系。
「我们用成熟稳定的内容帮助新用户完成兴趣探测,也向成熟稳定的用户群体投放新内容判定内容的质量。」张瑞说。
一个用户画像尚不完备、亟需补充的新用户会收到许多来自「兴趣探测」队列的内容,这部分队列的内容相对稳定,能够保证产品体验,用户在这部分内容上进行的点赞、收藏等行为都能够帮助算法更好地了解用户。
而另一方面,知乎的算法初步判定可能为「优质」的新内容则会被随机分发给在相关话题下表达出强烈兴趣的老用户,由他们给出反馈来判断一条内容是否真的优质,是否值得进行更大范围的分发。
知乎明确的场景意味着算法与用户可以有针对性地快速迭代、优化,形成闭环,而愿意明确表达的用户则在闭环中提供最重要的一环:及时的反馈。
现在,知乎也在致力于将自己的优势以数据集与数据竞赛的形式开放向学术界与业界。
今年,知乎和中国信息检索学术会议(CCIR)、清华大学计算机系信息检索课题组(THUIR)一起举办了「移动环境下知识分享平台上的内容推荐」比赛。拿出了来自超过七百万名用户的两千四百余万条知乎移动端信息流推荐数据,让选手从一个约六万条的内容候选集合中产生推荐给用户的内容列表。
「我们希望以这种形式回馈学术界一些真实的问题和一些真实的数据,让他们能够做一些更有意思的研究。」李大海提到,「有非常多的实验室找到知乎,说『你们的数据太好了,我们能不能和你们合作。』如果大家都有这种需求,我们不如以数据集和数据竞赛的形式把资源开放给大家。」
除了学术界以外,业界的交流以及人才的引入也是知乎格外看重的方面,「知乎一直在扎实地做事情,我们也希望业界能够知道,也希望有更多机会和同行进行交流。另外也希望能够在这个过程中发现人才。以智能社区为目标的话,我们的人才需求仍然在日益扩大,仍然需要非常多新鲜血液加入进来。」