导读:视频搜索是涉及信息检索,自然语言处理 ( NLP ),机器学习以及计算机视觉 ( CV ) 等多领域的综合应用场景,随着深度学习在这些领域的长足进展以及用户对视频生产和消费的广泛需求,视频搜索技术的发展在学术和工业界都取得了飞速的发展,本次直播将以优酷为例,分享视频搜索的算法实践,首先介绍优酷搜索的相关业务和搜索算法体系,从搜索相关性和排序算法的特点和挑战到技术实践方案的落地,最后会深入介绍优酷在多模态视频搜索上的探索和实践。
本次分享主要包括:
▌视频搜索简介
1. 业务背景
优酷搜索为整个阿里大文娱提供了一站式搜索服务,范围包括优酷所有搜索入口,如 App 和 OTT 等,还包括大麦和淘票票。搜索的内容包括有版权的影、剧、综、漫影视库,用户上传的 UPGC 视频内容,影人库,演出,小说资讯等,这些都是文娱搜索业务需求,优酷搜索为其提供统一的搜索服务。
2. 评估指标
搜索排序业务多目标的评估指标,如图所示,可以拆分成4个大类。搜索的用户价值主要体现在2个维度:
第一个维度为工具属性,指的是用户将搜索服务作为一个搜索工具,目标是找准找全。这是用户价值的基础,也是搜索的基础属性。从这个维度去评估搜索效果的好坏,主要从体验指标去衡量:跳出率、相关性、时效性、多样性等通用指标。视频搜索可播性是指由于受版权影响,有些视频在平台是不能播放的,能给用户提供更大价值的是那些可播的视频。此外,会用人工评测的方式对搜索的效果做横向纵向的对比,来衡量搜索的满意度。
第二个维度为分发属性,能让用户消费更多的内容,主要是视频观看的 VV 和消费时长,这些指标对搜索是非常重要的,是用户满意度的直接体现。搜索能够支持平台的宣发价值和广告会员的商业化价值,前提是服务好用户,用户体验好。
3. 搜索系统框架
上图是搜索系统的整体框架,在2017年初步完成了搜索引擎相关中间件服务的升级,实现和集团搜索技术的战略拉通。从一个 query 搜索过程来理解各个模块的功能,比如说用户搜"大明风华",用户在手机上发起这一次请求,接入搜索网关之后,search planer 把这个请求发送到 QP 服务,即 query 理解的一个服务,对 query 做意图判定,成分分析,把这些信息传递到中间的引擎模块去做相应的检索,如粗排和精排的逻辑,将结果返回回来,再到一个 RankService 排序服务。
整个框架中间层是引擎,下面是离线的索引服务,左边是机器学习平台,包括特征的流式计算,模型的在线学习,后面主要介绍排序服务模块。
4. 搜索算法框架
在引擎端,相关性主要是在 searcher 的精排下实现的,排序模型的介绍主要是预测模型这一层。整个排序服务包括预测模型、模型融合、业务策略,整体上保证了搜索体验和效率。
右图是整个搜索算法的大图,通过这里的介绍希望大家对视频搜索技术有一个全貌的理解,方便大家对后面内容的理解。
▌相关性和排序内容
1. 搜索相关性
这部分定义到一些具体的 query 和 doc 上,理解能够更全面一些。如上图:
下面分为4个层次详细分析:
结合这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%。
多模态视频搜索的应用场景是非常广泛,目前还没有做到故事级别的理解,这块是需要继续努力的方向。