- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
VALSE-大规模通用中文多模态预训练模型-卢志武
展开查看详情
1 . 悟道∙文澜 大规模通用中文多模态预训练模型 及其可视化解释 卢志武 教授 中国人民大学高瓴人工智能学院 (代表文澜团队)
2 .多模态预训练:问题定义 • 单模态预训练逐渐成熟,已经成为Language和Vision中的通用模型范式 • 单模态预训练是指利用海量的无标注文本/图像数据进行自监督学习,使得模型在多 种单模态下游任务上取得显著的性能提升 • 代表性预训练模型:Language中的BERT、GPT,Vision中的BiT、ViT • 多模态预训练亦称跨模态预训练,相对于单模态预训练,它利用了更丰 富的多模态数据 • 多模态预训练是指联合使用多个模态(视觉、文本、声音等)的无标注数据进行模 型的自监督训练,旨在提升模型在各种多模态下游任务的性能 • 自2019年起,得益于单模态预训练模型的成熟以及更强大的自监督学习方法被提出, 若干具有代表性的多模态预训练模型被提出
3 .多模态预训练:单塔vs双塔 • 最新单塔模型有UNITER、OSCAR、阿里M6,主要优点: • 能够学到图文数据细粒度上的特征关联,对某些多模态任务更有优势 • 单塔模型的主要缺点: • 准备数据的代价大,需要每个图文对之间有很强的关联 • 应用开销大,以图文检索为例,对每张图片/每条文本,都要与所有候选文本/图片构 建图文对输入模型以获得该图文对的匹配程度 • 最新双塔模型有OpenAI CLIP、Google ALIGN、悟道∙文澜,主要优点: • 数据无需清洗,不需要图文对有很强的关联 • 应用时效率高,可以提前获得候选数据的特征表示,每当有query时只需提取query 特征与候选集的所有特征计算相似性 • 双塔模型的主要缺点: • 只关注图文整体的匹配,在图片区域/单词等细粒度上表现可能不如单塔模型
4 . 悟道∙文澜 大规模通用中文多模态预训练模型 关键字:中文,通用,双塔
5 . Flickr30k MSCOCO AIC-ICC Conceptual VizWiz caption VQA v2 Captions TextCaps GQA SBU BreakingNews 7大多模态任务25个数据集 Multi30k A tie wall with a red circle on it reading Mornington FashionIQ GoodNews VisualNews 竟然只有一个是中文 MSCOCO(JP) Crescent Shoes Birtds-to-Words VisualDialog AIC-ICC RefCoCo RefCoCo+ Flickr30k RefCoCog VCR MSCOCO
6 .文澜的出发点 • 学术界多模态数据集与真实世界的数据集不同 「水果蛋糕上有一些 蜡烛在燃烧。」 「生日快乐!许个愿吧!」 「我的减肥大计又泡汤啦!」
7 .文澜的出发点 • 面对千万~亿级的真实世界里的图文对 • 怎样的模型才能比较好的刻画这种关系? • 是否能以已有单模态预训练大模型的成果为基础? • 能否节约资源,可以应用落地到大中小型企业?
8 .通用
9 .通用多模态预训练模型 - 第一代文澜 • 通用的任务:以图文互检为基础,易于增加下游任务 • 通用的数据:5500万图文对,来自互联网、社交媒体和移动互联 网,与真实世界中的场景密切相关,且类型多样 • 通用的模型:基于图文弱相关的假设,提出双塔模型,效果和性 能俱佳,已经有多个落地应用
10 .通用多模态预训练模型 - 第一代文澜 单塔结构 双塔结构 模态间原子级别匹配, 模态级别的匹配,可处 适合图文强相关假设; VS 理图文弱相关; 检索速度很慢,实际 检索速度快,实际场景 场景较难部署 易于部署
11 .通用多模态预训练模型 - 第一代文澜 • 图文匹配本身非常困难,单纯用 双塔结构难以较好解决 • 在图文匹配时,将不匹配的样本 往后排,能提高匹配精度 跨模态对比学习的双塔结构 BriVL BriVL: Bridging Vision and Language
12 .通用多模态预训练模型 - 第一代文澜 图像 Encoder 文本 Encoder
13 .通用多模态预训练模型 - 第二代文澜 • 首个中英文多模态双塔模型:采用图文弱相关假设,双塔模型的最大参数 量为53亿,支持中英文双语,提供不同大小的多个版本 • 最大的中文多模态预训练数据:共有6.5亿图文对,来自互联网和移动互联 网,不经过特殊的数据清洗,契合图文弱相关假设 • 首个基于DeepSpeed的跨模态对比学习预训练算法:提出基于DeepSpeed 的多模态预训练算法,最大化利用GPU和CPU,并最优地支持大规模的跨 模态对比学习 • 文澜2.0公开API:https://wudaoai.cn/model/wl
14 .第二代文澜 - 网络结构优化 • 替换第一代文澜的目标检测器(计算量非常大),采用Multi-Grid Split (MGS)池化技术,显著地提高计算效率
15 .第二代文澜 - 分布式预训练优化 • 第二代文澜面临的分布式预训练难题: • 预训练模型大:最大参数量为53亿,并有中英文多个版本 • 预训练数据集大:6.5亿图文对,目前最大的中文多模态数据集 • 我们采用了DeepSpeed的数据并行、混合精度训练以及零冗余优化器 (ZeRO)三大技术: • 减少预训练模型所占的GPU显存 • 最大化GPU和CPU的利用率 • 最优地支持大规模的跨模态对比学习 • 总之,我们提出了首个基于DeepSpeed的跨模态对比学习预训练算法
16 .第二代文澜 - 分布式预训练优化 • 我们在训练文澜的不同版本时,分别考虑了DeepSpeed中ZeRO技术的阶段 2和阶段3 : • 阶段2 - 优化器+梯度优化:由于MoCo会与ZeRO的阶段3冲突,我们在使用MoCo作为 对比学习策略时只使用ZeRO的阶段2 • 阶段3 - 优化器+梯度+参数优化:在训练更大模型时,我们采用SimCLR的对比学习策 略,就可以应用ZeRO的阶段3,内存效率更高 • 最终得到的文澜模型用fp16进行存储,极大缩减了加载模型所需的显存, 便于在实际应用中部署 • 112卡A100的预训练时间:6.5亿图文对,约7天/epoch
17 .下游任务 – AIC-ICC的图文检索 • 文澜2.0在中文caption数据集AIC-ICC上直接进行微调,下游任务为图文检索, 考虑不同的微调策略。 Text Retrieval Image Retrieval # Unfixed Recall@ Method Fix BN Recall@1 Recall@5 Recall@10 Recall@1 Recall@5 Recall@10 Blocks SUM 文澜2.0 (direct 36.03 59.48 69.71 28.66 54.33 65.26 317.47 no 4 training) 文澜2.0 (pretrain 43.05 65.11 74.57 32.49 57.53 67.99 342.74 no 2 & finetune) 文澜2.0 (pretrain 44.49 67.14 75.63 33.67 58.76 68.80 352.49 no 4 & finetune) 文澜2.0 (pretrain 45.61 68.01 76.31 34.06 58.86 69.09 355.94 yes 4 & finetune)
18 .下游任务 – 视觉问答VQA • 文澜2.0在VQA数据集Visual7w-telling上进行微调, 下游任务为视觉问答 VQA,数据集需要提前翻译成中文,训练集:测试集=7:3。 • 基于跨模态对比学习的VQA建模:当前图像为anchor,正样本为问题+真实 答案,负样本为问题+其他选项。 Question Type # Unfixed Method Fix BN What Where When Who Why How Overall Blocks 文澜2.0 (direct training) no 4 70.51 71.99 81.88 77.05 78.36 68.62 72.16 文澜2.0 (pretrain & 79.89 81.71 87.78 84.48 82.66 76.31 80.67 no 2 finetune) 文澜2.0 (pretrain & 79.41 81.66 87.31 84.46 83.11 74.44 80.16 no 4 finetune) 文澜2.0 (pretrain & 77.79 80.50 87.99 84.44 82.46 72.87 78.96 yes 4 finetune)
19 .下游任务 – 遥感数据的零样本分类 • 利用文澜2.0的图文encoder,直接在遥感数据集AID上进行零样本分类,需要 将30个遥感类名翻译成中文。测试时30个遥感类别被分成不同unseen/seen的 分划。OpenAI CLIP直接在英文数据集上进行测试。 Unseen/Seen Class Ratios Method 30 / 0 8 / 22 12 / 18 16 / 14 20 / 10 CLIP w/ ResNet-50 46.01 65.99 (0.08) 59.15 (0.05) 54.44 (0.05) 51.72 (0.04) CLIP w/ ResNet-101 48.05 68.71 (0.07) 64.39 (0.06) 57.75 (0.06) 54.54 (0.05) CLIP w/ ResNet-50x4 50.96 69.32 (0.08) 64.30 (0.05) 59.53 (0.06) 56.35 (0.04) 文澜2.0 58.12 76.73 (0.09) 71.25 (0.07) 67.52 (0.06) 64.19 (0.04)
20 .下游任务 – 中文新闻的零样本分类 • 利用文澜2.0的文本encoder,在中文新闻数据Toutiao上进行零样本分类。对比 实验考虑了单模态预训练的RoBERTa-base和RoBERTa-large。右图展示了文澜 2.0相对于单模态RoBERTa-large在每类上的涨跌。 Method Toutiao News 单模态RoBERTa-base 33.57 单模态RoBERTa-base (在文澜 32.13 1.0的文本数据上微调) 文澜1.0(RoBERTa-base) 50.80 单模态RoBERTa-large 38.90 文澜2.0(RoBERTa-large) 61.92
21 .可解释
22 .多模态神经元生成 1. 给定一个中文概念,输入一张随机噪声图像。 2. 通过文澜的文本Encoder 得到中文概念的Embedding。 3. 多模态神经元生成的目标函数为:最大化图像Encoder 最后一层某个 神经元的输出,并同时让当前输入图像的视觉Embedding 逼近中文 概念的文本Embedding 。 4. 固定文澜的图像Encoder,通过BP算法去更新输入的图像。 5. 算法收敛后,得到的输入图像即可看作图像Encoder最后一层某个神 经元的可视化。
23 .多模态神经元示例 – 具象概念 飞机场 生日蛋糕 山脉 多模态预训练后的神经网络能“看到”具象的人类概念!
24 .多模态神经元示例 – 抽象概念 梦境 科学 自然 多模态预训练后的神经网络也能“看到”抽象的人类概念!
25 .多模态神经元示例 - 古诗句意境生成 江南可采莲,莲叶何田田 帘卷西风,人比黄花瘦 竹外桃花三两枝 多模态预训练后的神经网络甚至能“理解”古诗句的意境!
26 .利用文澜实现VQGAN Inversion 1. 给定一个中文概念,输入一张随机噪声图像。 2. 通过文澜的文本Encoder 得到中文概念的Embedding。 3. VQGAN Inversion的目标函数为:当前输入图像经过VQGAN后输出图 像,其视觉Embedding(通过文澜图像Encoder得到)必须逼近中文 概念的文本Embedding 。 4. 固定VQGAN和文澜的图像Encoder,通过BP算法去更新当前输入图像。 5. 算法收敛后,最终得到的输入图像即可看作关于给定中文概念的 VQGAN Inversion结果。
27 .VQGAN Inversion示例 – 具象概念生成 喜马拉雅山 冬日的校园 乌云背后有阳光
28 .VQGAN Inversion示例 - 古诗句意境生成 白日依山尽,黄河入海流 日照香炉生紫烟 孤舟蓑笠翁,独钓寒江雪
29 .VQGAN Inversion示例 – 连环画生成 毛毛虫吃树叶长大 毛毛虫吐丝成茧 毛毛虫破茧而出,化成蝴蝶