搜索场景下的智能推荐演变之路

摘要:传统的推荐手段主要仍是深度挖掘用户行为和内容自己类似性的价值,包括但不限于协同过滤,内容表征+向量召回,以及各式各样的点击率预估模型,而后这样的推荐行为缺少内在的逻辑性和可解释性,有一种知其然,不知因此然的体感。本文中,阿里巴巴高级算法专家王悦就为你们分享了搜索场景下的智能推荐演变之路。算法

演讲嘉宾简介:王跃(跃神),阿里巴巴高级算法专家。浙江大学硕士毕业,阿里巴巴高级算法专家,加入阿里巴巴以来一直致力于研究搜索推荐相关技术,相关工做包括天然语言处理,查询词分析技术研究,知识图谱数据构建,实体推荐等多个不一样方向。当前是夸克浏览器智能推荐业务业务负责人,致力于推进推荐从传统的用户行为推荐向知识化推荐的升级,从而提高用户信息获取信息的边界,加快信息决策的效率。浏览器

本次分享将首先介绍神马搜索在推荐领域有哪些应用场景,以后为你们分享在神马搜索的推荐系统中所作的召回和排序相关的工做。网络

1、概览

场景介绍

首先为你们介绍神马搜索的推荐场景有哪些,好比你们在向搜索框输入内容以前,搜索框就会提供一些预置的搜索词,这属于没有搜索Query的推荐。其次,若是你们点击网页以后返回结果,神马搜索会在URL下面提供一些相关的Query,这是与URL自己相关的推荐。再次,还有Query推荐和相关搜索,这中推荐的主要目的是引流,国内的搜索引擎基本上都是商业化的产品,所以经过这样的推荐方法就可以很好地吸引一些流量进来。此外,还有体感比较好的实体推荐,以及在内容消费页面所作的相关推荐。性能

推荐大体能够分为三个阶段,首先在输入以前,神马搜索引擎会基于用户画像以及其余的一些相关推荐技术将一些内容推荐给用户;第二个阶段就是在搜索的结果页进行推荐;最后一个阶段就是在内容页面上作一些相关推荐。从另一个维度上来看,推荐也能够分为三个部分,分别为没有Query的推荐、有Query的推荐以及基于URL的推荐。学习

技术大图

正以下图所展现的,推荐的业务应用场景很是多,所以不管是从横向仍是纵向上进行划分,均可以将推荐划分为多个视角。而若是对于每种推荐都从头至尾搭建一套系统,那么成本将会很是高,而UC团队有一套比较通用的技术体系来支撑以下图所示的推荐相关业务。搜索场景下智能推荐的技术大图能够大体分为三个部分,最底层是数据以及数据相关的梳理;其上层就是经过召回以及排序等手段对于数据进行必定的处理;最上面一层就是使用处理好的数据来支撑业务。优化

对于上层大部分的推荐场景而言,所采用的召回方法基本都是相同的,而所采用的排序方法每每不一样。好比对于预置词这种业务而言,它是没有Query的,所以在作模型设计的时候就没法利用这些信息。网站

2、召回

接下来为你们总体地介绍一下推荐系统中的召回体系,在本次分享中只会涉及其中比较通用的4种召回方法,但实际上召回体系远远不止这4种,一些比较通用的召回方法没有在本文中列出。搜索引擎

用户行为召回

在召回部分介绍的第一种方法就是用户行为召回,也就是去深挖用户行为的价值。用户行为的挖掘是搜索引擎推荐的重要环节,这部分会针对于用户行为作两件事情。第一件事情就是从Session的角度来分析哪些Query常常会出如今一块儿,这样分析也会遇到一些问题,好比首先要去区分Session里面不一样的Query类型,在搜索引擎里面能够本身主动地发起一次搜索,也能够本身去点击一些推荐结果。可是这两种行为存在必定的区别,好比主动搜索和被动经过推荐来搜索是不一样的,主动搜索行为每每会得到较高的分数,若是在比较靠后的位置点击了推荐结果和在相对比较靠前的位置点击了推荐结果的行为也是不一样的。所以,在这里须要对于不一样类型的行为作一些权重计算,同时作一些比较机器化的规则,好比在某一个Session里面,某一个Query是用户最后一次搜索,此时就须要去考虑这个Query是否是已经知足了用户需求,所以会对于这些Query加必定的权重。spa

第二个问题就是时效性优化问题,对于一些头部的Query而言,可能一天以内就能达到几万甚至十万的量级。对于这样的Query,一般的作法就是拉一个时间窗口去看全部Session里面Query的状况如何。但实际上对于这些头部的Query没有任何意义,由于其一天的数据就足够分析了,所以在这种状况下会作一些采样;对于一些长尾的Query则会作一些时间窗口的拉长操做。第三个问题是稀疏优化,对于前面所提到的基于URL的推荐而言,一般的作法就是收集用户点击了URL以后又搜索了哪些Query的行为,可是这种状况下点击的URL每每是很稀疏的,所以会使用URL下面自己的一些与Title类似的Doc共享推荐的List实现基于文本的泛化,或者经过类似Query共享推荐List实现基于行为的泛化,这样一来推荐的效果和覆盖率都会有极大的提高。设计

行为分析

下图展现的是协同过滤算法,可是经典的协同过滤算法每每存在一些问题,好比同一个Item权重的分配而言,在行为很是丰富的用户和行为较少的用户之间,可能更加倾向于前者。

可是这样的作法并不必定合理,所以咱们复用了集团的一些成果,作了两点主要的改进,第一个就是尽可能地下降行为特别丰富的用户的比重,使得其相对比较平滑。第二个就是构建如上图所示的菱形结构,进而达到闭环的效果,使得推荐的理由更增强烈一些。综上所述,能够从入度出度、行为丰富度不一样等闭环的结构上面作优化,来提高总体协同过滤类算法的效果。

标签召回

基于标签的召回与基于用户画像的召回很是相似,对于用户画像而言,如今业界比较传统的作法就是在用户身上打上各类各样的标签,好比性别、年龄以及爱好等。所以,这里将基于标签的召回和基于用户画像的召回合在一块儿讲解。这里列举了一个例子就是在作APP推荐时如何去分析偏长尾的标签,好比搜索“什么软件拍照带耳朵?”时可以发现很是丰富的问答数据,而且发现Faceu这款APP在答案里面。而若是其余的问答网站里面反馈出了其余的APP,就能计算出Faceu和其余拍照APP之间存在很是强大的相关性,这样一来能够作一些关联的推荐,而且能够标注出其推荐者。

标签召回主要包括两个步骤,第一步就是创建比较完整的标签体系,将标签概括到比较稀疏的链路下面去。在定义好这些链路体系以后,第二步就能够分门别类地去进行挖掘,这里的挖掘相对而言仍是比较传统的,好比先分取一些Query,而后去判断有哪些数据,并对于已有的数据进行一些标注,作一些标签的识别,以后进一步扩大。当咱们累积到必定量以后,就能够尝试借助有监督的方法实现进一步的泛化。

知识图谱召回

基于知识图谱的召回是最近一段时间内在学术界比较火的方法。UC团队在基于知识图谱的召回方面也作了大量的尝试,大体分析了一下有这样几类算法,好比文本建模算法DLA和Doc2vec,知识表示算法tranE、transH、transD以及transR,网络关系算法DeepWalk、Node2Vec以及SNDE等。文本建模算法基本上都是无监督学习,所以没有办法很好地利用关系网络,主要是利用文本信息;知识表示算法对于关系的稠密度要求很是高,若是关系稠密度没有达到要求,那么采样效果就会很是差;基于深度学习的网络关系算法便可以结合文本信息也能够融合关系网络。综上所述,基于深度学习的网络关系算法相对而言比较中庸一点,可以同时利用文本和网络信息,总体效果也会相对好一些。

UC团队主要针对Node2vec的基础版本作了一些优化。之因此优化Node2vec是由于其具备深度优先和广度优先的机制,可以使得其整个训练过程和方向变得可控。Node2vec的过程主要能够分为3部分,主要就是以知识图谱这个图关系网络为基础作随机游走,而且控制随机游走须要深度优先仍是广度优先,深度优先会更加关注全局信息,而广度优先则会更加关注Doc信息。UC团队在Node2vec上面主要作了两方面优化,一个是数据增广,也就是增长了用户行为数据以及百科数据和超连接数据,将这些数据抽取出来实现层级化,这样就可以在必定程度上解决网络稀疏的问题。第二个优化点就是利用深度学习中一个比较好的方法,也就是利用文本信息作embedding,好比在知识图谱里面某一我的物有相应的描述,能够对于这些描述信息进行切词并embedding到网络中来。

向量召回

基于向量的召回也是最近几年在学术界和工业界中比较热门的方法。向量召回的出发点就是分析输入的Query或者用户与候选的推荐Query之间的文本语义匹配问题。这个模型是YouTube在2016年发的一篇论文中提出的,UC团队在此基础上进行了改进,好比对于Query以不一样的粒度进行切词。此外,Query还会有一些文本特征,好比检索切词、语义切词等,还会将用户画像的特征以及实时信息特征一块儿训练来提高模型的性能。

下图所展现的是向量召回的效果图,左边的第一列是训练的特征,第二列是召回的数据,第三列是真实的搜索Query。对于向量召回方法而言,有一些优化的方法,好比线上存在真实的排序状况,那么能够将线上真实状况和线下召回的状况作一个比较,从而大体了解向量召回的优点状况以及准确率如何。

3、排序

基础相关性

在排序部分首先介绍基础相关性。下图中展现了一个Query例子“泰勒级数展开公式”。在线上首先会对于这个Query作切词,切词完成以后,每一个Token都会召回一系列的候选Doc,此时会出现一系列的问题,由于已经将Query切成Token了,因此极有可能产生的Doc结果和原始的Query是不相关的,由于切分以后没法获得足够的Query信息。此时,须要借助相关性模型大体地控制所获取的文本与原始Query的相关性,将相关性特别低的候选Doc在这一步过滤掉。在模型设计时也会考虑一些应用的场景,好比在作实体推荐时就会将Query里面实体的信息引入进来,进而实现共享网络。

若是将Query分类信息引入进来就能很好地解决一些歧义的问题。

CTR预估

UC团队在两年前作了CTR预估的相关工做,那个时候其余的一些方法尚未成熟,所以这部分作的相对比较简单,主要的工做集中在样本的选择以及特征的选择上面。对于样本选择而言,一般会在一个推荐序列里面将点击过的结果做为正样本,将没有被点击过的结果做为负样本。在模型设计方面,比较重要的是CTR类特征,若是这个特征不佳就会使得整个模型的特征打一个比较大的折扣。而UC团队所实现的CTR预估模型可以达到小时级更新,保证线上的效果。

MAB

MAB的意思就是“多臂老虎机”,好比一个老虎机有多种能够玩的方法,咱们一开始不知道哪一种方法才能获胜,所以须要逐个实验每种玩法获胜的概率是多少,最终去肯定应该以什么顺序来玩。这和排序是很是相关的,由于在推荐时若是直接使用CTR排序可能致使一些比较好的潜在的推荐Item由于刚刚出来,没有被不少用户点击过,就会致使其永远没法排在前面。此时就须要借助一个探索机制来缓解这样的问题,也就是当使用CTR排序完成以后,并不彻底按照CTR去提供排序结果,而是使得全部的推荐候选项都有必定的几率被选中。若是常常性地进行探测,那么推荐结果也会逐渐地收敛。

小结

这里简单作一个总结,在本文中已经介绍了大部分的推荐算法。对于召回而言,从精准到泛化基本上能够分为基于检索的召回、基于标签的召回、协同过滤、基于知识图谱的召回以及基于向量的召回。对于排序而言,也介绍了基础相关性、语义相关性以及CTR预估和MAB。


原文连接 本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索