导读:本文是“数据拾光者”专栏的第三十六篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇主要介绍下腾讯2021广告大赛多模态视频广告标签baseline以及优化思路,对于希望解锁视频内容理解的小伙伴可能有所帮助。
摘要:本篇主要介绍下腾讯2021广告大赛多模态视频广告标签baseline以及优化思路。首先介绍参加比赛的背景,相比于单模态文本理解,多模态视频内容的理解更具挑战;然后介绍了官方提供的一个baseline,包括系统说明、系统整体结构以及baseline源码介绍和运行说明;最后结合工作中的项目实践,介绍了关于优化的几个思路,主要分成从模型层面优化和样本层面优化。对于希望解锁视频内容理解的小伙伴可能有所帮助。
下面主要按照如下思维导图进行学习分享:
01
背景介绍
还是老套路介绍下背景,最近腾讯2021广告大赛开始了,有两个题目,第一个题目是视频广告秒级语义解析,第二个题目是多模态视频广告标签。随着视频尤其是短视频越来越火,人们在视频上投入的时间也越来越多。想要更深入的理解用户,挖掘用户的兴趣,那么对于视频数据源内容的理解也变得越来越重要,所以我选择了第二个题目《多模态视频广告标签》。这个任务本质上是一个视频分类任务,和我当前仅仅理解文本数据相比,视频内容不仅包括文本(视频字幕信息),而且包括视频、音频和图片等多模态信息,可以说更具挑战,想通过这个比赛学习下视频内容理解相关的知识,为后续理解视频内容做技术储备。下面是官方赛题说明图:
图1 腾讯2021广告大赛说明图
比赛官方地址在这里:
https://algo.qq.com/
02
一个不错的baseline
上面介绍了背景,本节主要介绍官方提供的一个baseline,通过这个例子可以快速上手视频分类任务,然后基于这个任务可以尝试各种魔改操作。
2.1 系统说明
多模态视频广告标签任务本质上是一个视频分类任务。视频相比于传统的文本、图片模态来说更为复杂,同时包括视频、音频、图片和文本内容,想要很好的理解视频数据源,那么需要同时理解这四种模态的数据,所以任务的难度大大提升。可以说既需要懂CV知识,还需要懂NLP知识等等,这种任务难度升级,对应的挑战也升级,同时如果能搞定这类任务那么你的技术也会升级,对应的回报也会升级(主要是钱)。明确了动力需求,那么通过下图简单理解下多模态视频广告标签系统:
图2 多模态视频广告标签系统说明
通过上图可以看出,整个系统的输入是视频,输出是视频的标签,整体流程如下:首先会将视频数据抽取视频、音频、文本和图片四种模态的数据,然后获取各模态数据对应的embedding表示向量,接着进行多模态融合,最后输出对应的标签得分。标签总共包括四类,分别是呈现形式、场景、风格和叙事。这四类标签共有82个标签,所以对我们来说就是一个82分类任务,只不过最后提交的比赛数据是每条视频选择topN个标签。
2.2 系统整体结构
通过上面系统说明应该对赛题任务有了更加形象的理解,接下来看看官方提供的baseline的系统整体结构:
图3 官方baseline系统整体结构
如上图所示,系统整体的输入视频内容解析得到的视频信息、音频信息、图片信息和文字信息,输出是82分类得分。得到各模态数据信息之后会经过特征抽取操作,视频和音频信息主要通过NeXtVLAD模型进行抽取特征,图片信息通过resnet_v2_50模型抽取特征,文本信息则通过我们比较熟悉的BERT模型来抽取特征;各模态特征抽取完成之后会通过fusion layer进行特征融合操作;最后会将融合之后的特征用于分类。
2.3 baseline源码介绍和运行说明
Baseline项目工程如下图所示:
图4 baseline项目工程
Baseline项目工程如上图所示,run.sh是程序运行脚本,通过如下命令完成项目初始化和环境搭建:
sudo chmod a x ./init.sh &&./init.sh run
通过如下命令进行模型训练流程:
sudo chmod a x ./run.sh && ./run.shtrain
通过如下命令进行模型预测流程:
sudo chmod a x./run.sh && ./run.sh testcheckpoints/tagging5k_temp/export/step_6000_0.7328
上图中通过下划线重点说明了对于多模态数据的特征抽取流程,其中红色代表对于视频、音频、文本和图片四种模态的特征抽取代码,绿色代表四种模态特征融合代码,黄色代表分类模块代码。个人感觉可以重点学习下项目的配置文件说明,因为最近刚好负责搭建半监督框架项目,感觉baseline中配置文件的管理特别规范,学习很多,所以这里进行详细说明配置文件config.tagging.5k.yaml:
图5 项目配置文件
通过配置文件可以很方便的决定使用哪些模态的数据特征,同时对于不同模态使用对应的特征抽取模型定义和使用也非常方面。同时还包括特征融合层和分类层说明,整个配置文件简洁清晰,使用者可以很方便的进行项目配置和使用。
03
关于优化的几个思路
借鉴实际工作中的经验,关于baseline的优化思路主要分成模型层面优化和样本层面优化。
3.1 模型层面优化
(1) 特征抽取层优化:获取各模态更优质的特征embedding向量
- 可以通过对比学习获得图片和文本高质量的embedding向量。之前看到微博通过对比学习将图片和文本信息映射到同一向量表示空间,从而得到更好的embedding向量信息。这里可以进行扩展,将视频、音频、图片和文本都映射到同一表示空间,可能会得到不错的效果;
- 使用更多的数据微调预训练模型获取更好的模型参数。以文本信息为例,可以使用更好的预训练模型比如RoBERTa替代原生BERT等,同时使用线上的数据来微调RoBERTa模型,从而可以得到更好的预训练模型。
(2) 特征融合层优化:Baseline采用的是SE融合方式,参考之前阿里DIN模型的思路,可以对多模态特征进行concat、sum、avg等融合操作
(3) 分类层优化:baseline采用的是LogisticModel,可以使用更复杂的分类层等进行操作。模型层面的优化总结下来就是分别对特征抽取层、特征融合层和分类层分别进行优化。
3.2 样本层面优化
相比于模型层面优化,我其实更趋向于在样本层面做更多的优化工作。因为在实际的NLP工作实践中样本优化带来的收益远大于模型层面优化,主要原因在于现在NLP任务一般都会考虑上BERT等前沿模型,从模型层面来看已经是很好的基线。在这样的前提下样本层面的优化就可以带来更多的收益。样本层面优化的核心目的是增加训练数据,主要有以下几个思路:
(1)获取更多的比赛相关的视频数据集。这里可以是公共数据集,也可以尽量找比赛相关的视频数据集;
(2)可以通过样本增强扩展数据集。比如我尝试过对图片、文本模态数据源进行样本增强,那么可以通过这种方式可以扩展训练集;
(3)通过半监督训练方式增加伪标签样本进行训练流程。
04
总结
本篇主要介绍下腾讯2021广告大赛多模态视频广告标签baseline以及优化思路。首先介绍参加比赛的背景,相比于单模态文本理解,多模态视频内容的理解更具挑战;然后介绍了官方提供的一个baseline,包括系统说明、系统整体结构以及baseline源码介绍和运行说明;最后结合工作中的项目实践,介绍了关于优化的几个思路,主要分成从模型层面优化和样本层面优化。对于希望解锁视频内容理解的小伙伴可能有所帮助。