苏剑林“闭门造车”之多模态思路浅谈思考
原文来自科学空间苏剑林 “闭门造车”之多模态思路浅谈(一):无损输入和“闭门造车”之多模态思路浅谈(二):自回归,学习后总结。
文章目录
- “闭门造车”之多模态思路浅谈(一):无损输入
- 文本和图像生成的区别
- 图像离散化,套文本生成框架
- 压缩序列造成信息损失
- 将图像视为连续型向量无损压缩
- Patch输入后的操作
- “闭门造车”之多模态思路浅谈(二):自回归
- 图像生成中的“无损”是什么要求
- 图像自回归生成(AutoRegressive)
- 加入噪声让 p ( x t ∣ x < t ) p(x_{t}|x_{<t}) p(xt∣x<t)接近高斯分布
- 加噪后的效率问题和解决思路
- 分patch排序方便自回归学习
“闭门造车”之多模态思路浅谈(一):无损输入
文本和图像生成的区别
文本生成的研究方向是设计语言模型,建模条件概率 p ( x t ∣ x 1 , . . . , x t − 1 ) p(x_{t}|x_{1},...,x_{t-1}) p(xt∣x1,...,xt−1)。不同的语言模型都是为了与该条件概率近似。对于离散的句子 ( x 1 , x 2 , . . . , x l ) (x_{1}, x_{2},..., x_{l}) (x1,x2,...,xl)每个 x t x_{t} xt都来自有限词表,条件概率本质是分类,在神经网络拟合之下,任何分类任务都能精确建模。
词表(Vocabulary):有限的集合,包含了所有可能的token,词表将文本中token映射到唯一的索引
码本(codebook):有限的集合,包含了所有可能的向量,码本将连续的潜在表示映射到离散的向量索引
图像生成并无清晰的研究方向,不同的模型建模理论也并不相同。造成图像生成手段多样化的根本原因,是对连续变量进行概率建模的困难性。若以文本的思路对图像进行建模,图像可看作连续型向量 ( x 1 , x 2 , . . . , x l ) (x_{1}, x_{2},..., x_{l}) (x1,x2,...,xl),概率密度必要条件是非负且 ∫ p ( x t ∣ x 1 , . . . , x t − 1 ) d x t = 1 \int p(x_{t}|x_{1},...,x_{t-1})dx_{t}=1 ∫p(xt∣x1,...,xt−1)dxt=1。神经网络可以拟合函数,但不能拟合概率密度。
图像离散化,套文本生成框架
图像在像素空间上可以看作离散的, n × n n\times n n×n的图像可以看作长度 3 n 2 3n^{2} 3n2,vocab_size是256的句子,套用文本生成框架能work,比如PixelRNN、PixelCNN和Sparse Transformer。
在像素空间操作序列长生成慢,考虑“先压缩,后生成”。利用AutoEncoder压缩序列长度,同时要保证离散性就不能用VAE而要用VQ-VAE、VQ-GAN等。VQ-VAE/GAN就相当于“图像Tokenizer”的角色,压缩后可通过Decode恢复原始图片,比如LWM和AnyGPT。
VAE压缩序列:潜在空间是连续的,使用正态分布的推断来生成潜在变量。
VQ-VAE压缩序列:潜在空间是离散的,使用向量量化来替代VAE中的连续潜在表示,避免了VAE中可能存在的潜在空间重参数化问题。文本tokenizer将连续文本转换为离散的符号序列,图像tokenizer将连续的像素空间映射到离散的符号空间。
图像生成中的VQ和tokenizer
压缩序列造成信息损失
对于 64 × 64 64\times 64 64×64的ImageNet图像,平均总信息熵 64 × 64 × 3 × 3 64\times64\times3\times3 64×64×3×3bit,对于vocab_size为V的词表,想要将编码长度压缩为L,实现无损压缩至少满足 L × l o g 2 V ≥ 64 × 64 × 3 × 3 L \times log_{2}V \ge 64\times64\times3\times3 L×log2V≥64×64×3×3,在实际应用中,若压缩到 16 × 16 16\times16 16×16那么V至少是 1 0 43 10^{43} 1043量级,必然会产生信息损失。
无损压缩需要精益探索
将图像视为连续型向量无损压缩
离散型和连续型生成有所不同,离散型自回归生成的熵源是seq_len和vocab_size,而vocab_size的贡献是对数增长的(贡献小)所以主要靠seq_len,但是seq_len等价于成本(序列越长熵越大,计算步骤和推理时间更多),所以离散型的熵源是昂贵的;基于变换的连续型生成的熵源是高斯噪声,原则上可以无穷无尽,是廉价且可并行的。因此,扩散模型导出可逆ODE方程将标准高斯分布映射为目标分布可获取等多熵源。
高斯噪声从正态分布中采样的随机数,连续分布有无穷多的取值
任何编码手段都可能会造成失真,因此将原始图像切成patch输入是较为稳妥的方法(输入原图才能保证信息的完整)。要让模型具备图像生成能力,还需考虑到语义一致下细节差异,通过加噪和去噪调节。
Patch输入后的操作
直接用原始patch作为输入
保留更多信息。避免特征间的孤立。
用预训练的编码器特征作为输入
在LDM的自编码器降维后的特征空间进行扩散
“闭门造车”之多模态思路浅谈(二):自回归
根据(一)可知离散化有严重的信息损失,输入连续性特征是更有前景的方案,但是连续性输入会增加图像生成的难度。只有离散化才能套用文本的自回归框架。
目标:1. 寻找更好的离散化方式(信息损失少) 2. 设计适合图像连续型输入的自回归框架
图像生成中的“无损”是什么要求
不同的Patchify可能会有不同程度的信息损失,其中VQ的信息损失往往是最严重且最明确的。如果图像在输入模型之前就有明显信息损失,那么必然会限制模型的图像理解能力。所以,为了更好地适应各种图像理解任务,多模态模型理想的图像输入方式应该就是尽可能无损的连续型特征,由模型自己在计算过程中根据上下文决定要损失什么。
自适应、动态地选择
图像自回归生成(AutoRegressive)
DDPM本质是自回归模型,将单个图像设定为
x
T
,
x
T
−
1
,
.
.
.
,
x
1
,
x
0
x_{T},x_{T-1},...,x_{1},x_{0}
xT,xT−1,...,x1,x0,建模
p
(
x
t
−
1
∣
x
t
)
p(x_{t-1}|x_{t})
p(xt−1∣xt),这一过程本质上也是Teacher Forcing,所以也有Exposure Bias问题。
可能解决Exposure Bias的方法:Scheduled Sampling、Curriculum Learning、Reinforcement Learning和Beam Search
为什么Teacher Forcing存在Exposure Bias问题?
Teacher Forcing模式在训练过程中输入是真实的前 t−1个元素(来自训练数据)预测第t个数据,与真实值计算损失。但在推理时,需要根据生成的内容逐步预测下一个元素。导致训练和推理的输入分布不一致,推理时受生成的低质量内容干扰,导致错误累积生成效果变差,这就是Exposure Bias。
因此,对于图像来说,问题并不是该不该做自回归,而是以何种方式来更好地去做自回归。它的作用不仅是为多模态模型赋予图像生成能力,而且还是一个重要的无监督学习途径。
加入噪声让 p ( x t ∣ x < t ) p(x_{t}|x_{<t}) p(xt∣x<t)接近高斯分布
扩散模型的核心思想正是“通过渐进式加噪让平方误差成为合理的损失函数”,对整张图片加噪,当然,也有对patch加噪的。
加噪后的效率问题和解决思路
学习效率这种t−1时刻的加噪图预测t时刻的加噪图的训练目标,需要对噪声进行双重采样,这会导致更大的训练方差,需要更多的训练步数才能把这个方差降下来,经过一系列降方差技巧后,更高效的方式是直接预测原图。
计算效率假如每个Patch通过加噪变成T个Patch,那么序列长度就变为原来的T倍,这样一来训练成本和推理成本都会显著增加。
1、扩散模型的理论和实践告诉我们,要预测xt的话只用xt−1就够了,可以忽略更早的输入,这意味同一个Patch的不同加噪结果之间不需要相互Attend;2、出于减少冗余的考虑,对于不同Patch之间的预测以及后面文本Token的预测,我们只需要Attend到没加噪的Patch。
如果允许两个不同的模型串联(但仍然可以端到端训练),那么我们还可以把扩散模型单独分离出来,Transformer只负责处理没有噪声的Patch,Transformer的输出则作为扩散模型的条件,如下图所示:
分patch排序方便自回归学习
大部份Patchify方法的输出特征依然保留了这个二维性质,而自回归生成则是单向的,所以需要指定一个生成顺序。常见的顺序比如 1)从左往右再从上往下 2)从中心到四周螺旋 3)从左上角出发走“Z”字 等等。“分Patch排序”是将图像解构为一个可供自回归学习的一维序列的过程,更通俗点就是将图像从二维序列转成一维序列。