0. 前言
我们已经学习了文本生成图像模子 DALL.E 2,在本节中,我们将探索另一种多模态模子 Flamingo,它可以根据给定文本和视觉数据流生成文本。Flamingo 是 DeepMind 在 2022 年提出的一类视觉语言模子 (Visual Language Model, VLM),它是预训练的纯视觉模子和纯语言模子之间的桥梁。在本节中,我们将先容 Flamingo 模子的架构,并将其与所学习的文本生成图像模子进行比较。
1. Flamingo 架构
Flamingo 的团体架构如下图所示。接下来,我们将对该模子的核心组件,视觉编码器、Perceiver 重采样器和语言模式进行先容,以了解 Flamingo 的核心头脑。
2. 视觉编码器
Flamingo 模子与纯文本生成图像模子(如 DALL.E 2 )的第一个区别是,Flamingo 可以继续交错的文本和视觉数据的组合,视觉数据包罗视频和图像。
视觉编码器的使命是将输入中的视觉数据转换为嵌入向量(雷同于 CLIP 中的图像编码器)。Flamingo 中的视觉编码器是一个预训练的无归一化 ResNet (Normalizer-Free ResNet, NFNet),这是 CLIP 图像编码器和 Flamingo 视觉编码器之间的一个关键区别:前者使用 ViT 架构,而后者使用 ResNet 架构。
视觉编码器通过使用与 CLIP 雷同的图像-文本对进行训练。训练完成后,权重被冻结,以使 Flamingo 模子的进一步训练不会影响视觉编码器的权重。
视觉编码器的输出是一个二维特性网格,然后压平成一个一维向量,通报给 Perceiver 重采样器。视频通过以每秒 1 帧的速率进行采样,将每一帧单独通过视觉编码器处理处罚以产生多个特性网格;在展平特性并将效果串联成一个单一直量之前,添加学习到的时间编码。
3. Perceiver 重采样器
传统的编码器 Transformer (比方 BERT )随着输入序列长度的增长内存而呈二次函数增长,这就是为什么输入序列通常被限制在肯定数量的符号上(比方 BERT 中使用 512 个)。然而,视觉编码器的输出是一个长度可变的向量(由于可变的输入图像分辨率和可变的视频帧数),因此输入可能非常长。
Perceiver 架构专门设计用于高效地处理处罚较长的输入序列。它不会对整个输入序列进行自留意力操纵,而是使用固定长度的潜向量,并仅对输入序列进行交织留意力操纵。具体而言,在 Flamingo 的 Perceiver 重采样器中,键和值是输入序列和潜向量的连接,而查询仅是潜向量本身。下图体现了视频数据的视觉编码器和 Perceiver 重采样器的示意图。
Perceiver 重采样器的输出是一个固定长度的潜伏向量。
4. 语言模子
语言模子由多个堆叠的块组成,采用解码器 Transformer,输出预测的文本连续。现实上,大部分语言模子来自于预训练 DeepMind 模子 Chinchilla。Chinchilla 相比同类模子要小得多(比方,Chinchilla 的参数为 70B,而 GPT-3 的参数为 170B),但在训练时使用了更多的符号进行训练。该模子在各种使命上体现优于较大的模子,需要在训练中优化大型模子和使用更多符号之间进行权衡。
Flamingo 的一个关键贡献是展示了如何使 Chinchilla 适用于与语言数据 (Y) 瓜代的额外视觉数据 (X)。我们起首了解一下语言和视觉输入如何联合起来产生语言模子的输入,如下图所示。
起首,文本颠末处理处罚,将视觉数据(比方图像)更换为 <image> 标签,并使用 <EOC> (块的竣事)标签将文本分割成块。每个块最多包含一个图像,图像始终位于块的开头,即随后的文本只与该图像相关。序列的开头还用 <BOS> (句子开头)标签标志。
接下来,将序列进行分词,并为每个符号分配一个索引 (phi),该索引对应于先前图像的索引(或者如果在块中没有先前图像则为 0)。通过掩码,可以逼迫文本符号 (Y) 只与对应于其特定块的图像符号 (X) 进行交互。比方,在下图中,第一个块不包含图像,因此 Perceiver 重采样器的全部图像符号都被屏蔽。第二个块包含图像 1,因此这些符号允许与图像1的图像符号进行交互。同样,最后一个块包含图像 2,因此这些符号可以与图像 2 的图像符号进行交互。
下图展示了这个掩码的交织留意力组件如何顺应语言模子的团体架构。
蓝色 LM 层组件是冻结的 Chinchilla,这些层在训练过程中不进行更新。紫色 GATED XATTN-DENSE 层作为 Flamingo 的一部分进行训练,并包罗混合语言和视觉信息的掩码交织留意力组件,以及随后的前馈(全连接)层。
该层是门控的,由于它将交织留意力和前馈组件的输出通过两个不同的 tanh 门,这两个门都初始化为零,并且这两个门的初始值都为零。因此,在网络初始化时,GATED XATTN-DENSE 层没有任何贡献,语言信息仅仅是直接进行通报。alpha 门控参数由网络学习,随着训练的进行,逐渐融入视觉数据的信息。
5. FIamingo 应用
Flamingo 具有广泛的应用场景,包罗图像和视频理解、对话提示和视觉对话。在下图中,可以看到 Flamingo 的一些应用场景。
在每个应用中,Flamingo 都可以或许以真正的多模态方式混合文本和图像信息。第一个应用使用图像取代单词,并可以或许提供适当的书籍来完善提示。第二个应用使用来自视频的帧,Flamingo 可以或许正确地辨认动作及其引发的结果。第三个应用演示了 Flamingo 如何以交互方式使用,通过对话或进一步提问提供额外信息。
呆板可以或许以如此广泛的模式和输入使命回答复杂题目,是人工智能的重要希望。通过量化 Flamingo 在一系列基准使命上的本领,可以证明 Flamingo 在许多基准上可以或许逾越专门针对某个使命设计的模子的性能。这表明,多模态大模子可以或许快速顺应各种使命,为开发通用人工智能体奠定了基础。
小结
Flamingo 是一种视觉语言模子,即它继续瓜代的文本和视觉数据流(图像和视频)作为输入,并可以或许以解码器 Transformer 的方式用额外的文本完善提示。其通过视觉编码器和 Perceiver 重采样器将视觉信息输入到 Transformer 中,该编码器可以或许将输入特性编码为少量的视觉符号。语言模子本身是 DeepMind Chinchilla 模子的扩展,颠末调整以融入视觉信息。
系列链接
AIGC实战——生成模子简介
AIGC实战——深度学习 (Deep Learning, DL)
AIGC实战——卷积神经网络(Convolutional Neural Network, CNN)
AIGC实战——自编码器(Autoencoder)
AIGC实战——变分自编码器(Variational Autoencoder, VAE)
AIGC实战——使用变分自编码器生成面部图像
AIGC实战——生成对抗网络(Generative Adversarial Network, GAN)
AIGC实战——WGAN(Wasserstein GAN)
AIGC实战——条件生成对抗网络(Conditional Generative Adversarial Net, CGAN)
AIGC实战——自回归模子(Autoregressive Model)
AIGC实战——改进循环神经网络
AIGC实战——像素卷积神经网络(PixelCNN)
AIGC实战——归一化流模子(Normalizing Flow Model)
AIGC实战——能量模子(Energy-Based Model)
AIGC实战——扩散模子(Diffusion Model)
AIGC实战——GPT(Generative Pre-trained Transformer)
AIGC实战——Transformer模子
AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)
AIGC实战——StyleGAN(Style-Based Generative Adversarial Network)
AIGC实战——VQ-GAN(Vector Quantized Generative Adversarial Network)
AIGC实战——基于Transformer实现音乐生成
AIGC实战——MuseGAN详解与实现
AIGC实战——多模态模子DALL.E 2
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |