FinOps有望降低企业50%+的云成本! 了解详情
写点什么

阿里文娱搜索算法实践与思考

  • 2020-04-22
  • 本文字数:6936 字

    阅读完需:约 23 分钟

阿里文娱搜索算法实践与思考

导读:视频搜索是涉及信息检索,自然语言处理 ( NLP ),机器学习以及计算机视觉 ( CV ) 等多领域的综合应用场景,随着深度学习在这些领域的长足进展以及用户对视频生产和消费的广泛需求,视频搜索技术的发展在学术和工业界都取得了飞速的发展,本文将以优酷为例,分享视频搜索的算法实践,首先介绍优酷搜索的相关业务和搜索算法体系,从搜索相关性和排序算法的特点和挑战到技术实践方案的落地,最后会深入介绍优酷在多模态视频搜索上的探索和实践。


本次分享主要包括


  • 视频搜索简介

  • 基础相关性和排序模型

  • 多模态视频搜索实践

视频搜索简介

1. 业务背景



优酷搜索为整个阿里大文娱提供了一站式搜索服务,范围包括优酷所有搜索入口,如 APP 和 OTT 等,还包括大麦和淘票票。搜索的内容包括有版权的 影、剧、综、漫 影视库,用户上传的 UPGC 视频内容,影人库,演出,小说资讯等,这些都是文娱搜索业务需求,优酷搜索为其提供统一的搜索服务。


2. 评估指标



搜索排序业务多目标的评估指标,如图所示,可以拆分成 4 个大类。搜索的用户价值主要体现在 2 个维度:


第一个维度为工具属性,指的是用户将搜索服务作为一个搜索工具,目标是找准找全。这是用户价值的基础,也是搜索的基础属性。从这个维度去评估搜索效果的好坏,主要从体验指标去衡量:跳出率、相关性、时效性、多样性等通用指标。视频搜索可播性是指由于受版权影响,有些视频在平台是不能播放的,能给用户提供更大价值的是那些可播的视频。此外,会用人工评测的方式对搜索的效果做横向纵向的对比,来衡量搜索的满意度。


第二个维度为分发属性,能让用户消费更多的内容,主要是视频观看的 VV 和消费时长,这些指标对搜索是非常重要的,是用户满意度的直接体现。搜索能够支持平台的宣发价值和广告会员的商业化价值,前提是服务好用户,用户体验好。


3. 搜索系统框架



上图是搜索系统的整体框架,在 2017 年初步完成了搜索引擎相关中间件服务的升级,实现和集团搜索技术的战略拉通。从一个 query 搜索过程来理解各个模块的功能,比如说用户搜"大明风华",用户在手机上发起这一次请求,接入搜索网关之后,search planer 把这个请求发送到 QP 服务,即 query 理解的一个服务,对 query 做意图判定,成分分析,把这些信息传递到中间的引擎模块去做相应的检索,如粗排和精排的逻辑,将结果返回回来,再到一个 RankService 排序服务。


整个框架中间层是引擎,下面是离线的索引服务,左边是机器学习平台,包括特征的流式计算,模型的在线学习,后面主要介绍排序服务模块。


4. 搜索算法框架



在引擎端,相关性主要是在 searcher 的精排下实现的,排序模型的介绍主要是预测模型这一层。整个排序服务包括预测模型、模型融合、业务策略,整体上保证了搜索体验和效率。


右图是整个搜索算法的大图,通过这里的介绍希望大家对视频搜索技术有一个全貌的理解,方便大家对后面内容的理解。


  • QP 服务在排序中的作用:首先在意图层面,会把用户意图细粒度的切分出来,对 query 的各个意图做成分分析,比如说 query 是"乡村爱情赵四跳舞",经过 QP 服务的成分分析后,判断乡村爱情属于一个节目名,赵四属于角色,跳舞是一个动作。

  • 意图识别后是排序和多媒体相关性,这两个内容后面再详细介绍。

  • 内容召回:主要是多媒体内容的理解,为什么要做多媒体内容理解,因为视频内容传递的信息非常丰富,不可能用文本标题全面表述,用户在搜索时表达需求差异非常大,存在语义鸿沟,各个业务的搜索都存在语义鸿沟,视频搜索中的鸿沟更大,所以不能把视频当成黑盒直接用标题概述。我们的问题是从什么维度去理解视频?得益于深度学习在各个领域的全面发展,现在有能力做相关技术,包括 OCR/ASR,对话的理解,通过 CV 的技术对人物、动作、物体的元素级的结构识别,视频的指纹,实体关联,比如某个视频是属于哪个 ip ( 电视剧/电影等 )。基于这些相关技术,不仅仅只是做标题的文本匹配,与相关性匹配密切的关联起来,能更好的帮助理解视频和视频间的关联关系。

  • 数据层:有实体的关系数据,能够通过技术挖掘这种关系;内容组织,通过图谱聚合、时效聚合、内容聚合,把内容聚合成更方便用户浏览的聚合形态。

相关性和排序内容

1. 搜索相关性



这部分定义到一些具体的 query 和 doc 上,理解能够更全面一些。如上图:


  • 第一类 query,"佟丽娅主演的电视剧远大前程"和 doc 在文本上没有直接关系。只有通过内容理解的方式才能把这个 query 和 doc 关联上。

  • 第二类 query,"法不容情国语"和对应的 doc 没有关系,要结合 NER 和内容理解的方式才能更准确,对 doc 的意图理解更好。

  • 第三类是语义层面的匹配,相关性这一块是需要多个层次的匹配的。


下面分为 4 个层次详细分析:



  • 基础特征。比较通用的是 term weight 和匹配矩阵,通过基础特征能够把文本匹配做的比较好。

  • 知识特征。对于知识特征的匹配需要其他辅助信息的补充才能做好的,首先通过内容理解的方式把 UPGC 视频中的一些元数据补充上去,利用 NER 等技术把视频的标题等成分识别准确。在这些基础之上,我们做 query 和 doc 之间的结构化的知识匹配,这块体验能够做的更好。

  • 后验特征。包括基于 query 点击的应用判断,知识结合做意图判断,意图和 doc 的匹配,Query_Anchor 是从 doc 维度统计的,哪些 query 是和 doc 是有关系的,能做一些文本的补充和意图补充,这种补充不是纯粹的统计,而是基于浏览模型,比如 UBM 和 DBN 等一些点击浏览的模型,去消除文本、吸引度的偏差,提高满意度,后面在相关性特征还会详细的去讲一下。

  • 语义。主要解决语义匹配,视频搜索存在很大的语义鸿沟,DSSM 表征形的 sentence 级别的语义向量去做匹配,这块是会在相关性层面去做。BERT 这一块是做知识蒸馏的方式,这块计算太复杂了,在排序层做的。SMT 不是在相关性和排序层面去使用的,是语义的扩展和 query 的改写,能丰富语义内容的召回。点击行为也是做一些语义层面的改写扩展。


结合这 4 个层次的匹配,是能够把搜索基础相关性的匹配做到一个比较好的状态。


2. 相关性数据集构建和特征体系



左图是相关数据集的构建流程,为了衡量相关性的效果,需要标注数据集。首先要有一个标注规范,主要结合实际业务和用户需求来设定,并没有通用的标准。数据集我们标注了 2、3 年,有几十万的数据,通过外包同学去标注,不仅标注相关性的等级,还会对同等级的样本做偏序级的标注。我们对标注的质量和效率比较关注,左边的方式是采用 active learning 的思想去提升标注效率和质量,降低标注的成本。数据集也分为验证集和训练集,验证集主要针对特定问题去构建,具有一定的针对性,对不同验证集解决完问题之后,不一定对线上体验有正向的效果,因为它会带来对其他维度变差的情况,所以我们需要训练集和回归集的验证。右图是我们相关性算法的主要特征,大家可以参考下。


3. 语义匹配



我们在 2017 年上线了一个 sentence 级别的语义匹配模型,模型结构比较通用简单,我们尝试迭代的过程比较多,具体参数是和语料相关的,不同业务参数差别比较大。需要特别指出,语料样本的选择,对语义模型特别关键。在日志处理过程中,没有点击的日志不能当作语义的负样本,垂直搜索引擎语义类 query 相对还是比较少的,需要借助外部的预料做训练,这和我们集团的一些搜索比如神马搜索,搜索日志对语义搜索效果的提升是非常大的。


表征形的语义模型,有一个好处是,doc 端的特征是可以离线计算的,可以在相关性层面快速高效的去做语义上的计算,确保基本的语义内容能够被召回,能够排到前面去,能够送到上层的重排序服务上,ranking service 上还有比较多的语义内容,能够做一些精细化的语义计算。


4. 排序特征体系



排序特征体系,包括各个业务领域类的,基础匹配类的,query 统计类的。有一些是视频平台特有的,比如说实时的动态的处于宣发周期的一些特征,对控制节目的排序,可播性,宣发的效果是特别有帮助的;另外,内容质量的评估对视频平台是非常重要的,优酷的人工智能部有一个非常给力的 CV 团队,提供基于视频这种无参考质量的评价框架,能够对低层次的一些特征,比如对比度,亮度,中等的模糊块效应的失真,并综合各种画面质量去解决 UPGC 视频失真,模糊质量评价的难点,能够从视觉层面去理解视频,还有封面图/标题的质量去评判,可以很好的区分好视频和差视频。


在用户层面,用户行为的表征在很多宽泛搜索里都会应用,比如用户在频道页的搜索排序,OGC 节目宽泛意图的检索场面,用的会比较多。因为在很多通用的搜索中,这种宽泛意图的比率比较大。


5. 表征学习



再介绍一个我们 17、18 年和达摩院一起把表征学习在视频搜索落地的方案。


上图是表征学习的模型,第一层是特征预编码的编码层,用视频元素、搜索意图、用户,这 3 类特征去分析。在用户维度,又划分了用户 id 和用户观看视频的序列;在搜索意图维度,有搜索的 id,搜索词的视频表达和文本编码的表达。在视频层,包括视频统计特征、视频播放点击量、视频文本编码、视频在整个 session 期间和其他视频的关系数据,来构建这些不同的特征域。


在第 2 层和第 3 层,这 2 个不同特征域之间的网络结构是相互独立的,通过稀疏的编码优化能够全链接到第 1 层。可以对高维特征进行降维,把高维特征信息投影到低维的向量空间中。第 4 层把不同域的表征信息,内部的编码,综合到一起,形成一个综合的多模态的向量融合,再经过上面的 2 层的全链接实现搜索用户意图和搜索视频维度的排序。


整个模型在性能优化后再计算层面是没有什么性能问题的,上线后分发效率提高明显,分发 ts 观看时长增加。


我们在上线后同样看到了一些问题:这种单一目标的排序模型,它的优化目标是 ts,就会忽略一些基本体验。比如,相关性约束对整个体验来说不一定在提高用户体验,可能在头部的一些效果上,我们行为比较多的一些搜索 query 上体验是提升了,但是中长尾的一些效果上其实是比较难以保证的,所以后面我们也是做了不同的尝试,把表征学习和其它的一些维度的排序效果相融合。


6. 多目标 Deep LTR



上图为 19 年在排序方面的一些实践,多目标的深度排序学习。这里的多目标包括:相关性目标,rank 的 loss,entity loss。为什么有这些目标呢?我们其实是做一个整体的目标学习,我们要确保涵盖相关性技术体验的 loss,分发效率的排序 loss,实体匹配上的 loss。相对于表征学习的单一目标,我们这里要实现一个端对端的多目标的。


样本标注方面要综合时长和播放完成比,如果我们按照存点击数据,很多情况是和 ts 目标不一致的。如果只考虑视频时长,那么长视频就会被放在前面,如果只考虑播放完成比,那么短视频就会被放在前面,因为短视频就几十秒,很快就能播放完,长视频几十分钟,有的几个小时,不容易看完。所以我们会综合时长和播放完成比,对时长做分段的处理,在相同时长下作横向比较,形成一个不同时长视频的 label 分级,引导目标去学习。


这里正负样本采样比例 1:8,是通过我们不断迭代调整的结果,并没有一个通用的方法。

多模态视频搜索

1. 多模态视频搜索


多模态搜索就是将语音,文字,图像等各种模态集中起来一起搜索。学术上也有很多和多模态搜索关联的,比如实例搜索,给定一个实例图像,搜索相关的视频片断,将视频转成文本,VTT 任务;AVS 视频搜索,输入一个文本,在视频中搜索相关的视频。这和我们今天的主题多模态视频搜索是非常契合的,学术界的方法也是比较多的,如把 query 和视频都映射到中间的一个维度,一个概念空间里面,再做相似度的匹配排序;最近也有一种思想是 video bert,采用 transformer 的思想把 video 通过端对端的解决方法,基于多模态视频搜索技术可以有很多新的搜索体验,下面讲一些优酷的实践。


刚刚讲的学术界方法对短小视频搜索效果是比较好的,但对长视频很难做到准确,视频很长,覆盖的范围很广,用这种表征的方式不容易覆盖那么多丰富的内容的,所以对工业界的视频搜索,不是端对端的解决方案,现在的做法是将视频模态信息通过降维的方式,都转换成文本的模态,对视频内容做细粒度的内容拆解,将图像,动作,人物,声音这些背景信息,通过 CV 检测方法识别出来,去做标签化,去完成降维。另外一种降维的方式是通过 OCR 和 ASR,光学文本的识别和语音识别的技术将视频中的对话信息转化成文字,关键字和主题的抽取,再去形成事件的分析和概念主题的理解。



一个完整的视频可以分出不同的片段,然后形成 shot,关键帧,关键元素,通过对关键元素的分析,可以把动作场景人物做一些识别。举个例子,如上图,通过人脸识别可以识别出这个片段中出现了哪些人,"周六夜现场"能检测出岳云鹏,陈赫;"晓说"能检测出高晓松,通过 OCR/ASR 可以把视频中的对话结构化出来,然后做一些关键词的抽取。



接下来将作更深次的讨论,如上图,从视频标题看是陶瓷,如果不做内容结构的分析,根本不知道里面在说什么。所以要对文本进行分析理解,在分析理解时,会有一个难点:这么多文字,需要一个完整的实体知识库,视频内容涉及的领域非常广,包含全行业的丰富的实体。辅助我们抽取核心内容的元素,比如"伯特格尔"是谁,是个人物,“塞夫勒”,“麦森"这些地名需要理解,以及实体链接和实体之间的关系的推理。这个视频是介绍欧洲陶瓷发展历史的,欧洲陶瓷是从哪里开始的,是从"塞夫勒"开始,是由"伯特格尔"这个炼金师发现出来的,很多对话内容是通过主体引用,要理解指代的实体,上下文引用的主体是需要识别出来的;另外一个就是实体之间的关系,比如"塞夫勒”、"麦森"是欧洲的城市,和中国,日本是什么关系,这种实体之间的关系是需要有的,否则对讲的什么事情是很难理解的,需要知识图谱辅助。在实体知识库的支撑下,候选的关键字通过分类模型得到关键字分级,分成核心关键词,相关关键词,提及的关键词,分完级之后,在相关性匹配上做的更有针对性。


2. 视频元素级知识图谱



前面是视频理解的方式,如右图视频标题是李健 -《风吹麦浪》( 春晚歌曲 ),但是他是和孙俪一起唱的,标题里没有孙俪,用户经常搜索的内容是"孙俪李健合唱的风吹麦浪", 我们需要通过人物识别的方式把视频中的关键人物识别出来。在视频搜索中,需要多模态信息的辅助的,才能提高搜索准确率。左边是"甄缳传",通过视频元素级识别,可以把关键人物识别出来,并且可以把人物和角色,人物和 ip 之间的关系获取出来,检索时可以将具体人物出现的关键位置检索出来,以及台词,歌词,内容关键的一个场景的起止时间,如果用户在搜索"甄子丹的打斗视频",我们有相应的内容视频的聚合数据,用户可以搜到开始打斗的起始时间的。


3. 效果案例



再举几个内容关键词在多模态视频搜索中的应用,如上图,搜索"军情解码张召忠",搜索结果中标蓝的这些是通过内容理解,人脸识别,多模态搜索召回的。搜索"军武次位面虎式坦克",通过对话理解提取出来的关键词,搜索"晓说以色列"也是类似的。这部分在搜索所占的比率不是很大,但是触发的效果还是非常明显的,效果提升 100%。


多模态视频搜索的应用场景是非常广泛,目前还没有做到故事级别的理解,这块是需要继续努力的方向。


今天的分享就到这里,谢谢大家。


作者介绍


若仁,阿里文娱高级算法专家


优酷人工智能平台部搜索相关性和排序算法负责人,负责搜索相关性等基础体验优化和排序分发效率的提升。


本文来自 DataFunTalk


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247499175&idx=1&sn=1c398e92f0712e4e5f545759d0a85692&chksm=fbd74fcbcca0c6dd11a04b493827ffdda06c69f6013b95c74c54c14f596cab0f303751f9e14d&scene=27#wechat_redirect


2020-04-22 14:054396

评论

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

97 道大厂 Java 核心面试题出炉,来试试看你会几道题?

Java 程序员 后端

Chrome上的这些灵魂插件太猛了,碾压其他同款,java架构师成长直通车分享

Java 程序员 后端

23种设计模式与六大原则看了又忘,忘了又看?是你看的方法不对

Java 程序员 后端

4年Java程序员十面阿里终拿下offer,评级P6+年薪30-40w无股票

Java 程序员 后端

5分钟掌握JVM常用选项及相关知识,工作面试够用了,dubbo和zkeper的面试题

Java 程序员 后端

@RequestMapping属性详解 - SpringMVC高手进阶,2021金九银十

Java 程序员 后端

21 利用分布式消息队列降低系统耦合性,java后端项目实战

Java 程序员 后端

77道Spring面试题以及参考答案(2021年最新版),java面试题加答案

Java 程序员 后端

Alibaba船新出品“Java架构核心宝典”,java教程视频百度网盘

Java 程序员 后端

BATJ真题突击:Java基础+JVM,springboot和vue实战视频

Java 程序员 后端

Bootstrap框架快速上手,这位阿里P7大牛分析总结的属实到位

Java 程序员 后端

47天洒热血复习,我成功“挤进,java多线程面试算法

Java 程序员 后端

GitHub标星139K的:“Linux系统开发教程”

收到请回复

Linux 架构 后端 计算机

5份Java高级工程师Offer=1套pdf+10本书+414道大厂Java面试真题(1)

Java 程序员 后端

5年开发经验,面试10分钟后,面试者,转疯了

Java 程序员 后端

6年开发,五面阿里,耗时3月系统梳理Java全栈知识点,劲爆

Java 程序员 后端

ACID 过时?用 Sagas 搞定数据一致性,面试字节跳动的Java工程师该怎么准备

Java 程序员 后端

CDH5部署三部曲之二:部署和设置,高薪程序员必会

Java 程序员 后端

CNCF 官方大使张磊:什么是云原生?,一个Java程序员的面试心得

Java 程序员 后端

Docker下,两分钟极速体验Nacos配置中心,mysql视频教程百度网盘

Java 程序员 后端

5份Java高级工程师Offer=1套pdf+10本书+414道大厂Java面试真题

Java 程序员 后端

AlibabaP8架构师整理,283页的Java核心资料pdf文档,学会后月薪4W没问题

Java 程序员 后端

30天消化MyBatis源码解析笔记,吊打面试官,offer接到手软

Java 程序员 后端

43 道检验基础的 JavaScript 面试题,一招教你看懂Netty

Java 程序员 后端

9000字通俗易懂的讲解下Java注解,你还看不明白?,linux操作系统基础与应用答案

Java 程序员 后端

Anaconda安装,linux操作系统学习

Java 程序员 后端

Apache Log4j2详解,【高级Java架构师系统学习

Java 程序员 后端

BAT互联网大厂JAVA岗高频面试题总结,看完offer成功率再翻一番

Java 程序员 后端

CoProcessFunction实战三部曲之一:基本功能,软件技术java工程师方向

Java 程序员 后端

32 岁的我裸辞了,八年 Java 老鸟,只因薪水被应届生倒挂

Java 程序员 后端

99%的面试会问到的Redis面试题Redis面试必磕,mybatis面试题2020

Java 程序员 后端

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
阿里文娱搜索算法实践与思考_AI_DataFunTalk_InfoQ精选文章