输入“/”快速插入内容

Sora的前世今生:从文生图到文生视频

✍️
腾讯程序员 腾讯技术工程 2024-02-22 17:28 广东
作者:monychen
在2月16日凌晨,OpenAI首款文本生成视频模型Sora正式亮相,迅速在网络上引发广泛关注。对于Sora背后的技术原理,网络上已经充斥着各种分析和猜测,其中大多数分析都是从技术报告入手,对于普通读者来说难度相对较高。为了使技术原理更加通俗易懂,本文将从文本生成图像到文本生成视频的技术演进角度进行剖析,解读从AE、VAE、DDPM、LDM到DiT和Sora的技术发展路线,旨在为读者提供一条清晰简明的技术进化路径。
1.背景
最近AI圈内乃至整个科技圈最爆的新闻莫过于OpenAI的Sora了,感觉热度甚至远超之前ChatGPT发布时的热度。OpenAI也是放出了Sora的技术报告(有一定的信息量,也留下了大量的想象空间)。
今天就来尝试聊一下Sora的前世今生,欢迎交流讨论批评指正!
无论是文生图还是文生视频,很多这方面的工作其实都可以看成是自编码器的进阶版本,让我们从自编码器开始入手。
自编码器(Autoencoder):压缩大于生成
自编码器由编码器和解码器两个部分构成
编码器负责学习输入到编码的映射
,将高维输入(例如图片)转化为低维编码
解码器则学习编码到输出的映射
,将这些低维编码还原为高维输出(例如重构的图片)
我们希望压缩前和还原后的向量尽可能相似(比如让它们的平均平方误差MSE尽可能小)
这样就能让神经网络学会使用低维编码表征原始的高维向量(例如图片)。
那有了自编码器能够做生成吗,答案是可以的,只要留下解码器,我随便喂入一个低维编码,不就能够得到一个生成的高维向量了(例如图片)。(当然,这里可能生成一起奇奇怪怪的东西,因为这里对低维向量没有做出约束,自编码器通过将图片转化为数值编码再还原回图片的过程,可能导致对训练数据过拟合。结果就是,对于未见过的低维编码,解码器重构的图片质量通常不佳。因此自编码器更多用于数据压缩。)
变分自编码器(Variational Autoencoders):迈向更鲁棒地生成
自编码器不擅长图片生成是因为过拟合,那如果能够解决过拟合问题,不就能拿来生成图片了!
变分自编码器做的就是这么一件事:既然自编码器将图片编码为确定性的数值编码会导致过拟合,变分自编码器就将图片编码为一个具有随机性的概率分布,比如标准正态分布。 这样当模型训练好后,我们只要给解码器喂入采样自标准正态分布的低维向量,就能够生成较为“真实”的图片了。
因此,变分自编码器除了希望编码前和解码后的样本尽可能相似(MSE尽可能小),还希望用于解码的数据服从标准正态分布,也就是低维编码的分布和标准正态分布的KL散度尽可能小,损失函数加上这么一项约束。
变分自编码器中涉及到了从标准正态分布中进行采样,因此作者引入了一种参数化的技巧(也是为了误差能够反向传播),感兴趣的可以进一步了解。
此外,VQ-VAE、VQ-GAN 也是一些值得学习的工作。由于不影响对后续的理解,这里不再进行赘述。
变分自编码器减轻了自编码器过拟合的问题,也确实能够用来做图片的生成了,但是大家会发现用它生成图片通常会比较模糊。可以这样想一下,变分自编码器的编码器和解码器都是一个神经网络,编码过程和解码过程都是一步就到位了,一步到位可能带来的问题就是建模概率分布的能力有限/或者说能够对图片生成过程施加的约束是有限的/或者说“可控性”是比较低的。
去噪扩散概率模型(DDPM):慢工出细活
既然变分自编码器一步到位的编解码方式可能导致生成图片的效果不太理想,DDPM就考虑拆成多步来做,它将编码过程和解码过程分解为多步:
编码过程
解码过程
因此,所谓的扩散模型由两个阶段构成
前向扩散过程,比如给定一张照片,不断(也就是多步)往图片上添加噪声,直到最后这样图片看上去什么都不是(就是个纯噪声)