前言
自从2022年11月ChatGPT的发布,再到最近Sora的发布,可以说AI领域经历了翻天覆地的变革。学术界和工业界纷纷被ChatGPT和Sora等新兴技术所吸引,这不仅促使大量研究者投身于相关研究,也催生了一波AI创业热潮。近年来,众多创业公司如雨后春笋般涌现,为这股AI浪潮注入了更多活力,可以看出大家对于未来科技发展的迫切期待与无限憧憬。本文将从这两个现象级的AI应用出发,谈谈自己的看法。
技术剖析
1. ChatGPT
首先,从产品形态上来看,ChatGPT是一款对话式的AI应用,或者可以说是一个具有对话能力的NLP模型,我们只需要以对话的形式给它一点小小的提示(Prompt),那么ChatGPT就能返回我们想要的结果(但如何与ChatGPT进行交互,使得返回的结果更符合我们的期望,也是一个非常有意思的点,学术界已经有大量的相关研究)。下图为ChatGPT使用界面:
其次,从技术上来看,ChatGPT其实是OpenAI在GPT[1](Generative Pre-Trained Transformer)技术上的延伸,使得GPT具备了指令遵循和对齐人类价值观的能力。前两年,无论是学术界还是工业界基本遵循的是Google的研究路径,即大量精力都放在encoder-only模型结构的研究上,例如Bert[2]等。但如今随着ChatGPT的出现,证明了decoder-only模型结构的成功,研究者随之转移到了这类模型的研究中,例如LLaMA[3]等。相对于之前的GPT模型,ChatGPT有哪些不一样的地方呢,从OpenAI发布的InstructGPT[4]我们可以获得一些信息。
构建ChatGPT需要三个步骤:
预训练:通过收集大量的长短文本,使模型获得知识,具备"说话"的能力。当然,训练语料不限于一种语言,可能包含多种,例如英文、中文等,随着语言种类的增多,也意味着词表需要更大,需要更精心的设计。
指令微调:通过收集大量的 <prompt, response>对,使得模型具备遵循人类指令的能力,这对于后续模型"听懂"人类的指令起到了关键的一步。
人类反馈强化学习(RLHF):这一步通过收集一些人类对于同一prompt,不同回答的偏好数据来训练模型,使得模型的回答能够符合人类的价值观。
有了以上三步后,就能构建出类ChatGPT,至于如何完整的复现,我们就不得而知了,因为如何训练这些数据以及会用到哪些tricks,OpenAI并未开源,这就需要研究人员付出大量的时间和精力来不断的踩坑和积累经验。在发布了ChatGPT不久,GPT-4也相继发布,不同于ChatGPT只处理文本,GPT-4可以处理图像数据,并且能力也比ChatGPT更强。
2. Sora
如果说ChatGPT是将自然语言玩到极致,那么Sora就是将多模态玩到极致。Sora是一款包含文生图/视频以及图生图/视频功能的AI应用,可以帮助人们通过一个Prompt或者一张图生成各种类型的图/视频。如果进入Sora官网,就会被一段视频所震撼,无论是从连贯性还是画质上讲,都堪比真实拍摄的视频。
这次OpenAI同样遵循了闭源的原则,并没有发布完整的技术文档,只是在官网对相关的技术进行了一些比较简单的说明。不过还是好人多,由北大带头发起的一个开源项目Open-Sora-Plan[5],正是为了复现Sora而努力。下图为该项目复现Sora的技术实现框架。
视频编码:刚开始需要训练一个视频编码模型,将原始的图像和视频从pixel空间转换到低维的潜在空间中,转换之后可以便于图像和视频数据的高效训练。其中,图像可以看作一帧的视频。
将视觉数据转换成patch:这一步主要是将上一步压缩到潜在空间的图像和视频表示分解成时空patch,类似于NLP中将文本处理成token。
利用Diffusion Transformer模型对数据进行训练:这一步主要是将收集到的图像和视频数据在潜在空间中进行训练,模型输入是文本描述和具有随机噪声的时空patch,输出是文本描述对应的图像和视频在潜在空间中的表示。
视频解码:同样,为了将潜在空间中的图像和视频表示变换到pixel空间,需要训练一个视频解码模型。
数据增强策略:收集到的一些视频中没有描述,于是训练了一个image captioning模型对视频生成描述;同时,为了提升视频描述的质量和细节,使用GPT-4对生成的视频描述进行改写
总结
总而言之,从ChatGPT到Sora的发布,我们见证了OpenAI技术的领先性,OpenAI就像AI领域的风向标,一直引领着前沿科技的方向。同时,两个现象级的AI应用也证明了一点,那就是Scaling Laws,模型越大效果越好,模型越大也意味着需要的数据和算力越多,AI不再是学术界的狂欢,主战场已经慢慢转移到了工业界,是各个科技大公司之间的较量。不过作为普通人,在这个发展迅速的AI时代,我们仍然需要保持对前沿技术的跟踪和学习,才能不被淘汰。
笔者作为一名NLP算法工程师,主要研究LLM,AIGC以及AI Agent方向,后续将会结合自己的研究以及前沿技术的发展,为读者解读更多的内容,帮助大家了解和学习。