Transformer 神经网络正在迅速使机器人技术变得更加有用。请看他们昨天发布的 Physical Intelligence 视频,他们的机器人在其中清洁从未接受过训练的家中的厨房和卧室!
请观看小鹏汽车的这段视频,回顾他们在正在进行的上海车展上讨论的内容,包括他们的机器人如何使用比汽车更多的 AI 芯片! 另外,请观看视频的结尾,了解他们的机器人在汽车工厂中工作的情况!
机器人技术中有很多半导体内容!
如果我们想推断哪些参与者非常适合机器人技术的崛起,那么了解机器人技术工作原理的基本原理非常重要,而计算机视觉和变压器是当今机器人革命的核心。
等等,英特尔呢?
如果您阅读了上周的文章,是的,我说过我们会在这篇文章中介绍收益,并从技术主题中休息一下。
英特尔显然是我想讨论的公司,尤其是考虑到最近的所有新闻。但 Intel 在周四收盘后报告,我将在周五离线开车前往我在伊利诺伊州尚佩恩的老地方参加马拉松比赛。您现在会收到这篇文章,下周会收到一篇 Intel 文章。
恰好,我下周将参加 Intel 的 Foundry Direct Connect,因此我将在下周晚些时候报告 Intel 收益和 Intel Foundry。马拉松 + 立即 6 小时开车回家 + 往返加利福尼亚的航班......我会变得一团糟,但是,嘿,我的手指应该还能打字 😂
与计算机视觉和旅行相关:我上周参加了高通的自动驾驶研讨会,最终也会分享更多相关信息。
一个简短的预告片 — 我去了一些 Snapdragon 驱动的游乐设施:



与此相关的是,我也一直在了解英特尔汽车,该公司昨天在上海车展上发布了公告:
第二代英特尔 SDV SoC 是汽车行业首款利用多节点小芯片架构的 SoC,使汽车制造商能够根据其需求定制计算、图形和 AI 功能,同时降低开发成本并加快上市时间。
小芯片进入汽车行业!未来是分解式设计!
好,继续节目。
Vision Transformers
Previously, we examined the history of computer vision with a specific focus on convolutional neural networks. If you missed it: Part 1.
ConvNets took off in computer vision because they’re engineered for image tasks. Their tailored design made them both efficient and broadly useful from 2012 or so onward:

但是 2020 年发生了什么?
好吧,在 2017 年的语言处理领域,Google 的 Attention Is All You Need 论文介绍了 Transformer 及其自我注意力架构。
计算机视觉研究人员看到了 transformer 的成功,并想知道他们是否可以将这些技术应用于视觉处理并完全抛弃卷积。
2020 年底,另一个 Google 团队也这样做了,推出了 Vision Transformers。作者使用了与文本相同的 transformer 架构,但使用了图像。
事实证明,如果在足够大的数据集上进行训练,Transformer 可以匹配或优于计算机视觉的 CNN!
在这篇文章中,我们将揭示视觉转换器的工作原理、它的重要性以及对半导体行业的影响。
首先,让我们深入研究一下同样来自 Google 的开创性 Vision Transformer 论文!
一张图像胜过 16X16 个单词:用于大规模图像识别的转换器
本文的美妙之处在于,Vision Transformers (ViTs) 具有与语言转换器非常相似的架构,但只是对图像 “patch” 而不是单词进行作:

图像补丁只是像素组,例如 16×16 像素的平方。
为什么要对色块而不是像素进行作?自我注意是二次方的,因此它不能很好地扩展。自我注意会将每个元素与其他每个元素进行比较,因此对于 224×224 的图像(~50K 像素),即 ~50K * ~50K = ~25 亿次作。
相反,我们可以将图像分成 16×16 个补丁,并且只需要在这些补丁之间进行自我注意。因此,224×224 图像有 14×14 个补丁(196 个标记)。那么自我注意只需要 196*196 = ~38K 次作,这比 25 亿次作实用得多。
同样,这里的主要收获是作为标记的映像补丁:
图像补丁的处理方式与 NLP 应用程序中的标记(单词)相同。
Vision Transformer 与 ConvNet
还记得所有关于卷积神经网络如何将先验编码到架构中的讨论吗?
Transformer 缺少一些内置假设,这些假设使卷积神经网络对图像数据如此有效。如前所述,CNN 有两个关键的归纳偏差:局部性和翻译等方差。局部性意味着模型假设附近的像素比远处的像素更相关,而平移等方差意味着如果对象在图像中略微移动,模型仍然可以识别它。
这些偏差使 CNN 能够从有限的数据中有效地进行泛化。
相比之下,Transformer 平等地对待所有 Importing 标记,并且不承担任何空间结构;Self-Attention 会关注所有其他补丁,而不仅仅是邻居!ViT 对翻译下的局部模式或稳定性没有天生的偏好,但必须学习它。这为他们提供了更大的灵活性,但这也意味着他们需要更多的数据和计算来学习 CNN 免费获得的有用视觉模式。
因此,使用较小的训练数据集时,结果似乎“令人沮丧”:
当在没有强正则化的 ImageNet 等中型数据集上进行训练时,这些模型产生的准确度适中,比同等大小的 ResNet 低几个百分点。这个看似令人沮丧的结果是可以预料的:Transformer 缺乏 CNN 固有的一些归纳偏差,例如翻译等方差和局部性,因此在数据量不足的情况下进行训练时不能很好地泛化。
但是,当训练集非常庞大(14M 到 300M 图像)时,更通用的 Transformer 架构优于特定领域的 ConvNets!
Transformer 具有更通用的架构,但可以学习我们人类编码到 CNN 🤯 中的先验
但是,如果模型在更大的数据集(14M-300M 图像)上进行训练,则情况会发生变化。我们发现大规模训练胜过归纳偏差。我们的 Vision Transformer (ViT) 在以足够规模进行预训练并转移到数据点较少的任务时,可以获得出色的结果。当在公共 ImageNet-21k 数据集或内部 JFT-300M 数据集上进行预训练时,ViT 在多个图像识别基准上接近或击败最先进的技术。
这太神奇了。有了足够的数据,Transformers 可以学习 ConvNets 的假设。
而且它不止于此,变压器可以超越 CNN 的代表性限制!
Transformer 可以学习 CNN 可能遗漏或难以有效编码的全局依赖关系、复杂模式和关系。
如何运作
我非常支持在高层次上理解事物是如何运作的,因为大多数人只需要足够的技术细节来理解为什么某件事很重要。为什么比如何对大多数人来说更重要。
但在这种情况下,考虑到 transformer 现在的重要性,我认为值得深入研究 Vision transformer 的工作原理。这将有助于理解未来的创新,如视觉-语言-行动模型 (VLA)。
所以让我们来谈谈技术。我们稍后将缩小(如果需要,请跳过)。
在模型设计中,我们尽可能地遵循原始的 Transformer (Vaswani et al., 2017)。这种刻意简单的设置的一个优点是,可扩展的 NLP Transformer 架构及其高效的实现几乎可以开箱即用。
同样,这个想法是使用于图像处理的神经网络架构尽可能类似于语言处理中使用的架构;将图像补丁视为令牌可以在视觉和语言之间实现架构重用。
这是 Vision Transformer 架构(左)和标准语言 Transformer(右)。请注意,Vision Transformer 只是标准的 transformer 架构,带有一些额外的前处理和后处理。

第 1 步:映像到补丁
如前所述,输入图像被分割成固定大小的块(例如,16×16 像素):

接下来,每个补丁被展平为一个 1D 向量,因为标准 Transformer 接收一个 1D 标记嵌入序列作为输入(例如,一个单词列表作为 LLM 的输入)。由于图像是二维的,因此将它们强制转换为一维在概念上类似于将补丁中的所有像素值展开为一条线。拼合使每个图像块看起来像一个 “单词”,因此 ViT 可以像处理句子一样处理图像。
假设您有一个 16×16 的影像块(256 像素)。每个像素有 3 个值 (RGB),因此此补丁是一个 16×16×3 块。16×16×3 = 768 个值→变为长度为 768 的一维向量。所以这就像从左上角到右下角读取每个 RGB 值,然后将它们按顺序放在一个长列表中。
为了简化绘制,现在假设它是一个只有 2×2 像素的补丁:

展平此补丁会得到一个 1D 向量(即列表):

因此,每个拼合的补丁都是一个 RGB 值列表,因此图像被转换为一个拼合补丁的列表(即[[patch 1], [patch 2], …]
)
第 2 步:线性投影
接下来是线性投影。但这到底是什么意思呢?

所以我们有一个扁平化的补丁列表,但 Transformer 还不能从中学习。它只是一堆像素。不表示边缘、线条、拐角等的内容:

这就是它变得有点抽象的地方,跟我说。但我们需要将其转化为有用的东西。我们需要将这些 RGB 值投影到嵌入中,方法是通过可训练的神经网络层发送每个补丁,将其映射到更高维的空间,例如在他们使用的论文中,他们使用了 768、1024 或 1280 维度:

这一步构建了我们所说的潜在空间(或嵌入),其中相似的补丁最终“靠得很近”,维度开始编码视觉结构。

我知道。潜在空间是一个很难的概念,因为它非常抽象。继续坚持下去,我们会解开这个。
从概念上讲,学习语言处理中的潜在空间要容易一些:

对于 LLM,latent space 是语言数据的压缩表示形式。它是在潜在空间中“紧密相连”的相似单词、短语或想法的映射,以便模型可以高效工作。它不是原始文本,而是模型构建的结构。

这就是我们说 LLM 是“互联网的压缩版本”的意思。它们不像 Wayback Machine 那样存储原始 Internet 文本,而是从输入数据中内部化模式。数万亿个单词被提炼成数十亿个参数,这些参数编码单词、短语和想法之间的关系。
好,回到图片上来。从概念上讲,图像的线性投影类似于语言的标记嵌入。线性投影采用原始像素值,并将它们映射到可以出现视觉结构的空间中。在这个潜在空间中,具有相似视觉模式的补丁更紧密地聚集在一起,维度开始编码诸如边缘、纹理甚至物体的早期暗示等特征。
此时,模型还不知道 “cat” 或 “tail” 是什么。但是,一旦将色块嵌入到此空间中,Vision Transformer 就可以开始比较、权衡和推理图像区域之间的关系。
就像 LLM 在语言的压缩几何上运行一样,Vision Transformer 在视觉结构的压缩几何上运行。

与此相关的是,有一个很棒的播客叫做 Latent Space,例如,这是对 SF Compute 的联合创始人 Evan Conrad 的精彩采访。
如果我没有解释清楚,很抱歉!如果你在某个地方挂断了电话,请告诉我,我会努力改进它。
第 3 步:添加位置嵌入

此时,我们已经将每个图像块都变成了一个位于潜在空间中的向量。每个补丁嵌入都编码了一些局部视觉结构;它可能会拾取纹理、阴影或边缘的一部分。
但是,ViT 目前不知道此补丁的 x 和 y 坐标;Patch 嵌入的序列只是向量的集合,没有顺序、位置或空间结构。因此,模型不知道补丁是来自图像的左上角还是右下角。
但空间结构在视觉中很重要。还记得 CNN 中内置的归纳偏差吗?局部性和平移等方差使 CNN 能够假设附近的像素更重要,并且即使在空间中略微移动,对象仍可识别。变形金刚不是免费得到的,但必须学习它,所以必须以某种方式包括这个位置。
为了解决这个问题,Vision Transformers 注入了位置嵌入。每个补丁嵌入都会收到一个学习到的向量,该向量被添加到其中,对其在原始图像网格中的位置进行编码。例如,补丁 5 可能位于第 2 行第 2 列,因此其位置嵌入捕获了该空间信息,从而为模型提供了对布局的基本了解。
现在,即使视觉内容相似,模型也可以区分 “左上角” 和 “下中” 的补丁!
这些位置嵌入是可训练的参数。就像补丁嵌入一样,它们是在预训练期间学习的。请注意,与补丁一样,该模型不仅处理原始数据(如 RGB 或在本例中为原始 (x, y) 坐标),而且还是一种学习到的位置编码,该编码不断发展以反映模型发现的空间相关性。
最后,ViT 在分类令牌前面加上一个,通常称为 CLS 令牌。
为了尽可能接近原始的 Transformer 模型,我们使用了一个额外的 [class] 标记,它被用作图像表示。然后,该令牌的输出通过一个小型多层感知器 (MLP) 转换为类预测,其中 tanh 在单个隐藏层中为非线性。这个设计继承自文本的 Transformer 模型,我们在主要论文中都使用它。
此分类标记是一个可学习的向量,它不来自任何补丁。将其视为一个空占位符,在流程结束时将填充分类,即鸟、球、汽车等。
当补丁嵌入在 Transformer 层中移动时,CLS 令牌会通过注意力与它们交互。最后,它会从整个图像中收集信息。同样,这是模型用于插入最终分类的向量 - 鸟、球、汽车等。
但是我们仍然处于数据预处理步骤,这个补丁 + 位置嵌入 + (空)类嵌入。分类是后来出现的。
所以现在,在数据预处理之后,模型可以开始学习部分之间的关系;它包含有关补丁的可视结构 (补丁嵌入) 和位置 (位置嵌入) 的信息。
第 4 步:变压器编码器

终于,魔法发生了!在展平图像、嵌入每个补丁、注入位置上下文并预置分类标记之后,我们现在有一系列向量准备好进入 Transformer 编码器,在那里进行实际学习!
编码器由重复的 blocks 堆栈组成。每个模块包含相同的 5 个组件,并且堆栈深度根据模型大小而变化。在本文中,ViT-Base 使用 12 层,ViT-Large 使用 24 层,ViT-Huge 使用 32 层。
每个编码器模块包含:
- 图层归一化
- 多头自我注意
- 残差连接
- 前馈 MLP
- 另一个残差连接
让我们来看看每个部分的作用。如果您从 LLM 中了解到这一点,请随时跳过。
1) 图层归一化
图层标准化会调整每个色块嵌入,以便其值具有一致的比例。如果不进行标准化,向量中值的大小在补丁之间可能会有很大差异。例如,有些可能具有非常大的数字,而另一些可能具有非常小的数字,具体取决于输入图像和从早期层学习的权重。
这种不一致会破坏训练的稳定性并使学习更加困难。层归一化通过使每个向量中的值居中并缩放它们来解决这个问题,确保所有标记都以大致相同的基础进入注意力机制,以便模型可以专注于学习数据的结构,而不是被比例的任意差异分散注意力。
2) 多头自我注意 (MHSA)
这就是 Transformer 的核心。对于序列中的每个标记(包括每个补丁和分类标记),该模型会查看每个其他标记并计算它们的加权平均值。
它基本上是在问:我应该考虑图像的哪些其他部分来理解这个补丁?该论文很好地说明了这一点:

多个注意力头并行运行,每个注意力头都学会了关注补丁之间关系的不同方面。一个头部可能会学习检测对称性,另一个头部可能会跟踪长距离依赖关系,而其他头部可能会专注于整个图像的对比度或纹理。
Attention 让每个补丁无处不在。左上角的补丁可以直接与右下角的补丁进行比较,无需空间邻近或分层结构。这与卷积截然不同,卷积在本地和增量地移动信息。
这是帮助 ViT 超越 ConvNet 的关键!
3) 剩余连接(注意后)
在 attention作之后,模型将原始输入添加回 attention 输出。这称为残差连接。它有助于保留早期层的有用特征,并确保梯度在训练期间可以向后流动而不会消失或爆炸。
为什么要包含原始输入?这似乎是多余的......
嗯,并不是每个注意力层都改善了表示,所以残差连接允许模型继续推进已经有效的东西。
4) 前馈多层感知器 (MLP)
接下来是一个 MLP 块,它是一个独立应用于每个 patch 嵌入的小型神经网络。它通常由两层组成,中间有非线性活化,例如 RELU 或 GELU。
有关更多信息,请参阅 Grant Sanderson 的语言建模教程,该教程有助于提供直觉。
基本上,注意力本身就是一个线性作,这限制了它可以表达的模式类型。MLP 注入非线性,并允许模型检测更复杂的特征组合。
我想结论是,这一步有助于模型从仅仅注意到特征转变为理解它们的交互。
5) 另一个剩余连接(MLP 之后)
就像在 attention 块之后一样,MLP 的输出通过另一个残差连接与其输入相结合。同样,这可确保模型可以保留有用的信息,并且仅在需要时应用转换。
总结
在这 5 个步骤之后,每个 Patch 现在不仅包含有关其自身内容的信息,还包含有关它与映像中所有其他 Patch 的关系的信息!
分类标记在处理了所有补丁之后,现在包含整个映像的摘要。这为最后一步奠定了基础:分类。
第 5 步:MLP 头和分类

此时,分类标记已通过完整的 Transformer 堆栈,并与映像中的每个补丁交互以收集全局上下文。但它还没有类预测。
ViT 通过最后一个模块:MLP 头。这是一个小型前馈神经网络,用于将最终分类标记映射到输出空间。
MLP 负责人学习如何解释分类标记中的聚合信息并将其转换为决策。如果 CLS 令牌是图像的摘要,则 MLP 头将作为最终裁判,分配一个标签。
最后,模型输出预测!这是一只鸟!这是一架飞机!这是超人!

内容中包含的图片若涉及版权问题,请及时与我们联系删除
评论
沙发等你来抢