导读:为了达到更加拟人逼真的交互效果和体验,新一代智能体的发展,一定会向着多模态的人机交互的范式转变。因此,如何设计多模态预训练的架构,使多模态预训练模型能够在广泛的下游任务上的效果得到整体的提升,具有非常高的应用价值。
本次分享题目为多模态预训练技术与应用,主要介绍:
- 多模态预训练技术概述
- 小布智能中心多模态预训练技术
- 多模态预训练模型应用场景
- 总结与回顾
分享嘉宾|王聪 OPPO 高级算法工程师
编辑整理|扈应 贵州大学
出品社区|DataFun
01
多模态预训练技术概述
1. 多模态预训练技术概述
当前,随着科技的发展,人机交互模式从传统的键盘交互逐步走向更加智能的交互模式,如智能语音助手,已经成为了各类智能产品的标配。人与人之间的交流,其实是一种多模态的交流方式:除了听声音理解话语中的意思,还可以辅助观察对方的表情、肢体动作等信息,更全面地理解对方的内容与意图。因此,为了达到更加拟人逼真的交互效果和体验,新一代智能体的发展,一定会向着多模态的人机交互的范式转变。
2. 什么是多模态预训练
所谓的预训练,是基于某种深度学习的网络架构,在海量的数据上训练好的一组权重。基于该网络架构和权重,作为某一具体下游任务的主干网络,并提供初始化的参数,使下游任务有较好的训练起点。在减少特征空间探索的同时,实现更好的算法性能。对于传统的单模态预训练技术,大家熟知的有 NLP 领域的 BERT、GPT 等,CV 领域的 ResNet、Vision Transformer 等。而多模态预训练希望能够打通不同模态之间的语义鸿沟,同时提升多个模态的学习效果。最简单的例子是如一组图像文本对,希望可以学习到文本中的“狗”字与图像描述中的狗的对应关系。
3. 为什么需要多模态预训练
目前,跨模态的交互场景层出不穷,传统的单模态学习已经难以满足一些应用的需求。随着图文、视频、语音等数据的激增,为多模态预训练技术创造了有利的条件。
在此背景下,可以充分利用大数据和大模型的优势,提升深度学习模型的可迁移性和泛化能力,从全流程上降低各种下游任务的模型训练成本,提供跨模态的特征,使模型具有更多的应用场景,提供新的软件产品。因此,如何设计多模态预训练的架构,使多模态预训练模型能够在广泛的下游任务上的效果得到整体的提升,具有非常高的应用价值。
4. 多模态预训练技术概述
以图文双模态预训练为例,从模型架构角度主要分为单流模型或双流模型。单流模型把不同模态的特征序列先拼接起来,然后通过 Transformer 结构进行自注意力预训练。而双流模型是指分别使用单模编码器进行编码,然后进行对比学习,或者使用跨模态的 Transformer 实现两个模态的信息交融。
在预训练过程中,开发者们通常会设计一个或者多个预训练任务来监督整个预训练的过程,包括单模态的自监督任务,比如图像自监督训练、文本自监督训练、对比学习以及模态对齐任务等。各种预训练任务的内部设计细节往往会有所不同,都具有一定的探索空间。
此外,特征编码器的设计也是十分关键的一步,好的特征编码器可以缩小特征探索的空间,提升整个预训练模型的性能。
5. 现有图文预训练经典案例
表中是当前图文预训练的经典案例。此处应意识到,在进行多模态预训练模型的研究时,不必盲目追求超大规模的模型,需要根据实际算力和业务需要进行设计。
--
02
小布智能中心多模态预训练技术
1. 自研中文图文数据集——OPPOVL:数据集
性能强大的预训练模型往往需要海量数据进行训练,如阿里的海量电商数据、智源的 WenLan 和 WenLan2.0 数据集、华为的 Wukong 数据集等。为构建能涵盖大部分中文场景、领域的数据集,保证数据集的实时性,我们从近一年的本土新闻、百科全书等收集获取搜索关键词。通过对原始文本进行分词处理,最终总计获取了超过 30 万个关键词条目,囊括了动物、植物、日常生活用品等一般概念。
2. 自研中文图文数据集——OPPOVL:数据预处理
为了保证数据的质量,对爬取的数据进行预处理。使用的预处理算法除了常规的图片清洗、文本清洗之外,还包含了图文相关性的清洗。
图片清洗:
- 根据图片大小及长宽比例进行清洗。删除了长宽比大于2或者长宽中较短边像素数量小于 256 像素的图像。
- 根据图片内容进行清洗。删除了内容涉及色情或政治敏感话题的图片。
- 图片压缩。为确保数据占用空间大小,统一采用jpeg编码压缩进行存储。
文本清洗:
- 根据中文字数量清洗文本。删除没有中文文字的句子(中文文字数量 < 1)。
- 根据敏感词检测器清洗文本。构建了含约 4 万个包含政治敏感、色情、暴力、赌博、毒品等领域的敏感词库,用"*"屏蔽文本中触发敏感词检测器的词汇。
- 数据中个人隐私保护。检测常见人名并用<人名>替换。
- 文本无效字段去除。统计原始数据中高频出现的文本,如“查看原网页”、 “展开全文”等,去除文本中相应的子串。
3.自研中文图文数据集——OPPOVL :数据预处理
图文相关性清洗:
- 低相关性图文对去除。采用北京智源人工智能研究院的 BriVL 模型计算输入图片、文本的余弦相似度得分,随后删除相关性得分低于 0.3 的图文对。
- 数据去重。考虑到多个图像会具有相同的文本,仅对具有相同的(文本、图文相关性评分)进行去重,当图文对的文本相同,但图像不同时,并不会被视作重复的数据。具体例子如图所示的公鸡图片。
4. OPPOVL 图文预训练模型基础架构
在模型设计的部分,OPPOVL 预训练模型采用的是双流模型架构作为基础架构。
双流架构与单流的模型相比,主要优势是易于设计或改进预训练任务,另一方面,在同等规模下,预训练模型的性能会更好,能够同时获得两个模型,即文本编码器和图像编码器,有更广泛的应用空间。其劣势在于,在扩大模型的规模时,没有单流架构那么简单直接。但一直增加模型的规模,并非我们关注的重点。
OPPOVL 的预训练模型采用联合训练文本图像编码器的形式,文本和图像分别编码计算对比损失。此处,使用双向的图文对比损失函数,利用可学习的参数 σ 控制不同难度的样本的梯度。在大规模预训练的时候,之所以仅仅采用双向图文对比学习的预训练任务,是希望能够在有限的算力条件下,尽可能高效地完成第一阶段的大规模预训练。在此基础上,我们还实现了单模态自监督任务,如 SSL 和 MLM 等。在训练时,可以通过传参进行选择和组合。在小数据上进行验证,增加这些监督信号之后,模型预训练的过程变慢几倍,但获得的收益是有限的。因此,仅在小模型训练或者下游任务训练的时候才考虑去加入。
5. 特征编码器
我们采用自研视觉主干网络 CETNet 作为图像编码器,该主干网络对图像特征具有当前最好的建模能力,在图像分类任务当中已经得到充分的验证。从表的数据当中可以看出,视觉编码器模型与其他 SOTA 的视觉模型相比,在参数量和浮点数运算更低的情况下,具有更高的分类准确性。
对于文本编码器部分,我们使 BERT Base,经实际测试使用不同的文本编码器如参数量更大的 RoBertalarge 对于预训练效果并没有提升,还会增加模型训练的成本,因此使用 BERT Base 具有更好的性价比。
6. 训练优化策略
在训练优化策略方面,主要做了高效数据利用和一些加速手段等方面的优化。高效率数据利用是指在原始的图文数据对的基础之上,利用网上的开源大规模预训练生成模型为每一个图像数据生成额外的一条文本描述。生成的文本与原始的文本相比,少了一些抽象的描述,会更直观的描述图像的主要内容。在预训练的过程当中,随机选择原始文本或生成文本与对应的图像进行匹配,进行训练。通过实验也证明了这种做法可以提高数据的使用效率,同时也提升了模型的整体性能。
为了在超大规模的数据集上进行训练,训练基础设施面临着两个主要的挑战:如何降低 GPU 的显存消耗以及如何增加数据的吞吐率。降低显存的消耗可以向每个 GPU 输入更多的数据,使用更大的 batch_size 提高数据吞吐量,可以加快整个训练的过程,减少碳排放。具体的,使用了混合精度训练、梯度缓存两种优化器和 WebDataset 加载数据等优化手段,大幅地提升了预训练过程的效率。
7. 性能效果
对模型性能的验证:目前数据收集一直在进行当中,模型也在持续优化,关于性能方面只进行了一些中间结果的统计。例如第一个表格当中,用比较小的数据集(CC3M)分别训练 CLIP-Res50 架构和与之参数对等的小模型。在表中可以看出,我们的模型要大幅好于 CLIP-Res50 架构。为了验证增大模型后的效果,利用 CC3M、CC12M、YFCC15M 数据进行训练,与 CLIP-Res50 架构比较。在仅仅使用了 1/16 数据量的情况下,部分指标已经可以超越 CLIP-Res50 架构。
对中文数据集质量的验证:使用了收集到的 4000 万的 OPPOVL 数据集进行训练,与华为 WuKong 模型在 1 亿数据下训练的结果进行对比。从表中数据也可以看出,在不到一半数据的情况下,多个评价指标已经实现了超越,证明了数据的质量以及模型的能力。
8. 模型变体与下游任务适应
多模态预训练的初衷是希望可以使广泛的下游任务性能得到体升,提供新的方法丰富公司的软件产品。因此,需要具有易拓展性和易迁移性。具体地说,分别设计了不同参数量级的模型变体,以满足不同业务场景的需要,并且可以以图文训练模型为基础,设计不同 Head 的模型适配各种下游任务,在做下游任务时,仅需要进行少量的开发和几轮的微调训练就可以实现较好的效果。
9. 动量蒸馏模型
除了前面提及的多模态预训练的关键要素之外,还发现了另外一个有效提升模型性能的方法,即动量蒸馏规模型的技术。在对比学习中,正样本其实不一定是高度相关的,负样本也可能与图像的内容相匹配,并且对比学习使用 Hard 负样本会惩罚所有的负样本标签。动量蒸馏模型可以有效地解决对比学习任务中存在的一些不足。由模型的指数移动平均版本来构成动量模型作为教师模型,在训练的过程中,用教师模型对输入进行预测伪标签,预训练过程:
用教师模型对输入进行预测伪标签,与 one-hot 标签组合成新的 ground-truth , 然后计算组合 text2img 和 img2text 损失,通过教师模型预测的结果维护负样本对列,提升对比学习的效果。基于这个办法,利用 4000 万数据预训练的中文模型在 MUGE2021 评测任务上进行下游任务微调测试。
从表中数据可以看出,增加了动量蒸馏之后,模型有一定的正向收益,也证明了动量蒸馏模型的有效性。但是,由于动量蒸馏模型也会严重影响训练速度,因此建议在训练小模型或者下游任务微调训练时才进行使用。
--
03
多模态预训练模型应用场景
1. 多模态预训练应用场景
图文融合的多模态预训练技术在 OPPO 内的应用场景比较广泛。首先,可以结合 OPPO 的硬件生态优势,为以物理设备为载体的相册或者是互联网内容产品及多模态对话交互场景等提供算法的支撑。例如对照片的分类、描述,或者问答、跨模态的搜索等。
2. 为 OPPO 元宇宙场景提供虚拟内容的创造和编辑能力
以该项技术为基础的成果,还可以为 OPPO 元宇宙场景提供虚拟内容创造和编辑能力。
--
04
总结与回顾
预训练是指某种深度学习网络架构在海量数据上训练好的一组权重,可为某一具体下游任务提供好的训练起点并提升算法性能。随着科技的不断发展,多模态的智能交互模式将成为未来的趋势,多模态预训练也将成为热点研究方向。
多模态预训练关键要素包括:模型架构设计、预训练任务设计及特征编码器设计等。如何构建高质量的多模态数据集也是多模态预训练的关键。
预训练任务通常会设计超大模型、超大数据量等问题,在尽量不损失预训练模型性能的前提下,应尽可能地去优化训练过程,提升算力的使用效率。
--
05
问答环节
Q1:智能机器人也可以用到这些数据来学习的吗?
A1:对,这些数据是通用的数据。对于数据而言,数据量越大,涵盖的领域越多则越有意义,预训练用到的数据是一个普适的场景,很多地方都可以来用这些数据来做预训练,再到下游任务上
Q2:多模态预训练的训练数据场景是通用的吗?如果增加特定场景的话,需要多少数据?
A2:我们是提供一个基础的预训练模型,数据尽量覆盖到全领域。如果想增加特定场景的话,可能只需少量的数据,在模型的初始化的基础上进行微调训练,就能够达到比较好的效果。
Q3:清洗过程怎么保证数据的一致性?
A3:在清洗的过程中,如果图片被清洗了,它对应的文本也会被清洗掉,即在数据清洗过程中,实际上是一对一对地处理的,如果有图片不合格的,直接把图片及对应的文本全部删除掉;有文本不合格的,也是直接把文本和图片全部清洗。
Q4:这 4000 万数据训练出来的模型能不能用于特定领域?如果要用于特定领域,模型需要多少数据?
A4:这 4000 万数据训练出来的模型的意义在于可以提供预训练的基模型,如果是想用于特定领域,最少的数据量不太好评估,但当然是越多越好。但如果实在没有那么多的数据,用我们的初始化的权重在少量的数据上做微调训练,肯定比随机初始化直接训练的效果要好很多。
Q5:数据量多大用了多少卡,训练了多久?
A5:数据量还在增长,目前大概是收集了 1.5 亿的数据。全量数据还没训练完,受硬件资源比较紧张的限制,只训练了 4000 万数据的模型,用了 64 张卡,训练一天时间基本就可以达到一定的收敛效果,当然继续训练下去还会有提升,只是提升的速度会大幅放缓。
Q6:模型的推理速度是多少,有什么加速度方法?
A6:模型推理速度需要视模型量级而定,加速可以通过一些 MOE 的方法来改进模型。如果在强调效率的场景应用多模态模型,可能还需要更多的加速手段,如模型蒸馏等。
Q7:预训练迁移到下游要如何保证能帮到下游任务?
A7:大数据预训练加少量数据下游任务的微调是一种提升模型性能的主要手段。以 CV 预训练为例,Vit 在更大规模的数据集上训练之后,再回到 imagenet 上进行微调,模型的性能能够得到大幅提升。所以预训练阶段只要数据足够大,对于下游任务的特征空间探索都是会起到帮助的。
今天的分享就到这里,谢谢大家。
|分享嘉宾|
王聪|OPPO 高级算法工程师
|DataFun新媒体矩阵|
|关于DataFun|
专注于大数据、人工智能技术应用的分享与交流。发起于2017年,在北京、上海、深圳、杭州等城市举办超过100+线下和100+线上沙龙、论坛及峰会,已邀请超过2000位专家和学者参与分享。其公众号 DataFunTalk 累计生产原创文章800+,百万+阅读,15万+精准粉丝。
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除