从 AI 动捕 到 动画生成

发布于 2023-08-29  232 次阅读


从 AI 动捕 到 动画生成

机缘巧合,想写一篇分享文章,讨论一下自己近期做过的一系列 AI 动画相关的工作。

一方面是之前听中台郭帆老师《AIGC 加速游戏开发案例分享》一节的分享在结尾提到了有趣的课题,让我也想来抛砖引玉一下。另一方面则是,前两天投递的 《当我们谈论任务时,我们在谈论什么》因为话题过于小众和行文过于抽象且毫无干货,已经沦为了湿垃圾。我迫切地想要做点什么进一步争取一下伍拾円京东卡(乐

再有者,前两天死皮赖脸勾搭上了 MotionGPT 的作者,同他讨论了几项有趣而深度切合工业化趋势的几个点,迫不及待地想与更多人分享(但至今为止,直接将内容分享给水友看没有一个人接得上,大概说明我该写一篇文章来尝试打平信息差


首先,我们得意识到一点,将在本文中讨论的动画呢,它是这个(悲

image

换句话说,这个动画被叫做 Motion,又叫做动作,讨论的是人的运动。

它不是我们最爱的 Anime(动画片/或者 SD 生成的动画),但它也可以是 Animation,即那些驱动着我们所创作游戏中诸要素运动的动画(晒一下我的看板娘 416,btw 你们看不到动画)。

image

那么,也许像一篇论文(因为懒得写的时候可能会从我的毕业论文里缝一点),也许是一篇科普文,先让我开始为敬。

缘起 —— 早期的动作表示及其背景

1980s —— 传统模式识别

AI 与 动作 的交点,其出现其实不能算太晚。早在四十年前,人们对这个话题的兴趣就展露了苗头。虽说那个年代即没有现代意义上的“AI”,又没有现代意义上的“动作”就是了。

在那个年代,整个课题被归于“模式识别”这个大类下。如图所示,这是 1983 年相关领域发布的第一篇文章。作者通过手工的方式提取了画面中行走的人可能具有的模式化特征,并以此为模板,实现了对画面中人类动作的“模式识别”。从现在的视角来看,这难免是些许幼稚的工作,但在那时也算颇具启发价值了。

image

这样简单的模式识别工作显然与我们如今认识到的动作工作大相径庭,但难以否认的是,后续无数的工作都是从“模式”这一观念之上喷涌而出。而基于此,人体姿势估计 (Human Pose Estimation) 这一邻域也逐渐开始发展。

Tips —— 模式识别中的“模式”

计算机及认知心理学中的“模式识别”

在进一步延申之前,我们可以尝试定义一下模式识别中的“模式”一词,究竟作何概念。

模式识别 (Pattern Recognition) ,有其相对专业的解释(摘自维基百科):

模式识别,就是通过计算机数学技术方法来研究模式的自动处理和判读。我们把环境客体统称为“模式”。

但这并非是一个足够原子化,或者易读的定义。因而基于此,我会希望进行一定的延拓。进一步借用心理学情景中易被混淆的模式识别定义。

心理学认知神经科学中,​**模式识别**​描述了一个认知过程,该过程将来自刺激的信息与信息召回相匹配来自记忆​~~。~~

总觉得上面这是机翻,有点离谱,重新翻一遍。

模式识别描述了将 来自刺激的信息从记忆中检索的信息 相匹配的 认知过程。

虽然计算机科学和心理学中对模式识别的纸面定义不甚相同,但他们之间的共性也是显著的。其共同的核心均是 **定义记忆的储存形式(表示)​​ 和 ​​学习记忆的组成内容(学习)**​。而区别在于,计算机科学忠于通过计算机进行模拟,而心理学忠于研究人体运作本身的机理。

显然的,两个领域从不停止相互学习(看了眼我最熟悉的“神经网络”)。

一个简例

自然,上面的论述依旧是抽象的,为此我结合前文给到的传统模式识别来简单举个例子吧。

对于上图,每个小的切片都是一个“模式”,其包含“表示”和“内容”两个部分:

image

  • 表示:一个模式的“表示”实际上就是是一张二进制图,通过黑色表示人,通过白色表示背景。对于任何一张该表示下的“模式”,我们可以将其理解为一个正在运动的人。(每个切片都所属相同的表示)
  • 内容:一个模式的“内容”即是表示之上,真实为我们所见的东西。如上图所示,对于这样一个切片,我们能将其理解为一个双腿弯曲跳起的人(?总觉得有点怪),而这正是人正在运动的一种状态。

(或者说,对于一张常见的数码照片 or 表情包,其“表示”为一个[长*宽*RGB]的色彩元素矩阵,内容为我们所见到的东西,再让我进一步解释我真要歇逼了)

通过表示和内容的组合,我们乃至计算机方能理解一个模式(当然这个模型还是被简化了)。

回到原题,对于一张黑白照片,计算机能通过运算抽取其中抽象的人物特征,并将其与“长期记忆”中的模式进行比对,从而实现所谓“模式识别”的工作。

image

1990s —— “表示”的蓬勃发展

在讨论“学习”这一模块之前,我们会倾向于先来聊聊相关领域中“表示”的发展。当然,这并非说明在这个年代“学习”的发展或重要性不及“表示”,倒不如说,正是那些年的积累才铺垫了 AI 邻域如今的繁华。

但为了行文和思路的整体连贯,我依旧会先行介绍动画的表示这一范畴。

与图形学共同发展的动画表示

“表示”的进化无疑依赖于图形学的发展。

举一个最简单的例子,在三维动画引擎出现之前,动画的表示仅仅局限于两个维度;在图形化界面出现之前,普遍意义上的计算机动画尚且不存在。

image

也正是 1990s 后,图形技术的极大发展真正将 3D 制作技术和 3D 游戏普及,计算机角色动画也逐渐从 Siggraph 等前沿科学会议中的讨论性内容逐渐走向落地。

从那时起,愈多的人尝试通过骨骼动画和蒙皮这一标准表示,为虚拟角色创建其动态。

与测量共同发展的动画表示

区别于以动态表现及观感为主导的计算机动画,更多专业邻域也逐渐将视野投向人和动作的表示。

人们对人类身体的表示,从身姿、到表情、到手势,都在不断完善。这些要素被不断优化和整合,以渐拼凑出一个完整的数字人雏形。

以面部建模为例,起到开创性作用的为 1999 年 Blanz 和 Vetter 提出的 A morphable model for the synthesis of 3D faces (用于合成 3D 面部的可变形模型)。从这时起,从扫描数据中学习 3D 面部形状及表情的做法便转向兴盛。这类模型受到心理学上的面部动作编码系统 FACS 启发,其共同点在于可以广泛地表现不同的面部形状和表情特征。基于此最终产生了 FLAME 这种对完整头颈的向量化表示。

image

虽然这个 17 年的工作已经完全不是 1990s 了(扶额

另一方面,随着 3D 身体扫描仪进入民用市场,身体形态建模的问题被推上台面。 在相关领域的发展中起到阶段性作用的是 CAESAR 数据集,其推出带来了人体 形态学习的研究[19]。这些早期工作主要集中于使用姿势大致相同的人体进行扫描来研究身体形态,并使用三角面形变或顶点位移等方案来分解身体的形状 和姿势变化,此类人体构建模型中的典型便是 SMPL(也是后续会介绍的重点嘉宾)。

SMPL-X

基于这一系列的表示,使得计算机能以更合理更简洁的方式对动作进行表示。

道路之争 —— 学界与工业的分立

学界与工业界的分立,仅在动作这一领域而言,亦是“现实”与“理想”的分立。

这种分立不仅存在于数据或者说领域本身上:学界倾向于通过直接而简洁而理想化的建模来抽象现实问题,但最后又执着于抽象本身,不再将眼光放回现实。而相对的,动作工业界立足于对超出现实的理想世界的塑造,而其中遇到的所有困难,也会最终落会现实之上。这番咬文嚼字多少显得有趣了。

当然,让我们收回正经话题,这是前些时日对 MotionGPT 作者的采访提问一则,在一定程度上暴露了这个问题。但也确实如此,表示的创建及其被选择,都天生带着待解决问题的倾向

Q:接续上一个问题,动作生成课题相比图像是否有足够的多样性和同义性(或者说基于现有的 HumanML3D 数据集),以至于需要使用 Diffusion 进行生成呢(好奇 MotionGPT 现在使用 T5 来生成,是不是已经能通过文本 Cover 绝大多数动作了?

A:其实目前 HumanML3D 的多样性以及数据量上还是有问题的,对于走跑跳这类生活中常见的动作,最近比较好的方法确实都完成的不错了,大家在 HumanML3D 这个数据集的评测指标上也确实都刷的很高。但是离群多些的动作类型,比如有特定姿势的体育运动,像体操跳水之类的动作,实际上现有方法都没有办法完成,因为数据集中要不没有、要不只有几例这样的数据的话模型是学不好的。

另一方面,学界和工业界难以打通,就像现实和理想总是分立,是个永恒的难题。

而立足到我们今天讨论的主题更甚 —— 在 AI 绘画领域,所有人用着通用的“表示”,色彩矩阵与屏幕足以向所有人传递画面的美丽;在 AI 文本领域,天南地北的人们用着通用的自然语言表达逻辑与内容,这种连结甚至能跨越语系和地域。

而在 AI 动画领域,你将打开一个个项目,面对着永远不同的 .FBX、.BVH、.NPZ 后缀,在傻逼的格式转换之中焦头烂额,还要不断尝试处理和翻转一堆永远对不上的坐标信息和比例尺信息(乐

  • 在工业界,动画师通过 FBX 乃至其它高级文件储存动画信息,通过记录不同名字和连接关系的骨骼其旋转与位移传递动画文件并合作
  • 在工业学术界(以 Siggraph 为首的前沿图形学),习惯使用 BVH 等数据结构高效储存各种运动信息和基本骨架,专注于对数据本身的学习和处理
  • 在学术界(这里指的主要是计算机视觉学术界),则乐于基于 SMPL 系的既有轮子和数据进行开发,捉摸算法模型本身的性能,并以打榜发论文为首要追求

多的槽就也不吐了,毕竟说到底所有值得沉淀的优秀工作,最终都将化为造福大众的生产力嘛,无非是其路径长短罢。是时候避免进一步地跑题啦。

2010s —— “学习”的伟大复兴

先前,我们在“表示”一节中讨论了学术和工业各自常用的表示方式,但我要悲痛地告诉大家,虽然这是一篇意图立足于工业应用的文章,但我们的出发点却不得不从学术开始。

应为这次应用革命的希望,正是从深度学习的最前沿扬起的。而我也会尝试向大家简单介绍这一历程。(终于回到最熟悉领域的感觉真好)

神经网络 —— 梦的开始

神经网络(Neural Network),究其起源其实源自上个世纪五六十年代,在那个时代,神经网络的基础还被称为多层感知机(Multilayer Perceptron)。

image

我们会避免一些过于深层的概念,转而介绍一些偏向直观的内容。

以上述神经网络,或叫多层感知机为例。所有神经网络实际上都有着完全相同的抽象。

y=f(\mathbf{x})

这个再常见不过的公式就是神经网络的本质,尝试拟合一个未知的函数。

另一方面,神经网络也是一个宏观和微观兼具的问题。我们常说神经网络就是一个待求解的函数,与此同时,神经网络中的每个节点(或者被称为神经元),也是一个未知的函数。

y=f(\mathbf{x})=w\mathbf{x}+b

如公式所示,很多情况下,在神经元层面,问题都可以被抽象为一个多项式函数。而我们通过学习过程,去学习每个单元中的参数 w,b,并最终将所有单元汇集为完整的网络,让其掌握我们期望其掌握的目标。

如今,在传统神经网络的设计思路统御之下,通过诸多算法设计师对网络宏观结构的调控和微观策略的改进,使得神经网络能被用于处理愈多的问题。由此深度学习的时代逐渐发展

问题 x y
图像分类 输入图像 图像类别
文本生成 输入文本 下一文本
图像生成 控制提示词 生成图像
动作生成 控制提示词 生成动作

AlexNet 与视觉 —— 现代深度学习的开端

2012 年,是深度学习真正爆发的原始年份,绝大多数有着 AI 相关背景的人都知道在这一年,AlexNet 这项工作依靠其在 ImageNet 大规模视觉识别挑战赛(ILSVRC)取得的压倒性成绩,成为了深度学习和卷积神经网络真正兴盛的开端。

当我们追溯相关历史,不免要回到 2010 年,也即是 ImageNet 出现的年份。

随着算力的发展(今天先不 F U Nvidia),机器学习和深度学习能被用于更复杂的数据结构之上(图像作为一个巨大矩阵),同时也支持了更复杂的框架其搭建。这使得机器/深度学习领域再次焕发生机。

image

ImageNet 这个包含 1400w 余图像数据,并包含 2w 分类的大型图像数据集被发布,并正是掀起了机器学习在计算机视觉领域的热潮。

2012 年,由 Hinton 和 Alex 设计的 AlexNet,通过设计和引用一系列 Trick,将卷积神经网络(Convolutional Neural Networks, CNN)框架成功置入深层网络中,并使用 GPU 加速计算。这一系列工作打通了过去阻碍神经网络发展的阴霾,由此正式掀起了深度学习的浪潮。

image

序列模型 —— 不止自然语言处理的复兴

另一方面,由于我们讨论的核心是受控生成问题,也不免要提到自然语言处理这一派系。

在 AlexNet 揭示深层网络和加速计算的可能性之后,困扰在所有深度学习领域头上的阴云都一并掀开了。

在黑暗年代,自然语言处理 (Natural Language Processing, NLP) 领域祭奠了无数具有价值的工作,诸如循环神经网络 (Recurrent Neural Network, RNN) 和长短时记忆网络(Long Short-Term Memory Network, LSTM)等网络框架都在这段时间内被发明(当然我们暂时不用过于注意其本身的功能和原理),有效将序列问题引入了深度学习领域。

image

简单来说,它通过建模了网络在时间上的传递关系,使得网络能学习具有强上下文逻辑关联的序列,而非仅限于平铺输入的简单问题(如尚未达到视频层面的图像问题)。

基于此,对视频、动作等在时间上强关联的“表示”,也有了被神经网络建模的可行性。

生成算法 —— 看好了,AI 是这么用的

就在 AI 在分类、回归等问题上发展得如火如荼时,发表于 2014 年的生成对抗网络 (Generative Adversarial Networks, GANs) 为 AI 揭示了新的研究方向,即生成课题 —— AI 能做的不仅仅是判断,还有创造。

而这一课题,也正是当今基于 Diffusion 的 AI 绘画相关研究的开端。

(GANs are) the coolest idea in Deep Learning in the last 20 years.

—— Yann LeCun, Facebook’s AI chief

(原本准备对毕业论文进行一个图的截,想了想还是不要搞得太抽象)

image

GAN 详解 - 知乎 (zhihu.com) 这里借用知乎一篇优秀文章的插图。

GANs 的原理为,构造两个 AI 单元分别作为生成器和判别器:

  • 生成器负责无中生有,试图凭空创建出与我们生成目标相似的假样本(以假乱真)
  • 判别器负责明察秋毫,用于检验生成器生成的结果是否足够满足我们的生成目标

通过这两个模块的左右互搏,我们试图使得生成器能够不断创建出更优质、更难分辨的作品。

tmpB352

上图为我在三年多前使用一个 Waifu 生成网站,通过 GANs 生成的,至今还被我用在挺多平台的账号上(笑

当时翘首以盼 GANs 找到新的突破口,创造更多 Waifu 的水友们。谁又能想得到仅在两年内,Diffusion 技术突飞猛进,俨然要取代 GANs 成为新的生成范式。(对于 Diffusion 的介绍则要移至下文前沿的地带了。

当然,GANs 在其它挺多领域其实也仍是适用的,但其留给 AI 最珍贵的财富还是对生成问题的向往。

Transformer —— 飞升与现代神经网络

在暂且排除纯粹的生成问题这一发展支线后,对 AI 主干影响最为强烈的仍是 2018 年提出的 Transformer 模型。大家或许都对此有所耳闻,即时并未听过其本名,必然也在 GPT(Generative Pre-Trained Transformer) 即生成式预训练 Transformer 模型中认识过它。

GPT 中的 Generative 虽与前文提到的生成并非同一算法,但其在精神上稍有延续;另一方面,Pre-Trained 这一关键词也正是我们下一小节所要讨论的。

Transformer 其本身的原理其实又稍显复杂了,也不知方不方便用简单的语句进行概括。

Transformer 与 RNN 同出身于自然语言处理领域,因此他们都天然关注着序列问题。但不同于 RNN 将序列建模为在前后紧密相关的线性序列,Transformer 倾向于对序列的全局进行建模(像是又回去了)

image

图源 Transformers are Graph Neural Networks | NTU Graph Deep Learning Lab

花絮:翻遍全网找到这张图之后,我发现早在五个月前写一篇 ChatGPT 使用相关分享时,就在介绍背景处就引用过同一张。而再往上还原模原样摆着前边介绍 RNN 的那张。我的审美还挺连贯。

区别于 RNN 的纯线性,Transformer 依靠注意力机制,通过网络构建输入中更复杂的图关系。

而这种对输入建模的自由度,也成为了 Transformer 在密集计算下,表示能力强于 RNN、CNN 的重要原因

再论“表示”:“表示”,即数据被计算机模型认知的方式,正如线性文本被 RNN 线性认知,图像矩阵被 CNN 靠局部特征矩阵认知。数据的表示形式天然就包含着某种假设(或者说源自人类认知的偏置)

但有趣的是,有时我们希望强化偏置的存在,并从偏置中学习我们期望的特征。而有时我们有希望能去除偏置,脱离人类因有限而显得可悲的视角。

[1806.01261] Relational inductive biases, deep learning, and graph networks (arxiv.org)

顺带分享一篇很喜欢的论文,虽然图网络的研究近年来已经褒姒了,但又没完全褒姒,因为 Transformers are Graph Neural Networks (乐 ?

通过这一建模特征,使得 Transformer 虽从 NLP 出身,但逐步被用到了更多的领域。我们最爱的图像生成也不例外(不过在 Stable Diffusion 中,其暂时只在 CLIP 部分出现,用于 Diffusion 的本体去噪网络仍使用基于 CNN 的 U-Net)

预训练 —— 工业化,但也大众化

预训练,则是我们先遣讨论的最后一步,也是实质上没有任何理解难度的一步。

随着数据量的扩增和训练成本的增大,深度学习领域原始的基于目标训练网络的任务被细化为了 通用的预训练 + 基于需求的微调,特别是在诸多语言相关的模型上。

这使得研发和课题迁移的成本大大下降,也是当今我们能使用众多语言相关的模型尝试有趣实验的基础。

由此,我们今天值得讨论的课题正式展开。

着手 —— 从我们最爱的 Diffusion 和 GPT

如果不是 AI 相关出身的爱好者,大多只会对 Stable Diffusion 和 ChatGPT 这两个词汇相对敏感。因此,我们也不妨从这两个产品入手,讨论生成的基本原理,以及我们能从中取得的思路。

Stable Diffusion —— 燎原之火

Stable Diffusion,这一产品发布于 2022 年 8 月,恰是一年之前。

Stable Diffusion 的公开发布,集扩散模型之大成,也真正意义上从大众层面开启了 AIGC 时代。

我对 Stable Diffusion 的认识相对较晚,但在这之前,就体验过了他的同门师兄 Disco Diffusion。

那一天,在为了头脑中突然蹦出的设定苦想参考时,AI 的力量成功勾引了我。让我白嫖谷歌的 Colab 画下了人生第一幅 AI 作图:city, show window, church, skyscraper, Greg rutkowski, Trending on artstation

image

混乱、破碎、但满足了我的一切幻想,我继续畅想有朝一日我能借用 AI 的力量创造更加稳定、更加满足我需要的内容,只是万万没想到 Stable Diffusion 来的那么快。

当然,随着 AI 的画作逐渐 Stable,这种抽象的醍醐味又仿佛找不回来了(也有可能是随着规范化,像这样通过 Greg rutkowski 一个画家关键词索引的暴力侵权行为被取缔了 xd

Disco Diffusion 支持的画家风格有 2256 个,不知其中有几位在 Artstation 上举起了 No AI 的大旗呢

Diffusion 大家族

从技术角度来看,AI 绘画热潮的兴起要归功于 扩散模型 的引入。然而,作为一项早在 2015 年于国际机器学习会议(ICML)上提出的理论构想,其初现并未引起广泛的关注。直至 2020 年 6 月,来自加州大学伯克利分校的一篇题为 DDPM 去噪扩散概率模型的 NeurIPS 论文 ([2006.11239] Denoising Diffusion Probabilistic Models (arxiv.org)),在更加庞大的数据集上展现出与当时最优的生成对抗网络(GAN)模型相媲美的性能,研究人员方才逐渐领悟到扩散模型在内容创作领域所蕴藏的威力与前景。

—— 扩散模型编年史 - AIGC Since 2020 (qq.com)

上面这篇文章十分值得推荐,其讨论了从 Diffusion 问世至今,其在不同子领域下的百花齐放和深入探究。

image

简单来说,Diffusion 系模型,基于 Diffusion 算法这一假设,通过深度神经网络搭建和学习生成过程,随着技术发展不断优化其效率和可控性,并通过引入了自然语言控制最终形成一个可用且易用的生成框架。

而接下来,我们可以顺着其脉络,逐步简单阐释这一模型背后的原理。

Diffusion 算法 —— 逆熵科技!!?

Diffusion 算法,亦称扩散算法。虽然标题有点逆天,但仅就结果而言,这确实是 Diffusion 算法的核心思路 —— 通过算力和智能对抗熵的增长,从无序之中再造有序(好中二啊)

image

熵,被用于计算一个系统中的失序现象,也就是计算该系统混乱的程度。

—— 熵 - 维基百科,自由的百科全书 (wikipedia.org)

Diffusion 算法的灵感来自于物理学,其套用了非平衡热力学中的扩散过程 —— 该过程随着时间的推移增加了系统的熵(或随机性)。比如气体最终会通过随机运动扩散开来,均匀地充满整个空间。

同样,我们所认识的图像,往往是一个稳定而有序的数据集合。而通过对其随机添加噪声,将最终转变为均匀分布。Diffusion 通过添加噪音慢慢地破坏数据的结构,直到除了噪音什么都不剩。

(如果读者熟悉摄影,可以试想在极弱光环境中把 ISO 逐渐拉高,拉到爆表,最终 CMOS 上采样到的就是传感器和机器自行产生的热噪声)

上述我们讨论的是 Diffusion 算法的前向过程,也就是真正的“扩散”。

但 Diffusion 算法中的精髓实际在于扩散的逆过程,亦即 DeDiffusion(乐)

(比较正确的称呼是 Denoising,降噪)

假设加噪过程,会让一切逐渐走向无序。但只要不是完全无序,我们依旧有机会通过先验知识和做功,让其恢复其本该所处的状态。

奇怪的关联课题 —— 那只小妖精

image

上图所示为物理学中的一个经典 神兽(划掉) 假想 —— 麦克斯韦妖(Maxwell's demon),于 1871 年由英国物理学家 James Maxwell 为了说明违反热力学第二定律的可能性而设想的。

麦克斯韦意识到自然界存在着与熵增加相拮抗的能量控制机制。但他无法清晰地说明这种机制。他只能诙谐地假定一种“妖”,能够按照某种秩序和规则把作随机热运动的微粒分配到一定的相格里。麦克斯韦妖是耗散结构的一个雏形。

可以简单地这样描述,一个绝热容器被分成相等的两格,中间是由“妖”控制的一扇小“门”,容器中的空气分子作无规则热运动时会向门上撞击,“门”可以选择性地将速度较快的分子放入一格,而较慢的分子放入另一格,这样,其中的一格就会比另外一格温度高,可以利用此温差,驱动热机做功。

—— 麦克斯韦妖 - 维基百科,自由的百科全书 (wikipedia.org)

麦克斯韦妖这一假想被证伪,因为这一机灵的小妖控制一个分子所消耗的能量(智能与做功),必然要高于其所带来的熵减,因而对于一个封闭系统而言,其熵依旧不可避免地增加。

但对于计算机,至少是生成图像这一问题,我们毫不犹豫地引入了 Diffusion 这只美丽的妖精。

基于逆熵科技(bushi),使用 Diffusion 进行图像生成的路径被姑且打通了。

image

基于深度神经网络的学习,我们让模型在扩散的每个时间步 \mathbf x_{t} 上,预测上一时间步 \mathbf{x}_{t-1} 时画面的状态,并通过迭代,从零开始从噪声的混沌分布中,“预测”出理想的图像。

在这里,我们隐去了通过 U-Net 构建预测网络的细节,以及构成框架的诸多 Trick。

至于啥是“理想”,我们可以留到接下来这一小节。

受控生成 —— S 属性大爆发!

如果说 Diffusion 算法本身只是学术界和技术圈的一头热,那么“受控”,或者说受语言所控,这一要素才是正在将 AI 绘画推向巅峰的罪魁祸首,也是让 AI 真正实用化的共同道路。

不难猜,背后的推手正是我们的 OpenAI 大爹,那个时候,他还很 Open(乐

而这就要论及生成技术发展的另一条线路了。

就在人们围绕着一系列生成技术载歌载舞时,OpenAI 抱着他们挚爱的生成式语言模型愈走愈远。GPT3 本尊的推出虽铺垫了后续震惊世界的 ChatGPT 和 GPT4,但其却并没有带来预料中的反响。175B 的巨大参数量和不够理想的推理效果并没能让他掀起过多的波澜。

护犊的 OpenAI 依旧没有放弃力大砖飞的道路,并将这一尝试应用在了人们未曾设想的领域 —— 2021 年 1 月 5 日,DALL·E 模型问世了。

DALL-E 通过 120 亿参数版本的 GPT-3 Transformer 模型来理解自然语言输入(例如“五边形形状的绿色皮革钱包”或“一只悲伤水豚的等距视图”)并生成相应的图片。它既可以生成现实的对象(例如“带有蓝色草莓图像的彩色玻璃窗”),也能够生成现实中不存在的对象(例如“具有豪猪纹理的立方体”)。它的名字是 2008 年动画电影 WALL-E "瓦力 (电影)"和 20 世纪西班牙加泰罗尼亚画家萨尔瓦多·达利(Salvador Dalí)之混成词。

自 2000 年代以来,已有其他许多神经网络有生成逼真图像的能力。而 DALL-E 的特点在于它能够通过纯文本描述生成这样逼真的图像。

—— DALL-E - 维基百科,自由的百科全书 (wikipedia.org)

image

通常,我们认为这是语言模型跨入多模态的首次尝试,并奠基了后续 GPT-4 的跨模态实践,但由于相关模型未能开源所以我们难以究竟其细节。

但与他伴生的,被正式开源的新技术 —— CLIP(Contrastive Language-Image Pre-training,图文对比预训练),其通过让模型理解图像与语言之间的关联,真正将深度学习推向了跨模态的时代,也让文本控制生成成为可能。

另:后续所有涉及跨模态对比预训练都被称为 CLIP,即使模态不是 Image,足以证明影响力 hhh

image

通过对比,CLIP 构建了文本向量到图像之间的关联,进而,我们有希望文本去假设一个图像存在的特征。

而这,正是文本受控生成的基石,也是揭开 AIGC 时代序幕的奠基工作。

AI 绘图 —— 请你执“笔”

基于上述工作,我们如今所认知的 AI 绘图真正成为了可能,再往后,则就是我们耳熟能详的 Stable Diffusion 等一系列工作了。

image

通过一个逆向的去噪过程,我们能通过 语义、文本、图像等多种表示对最终的生成结果进行控制,通过一次次迭代,我们从零开始,从无到有,绘制了精美、凝结着人类艺术之光的图样。由此见证人类智能与人工智能并肩的伟力。

再往后,就是 Lora、ControlNet 这些另我们耳熟能详的工作了,但由于其与今天的主题关系不大,就不具体提及咯。

GPT —— 通用人工智能的火花

GPT,则是生成型人工智能的另一条道路,OpenAI 把 Generative 的使命刻在了它的名字上。

同样的,GPT 的发展也并非那么一帆风顺,它更像一个寒窗苦读十年的学子,在大家都以为他已经被源源不断可笑的教育扼杀之后,一鸣惊人。

GPT 与 BERT —— 九子夺嫡

在 ChatGPT 一夜爆红,GPT 成为学术界和工业界共同的宠儿之前,其与 BERT 之间范式的拉扯是一个难以避过的有趣课题。(当然,参与拉扯的也不止这两位

在 Transformer 架构真正一统自然语言天下之后(没有故意忽略 RWKV 的意思),针对 Transformer 架构逐渐出现了一系列高级应用

image

如图,基于不同模块的排列组合,则会构建出各不相同的大语言模型(之前听读书会看到的图,对后面几个模块的模型技术细节基本就一无所知了)

作为其中的第一个模块,即架构,就是我们在这一节讨论的核心:

image

图源:一文读懂 GPT 家族和 BERT 的底层区别——自回归和自编码语言模型详解 - 知乎 (zhihu.com)

如图所示,随着对 Transformer 其 Encoder 和 Decoder 架构的认知,以及对不同具体任务的理解,分化出了诸多不同的语言模型架构。今天下三分,益州疲敝,此诚危急存亡之秋 ?

简单来说,这三个学派分别是:

  • AutoRegressive 自回归模型:以 GPT 为代表,表现为专注使用 Decoder 模块,主要适用于生成任务,并在大参数和大规模预训练下表现出了极强的少样本和零样本能力。
  • AutoEncoder 自编码模型:以 BERT 为代表,表现为基于特定目标训练双向感知的文本 Encoder,并输出一系列可用于文本理解的向量,被广泛用于各式工业界中。
  • Encoder-Decoder Seq2Seq 模型:以 T5 为代表,同时使用了 Encoder 和 Decoder 的架构,同样使用双向注意力机制,但能适用于更多的生成类型任务。
  • 新玩家 GLM (General Language Model):综合了上述三组模型的训练思路,并意图通过预训练同时实现多种目标。但这一架构的成果暂时仅有 ChatGLM 系列,虽效果不错,但暂未被全面认可。

众所周知,三幻神有四个,但我们讨论的核心嘉宾依旧是 GPT 和 BERT 两位。

其二者的核心区别在于,GPT 是专为生成所生的模型架构,他能做的仅有根据上文内容和庞大的预训练知识进行简单的预测,从微妙的单字接龙中涌现智能。有那么一丝像人类的笨拙,对吧。

image

相比之下,BERT 的处理方式会显得更高明些,它通过选词填空进行预训练,并天生被给予了明确的目标,这使得其易于进行训练,并能被很好地通过一系列操作嵌入到诸多下游任务中(上图为一个简单的情感分类任务)。这也使得 BERT 成为了诸多课题的掌上明珠。

但除了坚定的 OpenAI,大家都没想到这种对基础知识不断积累的笨拙,在规模化和更精细的调教后,涌现出了惊人的智能空间,而看似早慧的 BERT 却止步于简单的任务和理解。

当然,这只是说明 BERT 并不适用于构建通用人工智能,但其依旧在很多领域大放异彩。

诸如我们上文提到的 CLIP,其编码文本和图像特征的步骤,就是基于 BERT。同时,对因 ChatGPT 出现而掀起热度的向量数据库领域,将文本向量化这一核心操作,也多是基于 BERT 的编码能力。

(虽然也能基于生成式方法做,诸如使用 RWKV 完成阅读后的最终状态)

接下来,我们则可以从 GPT 的训练过程中讨论智能的出现步骤。

Instruction Tuning —— 你干嘛啊(指询问)

突然发现写到这里就可以开始抄之前写过的东西了,我太开心了。

image

如图所示,为网友整理的从初版 GPT-3 进化至如今我们所见 ChatGPT 的脉络图。

其中包含了如 Instruction Tuning、Training on Code、RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习方式) 等诸多细节的引入,并由此揭示了大模型 零样本能力、ICL(In Context-Learning,基于上下文学习)能力、CoT(Chain of Thought,思维链)能力、与人类交互能力 等细节能力的由来。

关于这部分的介绍可以参考这篇文章:拆解追溯 ChatGPT 各项能力的起源 - 知乎 (zhihu.com)

但仅考虑我们今天的课题(诸位还记得我们的课题是啥吗,我都快忘了),我们的讨论会稍显收敛,并落脚于 Instruction Tuning 这一处细节。

在一个大语言模型的训练过程中,最少会经历三个阶段的训练:

  • 预训练阶段:通过海量文本数据,无监督让大模型自行预测,并基于此学习一定程度的语言理解能力
  • 微调阶段:通过一部分优质文本样例,基于特定文本对,让大模型拥有一定的受控生成能力

随后,也即是最关键,如今更多为人们所讨论的指令微调阶段:

在这一环节中,训练师们将训练样本基于指令进行转化,并训练大语言模型内部建模对问题的理解能力,并由此使得 LLM 获得人类所需要的智能。

下面是一段来自 ChatGPT 的解释:

Q:你能为我简单介绍指令微调和微调的区别吗?

A:当然可以,我会为你解释 GPT-3 模型的原始微调样本和 Instruction Tuning 样本的例子。这两者之间确实存在一定的相似性,但关键区别在于任务指导和输入指令的明确程度。

原始微调样本: ​

在 GPT-3 的微调阶段,我们通常使用特定任务的标注数据来优化模型。例如,在情感分析任务中,输入是一段文本,而输出是文本对应的情感(正面或负面)。在这种情况下,输入和输出的样本可能如下:

**输入:**I had a fantastic time at the concert last night.

**输出:**positive

这里,输入和输出的格式相对简单,模型需要根据输入文本生成正确的情感标签。

指令微调样本:

对于 Instruction Tuning,输入包含更明确的任务指导。在这种情况下,我们可以为情感分析任务创建一个包含指令的输入:

**输入:**Determine the sentiment of the following text: "I had a fantastic time at the concert last night."

**输出:**positive

在这个例子中,输入中包含了明确的任务指导(“Determine the sentiment of the following text”),告诉模型需要判断给定文本的情感。这使得模型在执行任务时更加清楚地理解输入指令。

总的来说,GPT-3 原始微调样本和 Instruction Tuning 样本的主要区别在于输入指令的明确程度。在原始微调中,输入和输出的格式通常比较简单,而在 Instruction Tuning 中,输入会包含更明确的任务指导。在实际应用中,你可以根据任务需求和数据可用性选择合适的方法。

而这一学习方法的引入,真正让 GPT 实现了作为语言模型的通用性和价值。

Prompt Tuning —— 训练师 to 调教师

随着 Instruction Tuning 的引入,对于 LLM 的使用范式出现了一定的区别。

但总体而言,基本呈现为两个方向:

  • 对于一些较小易于训练的本地模型(通常家用门槛为14B以下),通过自己收集指令微调样本训练 Lora,并以此达到让模型完成指定任务的目标。
  • 对于一些较大而难以训练和部署,但更加具有通用能力的极大模型(70B往上的基本具有通用能力的模型),通过用户根据使用情景和输出效果,不断优化对模型输入的提示词,从而完成指定任务。

由后者,也衍生出了诸如 ToT(Tree of Thought)、GoT(Graph of Thought)、以及通过程式化构建 Agent 系统 来辅助 LLM 实现复杂功能的方法,但这就又偏离今天的主题咯。

仔细想想,这里跟我们的正题似乎已经偏离太远了。

但相信我,讨论到的每一处最后应该都能用上,吧(大嘘)

正题 —— 动画生成技术的发展

终于,我们回到了最初的起点。而这时,离这篇文章开坑已经过去好长一段时间了。

用了整整一大节把当今的AIGC场面遍历了一番,终于能基于此窥探动画生成技术的发展道路了。

不过即便如此,我们的出发点依旧不是AI动画生成本身,而是要从我的毕业论文说起(悲)


百无一用是书生