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

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

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

一、概览

场景介绍

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

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

技术大图

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

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

二、召回

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

用户行为召回

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

第二个问题就是时效性优化问题,对于一些头部的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。对于向量召回方法而言,有一些优化的方法,比如线上存在真实的排序情况,那么可以将线上真实情况和线下召回的情况做一个比较,从而大致了解向量召回的优势情况以及准确率如何。

三、排序

基础相关性

在排序部分首先介绍基础相关性。下图中展示了一个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。

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

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

  1. 搜索场景下的智能实体推荐

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 [免费下载]2022年2月份热门报告盘点 知识图谱在美团推荐场景中的应用实践 机器学习在B站推荐系统中的应用实践 ...

  2. 下拉搜索词api接口、淘宝搜索下拉框选词api,淘宝下拉词接口,淘宝搜索的下拉词推荐接口、关键词推荐api

    一.下拉搜索框选词api介绍 淘宝搜索下拉框选词是通过淘宝.天猫.手机润宝搜索下拉框查询淘宝搜索指数高.流量高.转化率高的关键词,并获取各关键词对应的在线相关宝贝数量及其推荐属性词.对于查询到的这些关 ...

  3. 【智能合约】编写复杂业务场景下的智能合约——可升级的智能合约设计模式(附Demo)

    可升级的以太坊智能合约设计模式 目录 可升级的以太坊智能合约设计模式 智能合约的现状 智能合约的局限 智能合约目前的发展方向 如何利用智能合约实现复杂的业务场景 智能合约设计模式的技术点 智能合约设计 ...

  4. 实时语音场景下的智能对话

    目录: 语音对话机器人: 热线小蜜 语音特色的文本驱动对话 语音语义驱动的双工对话 1.语音对话机器人: 热线小蜜 实时语音对话的挑战: 口语化:用户的表述呈现出含糊.冗长.不连续.并存在ASR噪声. ...

  5. 高并发场景下JVM调优实践之路

    一.背景 2021年2月,收到反馈,视频APP某核心接口高峰期响应慢,影响用户体验. 通过监控发现,接口响应慢主要是P99耗时高引起的,怀疑与该服务的GC有关,该服务典型的一个实例GC表现如下图: 可 ...

  6. 搜索推荐业务场景下的特征系统搭建

    转载:https://zhuanlan.zhihu.com/p/79874983?utm_source=wechat_session 前提:前阵子受朋友的邀约,结合自己在推荐搜索系统下的经验,对企业级 ...

  7. 电商类应用如何快速构建站内搜索和智能推荐能力?

    用户进入电商应用,锁定商品有两种路径: 一是用户明确要买的商品,通过文字.语音.图片等方式直接搜索定位商品: 二是用户随机浏览商品,系统根据用户喜好推荐,越懂得用户偏好,则越能激发用户购买欲. 商品智 ...

  8. 内容推荐场景下多模态语义召回的若干实践

    本系列将系统介绍召回技术在内容推荐的实践与总结. 第一篇:2021召回技术在内容推荐的实践总结 第二篇:CMDM:基于异构序列融合的多兴趣深度召回模型在内容平台的探索和实践 背景 内容分发平台已经成为 ...

  9. 复杂场景下智能汽车目标检测心得体会

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 引言 一.复杂背景目标检测的复杂是什么? 二.目标检测环境的复杂性包含哪些? 三.复杂场景目标检测的目标复杂性包含哪些? 四 ...

最新文章

  1. 【力扣网练习题】罗马数字转整数
  2. 第一课.Linux系统的介绍与ubuntu虚拟机安装
  3. 强化学习6——Policy-based RL(MC policy gradient)
  4. Spring注释详解
  5. linux中查找文件属于那个软件包的方法
  6. AI算法连载09:统计之决策树
  7. visual studio 2017 3月7日正式发布,同时庆祝visual Studio 20周年
  8. 路由器setup模式
  9. 实现京东金融-悬浮框效果
  10. 【PAT B1019/A1069】数字黑洞
  11. 神鹰实验室质量管理系统
  12. 用java编程实现java代码的次行代码风格转化为尾行代码风格
  13. ttk progress bar的显示
  14. 基于JAVA的ICQ系统的设计于实现
  15. 达梦数据库如何把EXCEL的数据导入到表中?
  16. JS的特性:异步 + 事件驱动
  17. MyBatis参数绑定
  18. 【Hbase】HBase入门教程
  19. 常用快递电子面单接口API对接方法
  20. 2020年3月31日 失眠问题解决之道 ~ 观想法②

热门文章

  1. c++rpg黑框游戏_NO总本色出演断智大师兄,电竞魔音主C人《超级猎杀》一战成名...
  2. python支持中文路径_打开python遍历中文目录得到的文件路径报错
  3. mysql execute指令_MYSQL简单命令
  4. 网站如何进行渠道跟踪_网站如何进行搜索引擎优化?
  5. python汉字转拼音代码_Python 汉字转换拼音代码
  6. java逸出_Java并发编程 - 对象的共享
  7. 数学难题html5小游戏答案,小学数学难题讲解及答案
  8. python生物数据分析_Python学生物统计-数据可视化-学习笔记5
  9. linux将db2账户添加到组_超实用的shell脚本--Linux安全加固设置,值得收藏
  10. 细粒度图像分类_1.1、 图片分类