Status
Tags
URL
分享者
简介

当我在 Midjourney 上输入这段内容后,AI 绘制了上面这张图。
Ultra realistic tree with green beech leaves, stunning forests in the background, sunrise light, art by Greg Rutkowski + Alphonse Mucha + Rien Portvliet, 8k --ar 16:9 --testp
这段话大概的意思是,希望有一些超现实的树木和光影,在树林中。以及按照三位喜欢的艺术家的作品混合下风格。
虽然成品很满意,但是这个过程中到底发生了什么?AI 究竟是如何知道这三个艺术家混合在一起的风格是什么样的呢?画的时候为何知道树林和光影是这个感觉?AI 能创造一种新的艺术么?
上述这些疑问,在申请完 Dall · E2,Stable Diffusion 等新工具后,反而更加困惑了。因为目前 AI 创作内容(简称 AIGC)的应用如雨后春笋冒出来,而周边配套的服务也开始出现,如分享或交易提示词(就是上面那段文字),又或者反 AIGC 的服务等。
之前和 light 直播时,他有个观点对我启发挺大:
如果你觉得一个领域的发生的事情很重要,想理解的话,就不要去判断单个信息,而是去建立基本框架。从最基础的概念来理解。如果你不这么做,那就不要花心思关注单个信息了。
的确,如之前介绍过的层次步速原理,追求最上层的变化,而忽略了对基础结构的理解。所以接下来的一些时间,会试着分享与总结一些关于 AI 生成内容(主要会以图像为主)的相关文章及概念。

AI 内容生成虽然发展很快,但是其根本的部分并没有变化很多,所以最重要的是用自己的方式来理解背后的原理(但是并非是技术细节)
基础分为三个部分:机器学习的基础,任务和模型,应用。
- 基础是最稳定的一层,所以这个领域的知识会比较长期有用。
- 而应用程序则是变化最快的部分。这样当了解了底层,上面的东西很快就能理解。
这篇文章来自于 Jon Stokes ,感谢黄东炜的推荐。本来打算直接翻译一版,但后来发给几个朋友提前看说内容略枯燥,所以根据自己的理解重新编排了内容,只保留 AI 生成图片部分。如有兴趣可以浏览全文。
下面为编译内容
0. 机器学习能做的三件事
生成:用机器学习来创造新内容,如 AI 作图
分类:所有形式的分析、特征/对象提取等都在这个部分进行,如人脸识别开门
转换:比如文字翻译等,以及调整生成出来的内容,都算在此部分
1. 机器学习的基础
当我们输入上面一段如咒语的内容时,其实机器并非是在「创造」,而是在「搜索」。换个角度来看,所有的这些内容早就已经存在,我们只不过是用模型在空间中寻找这个已经存在的东西。
所谓的生成提示,其实是查询结果的呈现,这就像在 Google 中输入搜索查询内容。向模型输入文字后,模型会这么继续执行:
- 将你输入查询的内容,转化为其数字空间中的一组坐标(即它训练时候见到过的),然后
- 将在这个空间中最接近你查询坐标的文件,返回给你(当然会需要多个步骤反复缩小范围)
简单来说,这就像你去一个巨大的书店,里面有位店员内心背下来了每个书架上的书籍分类。当你告诉店员要一本中国的科幻小说,店员就会根据自己的记忆,进去拿出来几本符合你的要求的书给你选,你看到之后觉得其中有些太老,要新一点的。店员听到后留下几本新的,然后又进去翻出来几本新的。最终你从中选到了需要的那本。
所以那段「提示词(Prompt)」并非总要用自然语言,相反,更应该继承我们用 Google 搜索的方式,比如不断增加关键词细化,缩小结果列表使其符合想要「生成」的内容。
Google 在其服务器上,其实对所有网页都进行过结构化的整理,而 AI 的模型中,其实也有一个类似的结构,所以 Google 只能「记住」他的爬虫抓取过的网页,而 AI 模型只能「记住」它训练过所有可能图像/文本的部分空间。

从这个角度来看,可以有下面的一组映射关系
- 爬取 = 训练
- 搜索 = 提示
- 优化搜索 = 优化提示
- 过滤搜索 = 调整模型参数
所以总结来说,用 AI 生成内容工具时,最好将输入的提示词,视为搜索查询而不是提示命令,这样使用 Google 的技能和直觉将会帮助你更好地使用。
1.1 AI 是如何查找图片的呢?
如果内容生成一种搜索形式,那么可以看看 AI 是如何做到的。
AI 的数据集合,并非是硬盘上的一组文件。而是分布在一个三维坐标系中,指向 3D 空间中的某个点。

假设我们有一张某种类型汽车的彩色图片,我们将其转化为 3D 空间中的一个点,并将其绘制在上图这种 3D 空间里面,这就需要我们先定义 XYZ 三个轴的意义。
比如我们将 X 轴定义为汽车、Y 轴定义为马车、Z 轴定义为自行车。我们通过测算照片与其中某个点接近程度,将其绘制在三维空间里面。比如,摩托车就位于汽车和自行车之间,而三轮马车可能位于自行车和马车之间,我们将其映射在坐标系中:
- 用 0 - 10 来对三个属性进行打分。
- 0 表示「汽车(或者自行车、马车)」特征最少,10 表示最多
- 所以给摩托车打分就是:汽车 3 分、自行车 4 分、马车 0 分
所以我们会得到下图

我们不能对空间中的一个点做太多事情,所以我们将重复上面的过程,将在一个包含和车辆相关的 10 张图片的文件集合中映射到坐标系中。

使用汽车/自行车/马车的分类方案,我们将得到图片们在一个空间的分布情况。

即使你不去看文件中的图片本身,也能通过这个分布,知道这组图片中大部分内容都是某种汽车。仅仅通过查看 3D 空间中的点的分布,我们就能推断出整个数据集中的有用信息。
深度学习模型的内部「记忆」,由类似上述模型的多维版本构成。比如 Stable Diffusion 的图像模型训练过程,就涉及到向模型展示大量的图片,以便它可以提取图片的不同特征(比如汽车、马车、自行车),然后它将图像的特征存储在这个多维空间中,以便它的不同区域倾向于不同类型的相似图像。
和打标签不同的是,每个坐标之间还有空间关系,比如在空间中,自行车这个特征靠会摩托车近一些。但如果一张图片打了自行车的标签,那就和摩托车没啥关系了。

注意,模型的潜在空间并不是某种具体的文件格式(比如 JPG/PNG),并且将其按照某种方式组织。它不是数据库。相反,模型的数值「权重配置」存储了图像不同的属性和特征,如形状、颜色、特点等,甚至与所描绘内容的相关抽象概念(美丽、阴暗)等。因此,通过训练图像留下独特的印象和潜在空间的坐标,就可以返回查询想要的配置。
1.2 生成、分类和转换
我们已经看到 AI 内容生成,实际上相当于使用特殊关键词,来搜索可能的数字空间。
但是现在我们对模型的训练方式有了更多了解,我们可以看到 AI 内容工具的所有三个核心功能,都只是搜索的变体 —— 根据任务,为模型提供特定输入,并要求它提供特定类型的输出。
对于AI 生成图片,过程分解如下:
- 生成:文本 => 图像
- 分类:图片 =>文字
- 转换:图像 => 图像(或文本 => 文本)
所以我们可以这么理解
- 当你进行「AI 内容生成」时,您正在使用文本查询,来返回位于数据空间中某个点的图像。
- 当你进行「AI 图像分类」时,您正在使用图像查询,来返回潜在空间中输入图像附近的文本。
- 当您进行图像转换或文本摘要时,您正在潜在空间中搜索你用作输入的文件附近的文件。
现在应该清楚为什么人们会在他们的 DALL-E 提示中加入类似于 Google 查询的术语,比「artstation 趋势」、「虚幻引擎」等术语。这些术语让您的查询更接近于模型的潜在空间,表示有关这些词在训练阶段与它们相关联的输入图像的知识 —— 但如果超出他们的训练集,比如加上关键词「flomo 上的趋势」,就没有用处。

所以从这个角度来看,AI 并没有在「生成」,只不过我们大多数的需求,在它的训练集合内都能得到满意的答案,才看起来像「生成」,但实际上我们在做的是「搜索」 —— 比如下面这个岗位。

2. 任务和模型

尽管机器学习领域的发展很快,但如果知道 ML 研究人员正在解决什么样的问题,你就可以驾驭快速变化的领域。
- 试图将 ML 应用于一系列离散任务,这些任务的成功条件得到了很好的理解,并且可以轻松地衡量进度并将其传达给潜在用户。
- 开发、改进和训练大型模型 以完成其中一项或多项任务。然后以面向用户的产品形式 (Google)、API (OpenAI) 或开源软件 (Stability AI) 的形式发布以供公众使用。
- B2B 和 B2C 软件开发人员 通过调用 API 来在这些模型之上构建面向用户的应用程序,这些 API 使他们能够访问模型可以执行的任务。
ML 不仅有许多不同的市场,而且还有许多不同类型的市场—— 所有这些市场都将由 ML 研究人员将启用的数量少得多的离散功能提供支持。因此,如果了解功能和模型,你将更容易跟上不断涌现的新应用程序。
因此,本文的大部分内容是对 ML 任务和模型的概述,旨在引导您了解该领域,并在您进一步探索时为您提供一些参考。我将从分解上图中的一些任务开始,然后我们将查看模型层,最后,我将以资源指针结束,以跟上应用程序的流失。
2.1 机器学习任务
以下部分侧重于处理文本和图像的机器学习任务,音频和视频也是同样。
虽然前面讲过任务可以分为生成、分类和转换三大类,但是还可以进一步细化:
- 对整个事物进行分类,例如「这句话表达了一种消极的感觉」或「这是一张自然环境的照片」
- 对事物的一部分进行分类 ,例如「这个句子中的这个词是一个名词」或「这个像素区域包含一棵树」。
- 比较两件事来衡量相同/不同,例如,「这个标题不适合/不适合这个图像。」
- 提取事物的一部分,例如,「这里是这个文档中的一个句子,它是一个问题的答案」,或者「这里是这张照片中的所有面孔」。
- 转换 一个东西,例如,「这是根据你输入的内容,产生的一个低年级写作的文本」,或「这是一张建筑照片,但是按照梵高的风格进行绘制」
- 生成一个东西,例如,「这是一个有见识的作家可能会根据您的提示制作的文本」或者「这是一个有才华的艺术家可能会根据您的提示绘制的图像。」
- 预测一件事,例如,「这可能是您刚刚输入的这个不完整句子中的下一个单词」,或「这里是可能填补输入图像中空白的像素。」
上述类别之间有很多交错地带,因此最好不要过于执着于将不同的任务放入「正确」的任务中。例如,文本和图像生成实际上是一种预测。此外,提取依赖于分类,「整体」和「部分」之间的区别可以随上下文而变化。但总的来说,上面列出了 ML 所做的各种事情。
我们还可以将上述任务概述为阅读与写作这样的两大类:
- 解释一段输入,用以识别、标记、分类和区分事物(1-4)
- 生成与输入事物具有所需相似性的新事物(5-7)
2.2 训练与输入
在 ML 中遇到某些类型任务往往有多个输入,比如你要比较两件事情,则必须同时提供这两件事才能让模型发挥作用。又或者,你必须在原始的输入之外提供一些上下文。
对于 AI 内容生成中通常使用的模型,保持输入和训练数据之间差异的一种方法,是记住潜在空间的概念,即从搜索的角度考虑一切。
- 训练:关于在线式世界中建立概念和信息之间关系的数学的表示(无论其是什么)
- 输入:关于在潜在空间中定位一个或多个区域,然后进行询问
- 对单个输入:潜在空间这个点代表什么信息,或者这个点附近有什么,与其相反的是什么?(即生成、转换、预测)
- 对多个输入:这些点在潜在空间中相距多远或者靠多近(即分类和提取);这些点之间的中点是什么,或者与他们相邻的是什么(即生成、转换、预测)
从上面的内容得知,我已经将第一部分中的所有六种任务类型,框定为搜索潜在空间以寻找一个或多个点。
2.4 解释图像
在图像领域,机器学习主要所做的是下面的事情 —— 从 PS 插件到自动驾驶,从易到难排列:
- 图像分类
- 物体检测
- 图像分割
图像分类是最容易实现的,因为你只需要训练模型来分辨图像中的内容。例如,我们可以很容易地构建一个简单的图像分类器,将我们的个人照片库中的内容分类到三个类别中的一个——动物、蔬菜或矿物——通过在标记有三个类别之一的照片上训练一个神经网络。

图像分类用例包括:
- 在医学图像中,检测组织异常和其他健康状况不佳的迹象。
- 为农业或军事目的定位卫星图像中的地理特征。
但是那些包含不止一种东西的照片呢?对于此类图像,经过训练以进行对象检测的模型可以告诉我们图像中描绘的不同对象,甚至可以在它们周围绘制简单的边界框。例如可以使用对象检测将街道场景分解为汽车、人物和景观特征,以进行监视或建造自动驾驶汽车。

对象检测用例包括:
- 在个人照片库中标记或标记照片
- 用于机器人或自动驾驶车辆的视觉导航系统
- 为视障者生成图像内容的文本描述
图像分割 本质上是对象检测的细粒度版本,模型不是在图像中的对象周围绘制粗略的边界框然后枚举它们,而是根据它们所属的对象类型对所有像素进行分类。

图像分割用例包括:
- 照片编辑,您要在其中选择一个对象以删除或操作它。
- 色度抠图(即在绿屏前拍摄视频,然后交换背景)。
在实践中,不同类型的 ML 支持的内容生成和操作工具将使用这三种功能中的一种或多种,具体取决于您使用它们执行的任务类型。甚至可能不清楚正在使用哪种功能,因为这些任务之间有很多重叠。
2.5 转换和生成图像
在上一篇文章中,我们介绍了 Stable Diffusion 等 AI 图像生成工具如何工作的理论,并且了解到图像生成和图像到图像转换,只是相同功能的两个变体。
回顾一下, 图像生成 模型接受一个文本提示,并通过搜索模型的潜在空间基于它创建一个新图像。

图像生成用例包括:
- 从草图和现有艺术品为文章、故事和游戏创建新艺术品
- 为动画或其他类型的视频生成关键帧
图像到图像用例包括:
- 快速将原始图纸转换为完全实现的图像
- 「转化」受版权保护(甚至带有水印)的图像,以便获得免版税版本。
2.6 了解模型
本文开头该图中间的主要部分(显示模型本身的部分)相对于其两侧的区域如此集中的原因之一是训练需要花费大量资金具有数十亿参数的大型模型。
由于 ML 中的性能似乎随着参数数量和数据集的大小而扩展,在可预见的未来,越大越好。这意味着在面向用户的应用程序的庞大、不断搅动的生态系统背后,将存在一些功能有限的大型、昂贵的模型。
需要明确的是: 训练这些模型的成本很高,但是一旦成功训练好它们,运行成本就会降低一个数量级。以 Stable Diffusion 为例。训练它的成本约为 60 万美元,但现在你可以在一台不错的游戏 PC 或一台好的笔记本电脑上运行它。

因此,虽然在训练方面一定程度的集中化是不可避免的,但使用经过训练的模型甚至调整权重以合并新的训练数据,将会成为任何拥有厉害的 GPU 的人都可以做到的事情。但就目前而言,我们仍处于模型集中化的时代。
附录:数的形而上学
当你数到一个从未数过的数字时,你会认为「发明或创造」了这个数字么?我们多数时候只能说「找到」了它,或者「偶然发现」了它。
所以大多数人对于数字的直觉,是认为他们早就作为宇宙的一部分「客观存在」。当我们进行各种对于数字的计算时,我们感觉到并不是每个结果都是一个新的数字,而是某个已经存在的数字而已。
这就是奇怪的部分,我们在模型中的每个文件,都可以映射为某个整数,那么是否可以说,除了我们对这些数字内容的看法,你能看到的任何数字文件(比如音乐、电影、图片)本身就已经存在于世界上?
这种思考会让我们除了知道AI「如何」创造内容,也会让我们思考他们「为什么」能生成内容。