编辑整理:林亚飞 美团 出品平台:DataFunTalk 导读:图像、文本和语音是人类最重要信息传播载体,这几个领域的研究也都在这几年得到了快速的发展。这里主要针对图像和文本进行感知建模,分别从图像预训练和图文多模态预训练等角度简述相关预训练任务,及其对信息流业务中各类内容理解任务的影响,主要内容如下:
01 Data as fuel——大规模预训练数据的获取与赋能 1. Data Hungry For AI如何破局? 标注数据有限一直是困扰AI任务的一个痛点,这主要由于面向具体任务去标注数据往往是比较耗时耗力的。过往研究中衍生出两种范式来解决这个问题:
2. 数据从哪里来 02 图像及多模态预训练模型的典型构建与评估方法 预训练的目的是引导下游任务获得更好的性能。为此,我们之前往往采用比较容易得到的分类数据作为预训练任务,例如ImageNet分类。而这两年受NLP领域的影响,自监督方法在图像和多模态领域不断被深耕。一般情况下,自监督任务可以被划分为判别方法和生成方法,其中最具代表性的是对比学习的判别方法和数据重构的生成方法。 Hinton团队的SimCLR系列以及何恺明团队的MoCo系列让对比学习在图像和多模态领域掀起了一波热潮,这些方法通常会根据一些特性来构造正负样本对,比如颜色与几何的不变性、同一类别的相似性、上下文内容的相关性,以及多模态的一致性。在数据重构方面,微软的BEIT以及何恺明团队的MAE等方法则将适用于文本的mask-and-predict方法扩展到视觉领域。多模态预训练方法则集合了不同模态数据的mask-and-predict的操作(包括MLM,MIM,MFM等),典型方法有Salesforce的ALBEF和微软的VLMO等。 1. 对比学习方法 ① 对比学习的基本观点 对比学习的基本观点如图所示,其中f(x)可以理解为一个样本的Embedding函数,S表示一个相似性函数,对比学习的核心思想就是让当前样本与正样本的相似性远大于与负样本的相似性。 在对比学习中,一般所用到的损失函数是infoNCE,该公式中log的部分就是求通过正样本对和多个负样本对的相似性,求出集合中的正样本对相似性的softmax值。 为了得到更好的一个性能对比,学习大多数聚焦于怎样定义正负样本,这里套用列夫·托尔斯泰在《安娜·卡列尼娜》中的一句名言“幸福的家庭是相似的,不幸的家庭各有各的不幸”。关于正负样本的定义其实就是负样本的一个边界问题,通常需要在对比学习中需要构造非常多的负样本才能较好地确定相似和不相似的边界。 ② 如何构造对比学习的正负样本对 是不是所有的方法都需要负样本对越来越多?接下来通过一些具体的方法来回答这个问题。 如图所示: (a)模型直接从模型的输入中构造正负样本对,Q用于处理正样本,K用于处理负样本,这种情况下肯定是样本越多越好,因为样本越多,负样本对的也越多,所以这要求模型在训练过程中,BatchSize就是越大越好。 (b)模型采用了一个存储单元(Memory Bank)来存储负样本,在实际训练中可以采样出一些难例做对比,这大大缓解了对训练的BatchSize的要求。 (c)模型采用动量编码器来构造训练过程中的负样本的LookUp字典,一般也会结合Memory Bank,比如MoCo-V2模型。 (d)模型通过聚类来构造正负样本的对比,聚类的作用就是为了进行样本降噪,从而提高泛化能力。 ③ 对比学习特点和技巧
2. 数据重构方法 重构方法能否再在图像上获得很好的特征表示? 在图像上的重构方法争议主要就在于像素点的局部相关性和语义GAP,一个非常巧妙的策略就是让像素点相关性推断变得困难,并采用一个轻量级的网络去重构像素,重构困难了,就需要加入一些常识和想象力,这助于构建趋近于人的认知的表示特征,缩小语义GAP,轻量级网络则能更好地处理一些局部相关性。 对于重构方式也存在一些争议,主要争议在于重构token,还是重构像素。这两个方向的代表作主要有微软的BEIT和PeCo,以及何恺明团队的MAE和微软的SimMIM。对于重构token,BEIT给出了一个特别简洁的图示,这是一个VAE的框架,可以模仿BERT对具备语义信息的token进行mask and predict;对于重构像素,则需要多加一个Decoder,采用一个轻量级的结构进行一个图像块儿的数据恢复。至于哪个策略更优,目前来说并没有定论。 3. 图像及多模态预训练模型的典型构建方法 对于对比学习和数据重构方法,下表中给出一些模块,MLM, MIM, MFM分别是针对文本、图像和视频帧的mask and predict,Decoder主要是用于还原图像的原始像素,Momentum则表示是否采用动量方法来更新模型参数,Cluster表示是否对Embedding进行聚类,Negative主要用于对比学习中构造负样本对,ITM表示是否使用跨模态图文匹配。 可以看出:越是最近的SOTA工作,聚合的这些模块就越多。像Florence模型,虽然在基础模型中只用到对比学习,但在面向特定任务的预训练模型中使用了很多数据重构方法。 4. 图像及多模态预训练模型的评估方式 评价预训练效果好坏的标准一般有两个,一个是Embedding的区分能力,比如不同类型的Spearman系数以及在ImageNet上面的knn聚类效果等;第二是下游分类或检索等任务的收敛速度、微调后的技术指标等,具体为以下四种:
5. 监督与自监督预训练模型的区别与联系 监督与自监督方法学的表示特征是一致的吗? Apple公司的一个研究帮我们部分解答了这个疑惑,下图是Resnet50的SimCLR自监督参数和ImageNet分类预训练参数,其中CKA是评估参数相似度的指标,可以看出前几层的相似性比较高,这就表明监督预训练和非监督的预训练都有一定的共识基础;最后几层的差异性比较大,表明预训练模型的表示能力其实跟任务的相关性有关系,具体可总结为以下两点:
03 信息流业务中图像预训练方法探索与实践 1. 信息流业务中存在的问题 在实际的信息流业务中,浏览器端的监管还是比较严的,对于发布到平台的文章和视频都需要审核,而完全采用人工审核的话,成本将非常高,所以一般采用初筛加复审的模式,这就催生了信息流业务中有很多模型,也导致了标注需求量非常大,基于这一背景,通过预训练构造图像的通用表征是非常有意义的,这将大减需求,做到降本增效的一个效果。 这里面挑战主要来源于信息流业务中的内容,涉及范围特别广,有近百垂类,像综艺、娱乐、影视、美食、直播等,导致内容多样甚至不同类的任务目标也不一样。比如,有的时候需要解析画面风格,有的需要解析语义内容。 (a)挑战:涉及近百垂类数据,内容多样,任务目标不一致(风格/语义) (b)目标:适应不同需求,例如智能封面图涉及图片质量、图文相关性等 2. 图像预训练过程效果分析 图像预训练的方法有很多,这里面我们以MoCo-V2来做一个验证示例。一般情况下,我们不会直接拿大量的数据和大模型直接做测试,而是先在通用数据集或者小规模数据集上做个测试,下面给出三个测试示例。 第一个示例,我们可能很想知道,随机初始化后做自监督预训练,和我们采用ImageNet分类初始化后做自监督预训练会有什么区别?如下图所示,橘黄色的线是用ImageNet初始化的收敛效果,蓝色的线是随机初始化的收敛效果,可以看出ImageNet初始化的收敛速度非常快,最终loss相近,但ImageNet初始化的效果会略好一点。 第二个示例,我们看一下BatchSize的影响,这里在CIFAR10上面做了一个线性评估,可以看出BatchSize取1024时,收敛最快,性能指标最好,表明MoCo-V2对BatchSize要求并不是非常高,这与之前对比学习方法的分析结果一致。 第三个示例,我们看一下结构微调和节点测试,这里采用了Linear Head做节点测试,并比较了MLP Head与Linear Head的性能差异。关于为什么采用MLP Head进行预训练和微调能够提升精度的问题,可以参考SimCLR的相关实验比较。 3. 图像预训练开发框架 经过前面的实验验证,我们发现自监督预训练在很多业务模型上面有一定的改进效果,所以我们动手设计了一套预训练与多模态的框架。在该框架中,Backbone模型主要包括ResNet、EfficientNet、VIT和Swin等,文本部分则在腾讯自研的荔枝和神舟模型基础上开发,包括TinyBERT、BERT、XLarge等。在预训练方法上也复现了经典的MoCo、SimCLR、BYOL、SimMIM、BEIT、MAE、CLIP、ALBEF等工作。下游任务主要是我们业务上面的一些任务,包含清晰度、美观度等。自监督训练和下游微调也都模仿主流的一些框架进行开展,技术和业务指标都可以在框架中进行评估。 4. 业务效果验证 我们通过这些框架测试了一些模型来观察模型的效果,最终采用的方案是利用自监督加监督的方式来获得预训练模型。监督主要是一些分类和回归任务,随机挑了一些任务,并选择了几个模型进行了比较,模型的参数在20M~30M,用到的模型有ResNet, EfficientNet, Swin-T。如下图所示,在模型紧凑性方面从上到下是依次递增的,所以在自监督性能指标上面提升上是减少的,但是绝对指标上Swin-T比ResNet在这几项任务上普遍高出5~8个点。 下图是不同模块组合和多任务的组合,可以看出多任务和大模型蒸馏的效果比较显著。我们在业务模型上面的指标往往是定量的,以便推荐做策略优化时,比如要清晰和模糊的准召都达到85%,那么在达到同样的指标的情况下,采用一些好的预训练模型可以节约一些样本量。 下图给出了图片低俗的样本减少实验,自监督加监督方案达到ImageNet_1K预训练的微调指标只需一半数据。这里面其实也有一些疑问,就是下游任务数据很小的时候,它们效果是差不多的,这也验证了之前的一个共识基础。要想提高这个指标,就涉及到一些比如Few-Shot和Zero-shot Learning的一些问题。表现在预训练上就是要做一些模板,面向这种任务设计一些模板。 5. 关于图像预训练的若干思考
(b)DataFountain (https://www./competitions) 04 信息流业务中图文多模态预训练方法探索与实践 1. 为什么图文多模态会火? 视觉和语言是人类感知世界的两个基本渠道,建立能够共同理解视觉和语言数据的一个智能机器一直是人工智能的长期目标。视觉和语言预训练已经成为解决这个问题的一个有效方式。下图给出一些典型的场景任务,涉及到VQA以及多模态的一些验证,还有一些Image Caption的任务。 下图是多模态预训练的一种典型数据,很容易从社交网站上得到一些图片及他的描述,然后对视觉和语言的部分进行拆分。这为图文多模态预训练提供了很好的数据基础。 2. 图文多模态预训练下游任务 3. 图文多模态预训练方法 多模态预训练的方法一般包括三大类:单流、双流以及单流加双流这三种方式。 单流的方法就是将图像和文本的Embedding直接塞进模型。以UNITER为代表的单流方法就是采用多模态编码来联合建模图像和文本,然而从区域中提取的图片特征和文本词向量是没有对齐的,这是单流的模型面临的一个挑战,另外其中的一些模块如MRM要预先通过物体目标检测来提取图像特征,这也需要大量的标注和计算。 双流模型中CLIP是最典型的,如图所示,首先是图像和文本的编码器分别对图像和文本进行编码,然后通过对比学习拉近编码空间,正负样本对的构造方式也类似SimCLR ,即在同一Batch内组对的就是正样本对,没有组对的就是负样本。以CLIP为代表的双流方法缺乏对图像和文本之间复杂的互动建模的能力,因此它不怎么擅长需要细粒度图像文本理解的一些任务。 单流加双流的一个典型的模型是ALBEF,其结构和特点如图所示。这种结构相较于上述两种结构而言,能够扬长避短,其性能也相对较高。 4. 业务效果验证 我们应用ALBEF做了一些实验,数据集包括搜集到的公开数据和脱敏数据,以及业务上面脱敏后图文和视频链路的数据。对模型的Backbone和数据集大小做了几组实验,复现的最佳效果比论文中略差一点,但也发现了一些结论,实验结果与结论如下图所示。 5. 优化与效果对比 测试完模型(ALBEF)的基本性能后,一般会开展优化“三板斧”,并应用到业务项目中去。通过下图的实验结果可以看出,通过这一轮升级以后,在业务上面准召提高比较明显。另外,在我们部门主办的2021QQ浏览器大赛的视频Embedding比赛中,我们以“WenLan”模型做为基准,直接用ALBEF时完败;然后加了一些视频类目信息还是不行,又加了一些Tag的信息(包括评论、摘要),效果提升的比较显著;接下来对数据做了扩展,效果又提高了一点;最后对模型进行了升级,再加上数据融合的方法,从而取得了比较好的效果。 6. 多模态预训练小结 05 总结 今天的分享就到这里,谢谢大家。 |
|