Transformers 自然语言处理(五)(1)

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: Transformers 自然语言处理(五)


LIT

LIT 的可视化界面将帮助您找到模型处理不正确的示例,深入研究类似示例,查看在更改上下文时模型的行为以及与Transformers模型相关的更多语言问题。

LIT 不像 BertViz 那样显示注意力头的活动。然而,值得分析为什么事情出错了并尝试找到解决方案。

您可以选择均匀流形逼近与投影UMAP)可视化或 PCA 投影仪表示。PCA 将在特定方向和幅度上进行更线性的投影。UMAP 将其投影分解为小型聚类。根据您分析模型输出的深入程度,这两种方法都是有意义的。您可以同时运行并获得相同模型和示例的不同视角。

本节将使用 PCA 运行 LIT。让我们从简要回顾 PCA 的工作原理开始。

PCA

PCA 将数据提升到更高的层次进行表示。

想象一下您在厨房里。您的厨房是一个 3D 笛卡尔坐标系。您厨房里的物体也都有特定的 xyz 坐标。

您想要烹饪一道菜,并将配料摆放在厨房桌上。您的厨房桌是您厨房里菜谱的较高级别表示。

厨房桌也在使用笛卡尔坐标系。但是当您提取厨房的主要特征以在厨房桌上表示菜谱时,您正在执行 PCA。这是因为您展示了一起适合制作特定菜谱的主要组件。

相同的表现可以应用于 NLP。例如,字典是一个词语列表。但是一起有意义的词语构成序列主成分的表示。

在 LIT 中序列的 PCA 表示将有助于可视化Transformers的输出。

获得 NLP PCA 表示的主要步骤是:

  • 方差:数据集中一个词语的数值方差;其含义的频率和频率,例如。
  • 协方差:多个单词的方差与数据集中另一个单词的相关性。
  • 特征值和特征向量:要在笛卡尔系统中获得表示,我们需要协方差的向量和幅角表示。特征向量将提供向量的方向。特征值将提供它们的幅角。
  • 派生数据:最后一步是通过将行特征向量乘以行数据来将特征向量应用于原始数据集:
  • 要显示的数据 = 行特征向量 * 行数据

PCA 投影提供了清晰的数据点线性可视化以进行分析。

现在让我们运行 LIT。

运行 LIT

您可以在线运行 LIT 或在 Google Colaboratory 笔记本中打开它。单击以下链接以访问两个选项:

教程页面包含几种类型的 NLP 任务进行分析:

在本节中,我们将在线运行 LIT 并探索情感分析分类器:

单击自己探索这个演示,您将进入直观的 LIT 接口。Transformers模型是一个小型Transformers模型:


图 14.7:选择模型

您可以通过单击模型更改模型。您可以直接在 Hugging Face 提供的托管 API 页面上测试这种类型的模型和类似模型:

huggingface.co/sshleifer/tiny-distilbert-base-uncased-finetuned-sst-2-english

NLP 模型可能会根据 LIT 在线版本的后续更新而发生变化。概念保持不变,只是模型变化。

让我们从选择 PCA 投影仪和每个示例的二元01分类标签开始:


图 14.8:选择投影仪和标签类型

然后我们转到数据表,点击一个句子及其分类标签


图 14.9:选择一句话

该算法是随机的,因此输出可能会在不同运行中有所变化。

在数据点编辑器中也会出现这个句子:


图 14.10:数据点编辑器

数据点编辑器允许您改变句子的上下文。例如,您可能想要找出为什么一个反事实的分类本应属于一个类别,但最终属于另一个类别。您可以改变句子的上下文,直到它出现在正确的类别中,以了解模型的工作原理及为何出现错误。

这个句子将与它的分类一起出现在 PCA 投影仪中:


图 14.11:正向聚类中的 PCA 投影仪

您可以在 PCA 投影仪中点击数据点,所选句子将出现在数据点编辑器中。这样,您可以比较结果。

LIT 包含许多您可以探索和使用的交互功能。

LIT 中得到的结果并不总是令人信服。然而,在许多情况下,LIT 提供了有价值的见解。同时,参与这些新兴的工具和技术是至关重要的。

现在让我们通过词典学习来可视化Transformers层。

通过词典学习的Transformers可视化

通过词典学习的Transformers可视化是基于Transformers因子的。

Transformers因子

Transformers因子是包含上下文单词的嵌入向量。一个没有上下文的单词可以有许多意义,从而产生多义问题。例如,单词separate可以是动词或形容词。此外,separate还可以意味着断开、区分、分散,以及许多其他定义。

Yun等人在 2021 年创造了一个包含上下文单词的嵌入向量。单词的嵌入向量可以由单词因子的稀疏线性表示构建。例如,根据数据集中句子的上下文,separate可以被表示为:

`separate=0.3" keep apart"+"0.3" distinct"+ 0.1 "discriminate"+0.1 "sever" + 0.1 "disperse"+0.1 "scatter"` 

为了确保线性表示保持稀疏,我们不添加会创建大量 0 值矩阵的 0 因子。因此,我们不包括无用的信息,比如:

`separate= 0.0"putting together"+".0" "identical"` 

整个关键是通过强制因子的系数大于 0 来保持表示的稀疏性。

每个单词的隐藏状态在每一层中都被检索出来。由于每一层在理解数据集中句子中单词的表示方面都有所进展,潜在的依赖关系逐渐增加。这种稀疏线性叠加的Transformers因子变成了一个带有稀疏系数向量的词典矩阵,我们可以将其总结为:


在其中:

  • (phi)是词典矩阵。
  • 是待推断的稀疏系数向量

Yun等人在 2021 年补充说,,添加高斯噪声样本以强制算法搜索更深层的表示。

同样,为了确保表示保持稀疏,方程必须写成,使得(such that)。

作者将X指代为层的隐藏状态集合,将x指代为属于X的变换因子的稀疏线性叠加。

他们将自己稀疏字典学习模型总结为:


在词典矩阵中,:,c 指的是词典矩阵的一列,其中包含一个变换因子。

:,c 分为三个级别:

  • 低级变换因子用于通过词级消歧解决多义问题
  • 中级变换因子将我们进一步带入句子级模式,这将为低级模式带来重要的上下文。
  • 高级变换模式帮助理解长程依赖关系

该方法是创新的、令人兴奋的,看起来效率很高。然而,目前还没有可视化功能。因此,Yun等人于 2021 年为 LIME 创造了必要的信息,这是一种标准的可解释人工智能方法,可以用于可视化他们的发现。

交互式变换器可视化页面基于 LIME 进行输出。以下部分是对 LIME 的简要介绍。

介绍 LIME

LIME代表局部可解释的模型-不可知解释。这一可解释的人工智能方法的名称说明了它的特点。它是模型不可知的。因此,我们可以立即得出有关通过词典学习进行变换器可视化方法的结论:

  • 该方法不会深入研究变换器层的矩阵、权重和矩阵乘法。
  • 该方法不会解释变换器模型的工作原理,就像我们在第二章中所做的那样,开始使用变换器模型的架构
  • 在本章中,该方法窥视了由变换因子的稀疏线性叠加提供的数学输出。

LIME 并不试图解析数据集中的所有信息。相反,LIME 通过检查预测周围的特征来判断模型是否局部可靠

LIME 不适用于全局模型。它专注于预测的局部环境。

这在处理自然语言处理时尤为有效,因为 LIME 探索了一个词的上下文,为模型的输出提供了宝贵的信息。

在通过词典学习进行可视化时,一个实例x可以表示为:


此实例的可解释表示是一个二进制向量:


目标是确定特征或多个特征的局部存在或缺失。在 NLP 中,这些特征是可以重建为单词的令牌。

对于 LIME 来说,g代表一个Transformers模型或任何其他机器学习模型。G代表一组包含g在内的Transformers模型,以及其他模型:


因此,LIME 的算法可以应用于任何Transformers模型。

在这一点上,我们知道:

  • LIME 以一个词为目标,并搜索其他词的局部上下文
  • 因此,LIME 提供了一个词的局部上下文,以解释为什么会预测这个词,而不是其他词

探索 LIME 等可解释 AI 并不在这本关于 NLP 的Transformers书籍的范围内。不过,有关 LIME 的更多信息,请参见参考部分。

现在让我们看看 LIME 是如何将自己融入通过字典学习的Transformers可视化方法中的。

现在让我们探索可视化界面。

可视化界面

访问以下网站以访问交互式的Transformers可视化页面:transformervis.github.io/transformervis/

可视化界面提供了直观的说明,只需点击一次即可开始分析特定层的Transformers因素,如图 14.12所示:


图 14.12:选择一个Transformers因素

一旦选择了一个因素,您可以点击您想要为这个因素可视化的层:


图 14.13:每层的函数可视化

第一个可视化展示了按层激活因素的情况:


图 14.14:每层因素的重要性

因素421着眼于separate的词汇领域,正如下层所示:


图 14.15:在下层中对“separate”的表示

随着我们可视化更高的层级,会出现更长范围的表示。因素421separate的表示开始。但在更高的层次上,Transformers开始形成对因素的更深层次的理解,并将separatedistinct相关联,如图 14.16所示:


图 14.16:Transformers要素的高层表示

尝试使用几个Transformers因素来可视化,以便逐层扩展他们对语言的理解和感知。

您会发现许多好例子,也会发现很多糟糕的结果。专注于好例子,以了解Transformers如何通过语言学习的方式。利用糟糕的结果来理解它为什么会犯错误。此外,可视化界面所使用的Transformers模型并非最强大或经过充分训练的模型。

无论如何,参与其中并保持对这个不断发展的领域的关注!

例如,您可以探索 Understanding_GPT_2_models_with_Ecco.ipynb,这是本章的 GitHub 存储库中的内容。它演示了Transformers在选择标记之前如何生成候选项。这是不言自明的。

在本节中,我们看到了Transformers如何逐层学习单词的含义。一个Transformers在做出选择之前会生成候选项。正如笔记本所示,Transformers模型是随机的,因此会在几个最高概率中进行选择。考虑以下句子:

"The sun rises in the_____." 

您会选择什么词放在句子的结尾?我们都会犹豫。这也是Transformers所做的!

在这种情况下,GPT-2 模型选择了sky这个词:


图 14.17:完成一个序列

但是 GPT-2 模型可能会在另一次运行中选择其他候选项,就像图 14.18中显示的:

图 14.18:其他的完成候选项

我们可以看到sky出现在第一名。但morning也出现在第二名,并且也可以合适。如果我们多次运行模型,可能会得到不同的输出,因为模型是随机的。

看起来 AI 和Transformers的领域已经完备了。

然而,在我们继续之前,让我们看看为什么人们在这个领域仍然有很多工作要做。

探索我们无法访问的模型

本章探讨的可视化界面非常引人入胜。但仍然有很多工作要做!

例如,OpenAI 的 GPT-3 模型可以在线运行或通过 API 运行。因此,我们无法访问一些软件即服务SaaS)Transformers模型的权重。这种趋势将在未来数年内增加和扩展。那些花费数百万美元用于研究和计算机动力的公司更倾向于提供按需付费的服务,而不是开源应用程序。

即使我们能够访问 GPT-3 模型的源代码或输出权重,使用可视化界面来分析 9,216 个注意力头(96 层 x 96 头)也将是相当具有挑战性的。

在很多情况下,寻找错误仍然需要一些人的参与。

例如,在英语到法语翻译中,coach这个词的多义性经常会造成问题。在英语中,coach 可以是一个训练别人的人,也可以是一辆公共汽车。法语中也有coach这个词,但它只适用于一个训练别人的人。

如果您去 OpenAI AI GPT-3 游乐场,openai.com/,并翻译含有coach这个词的句子,您可能会得到混合的结果。

句子 1 被 OpenAI 引擎正确翻译了:

English: The coach broke down, and everybody complained.
French: Le bus a eu un problème et tout le monde s'est plaint. 

coach被翻译成了巴士,这是正确的。但需要更多的语境。

输出是随机的,所以翻译可能一次正确,下一次错误。

然而,第二句被误译了:

English: The coach was dissatisfied with the team and everybody complained.
French: Le bus était insatisfait du équipe et tout le monde s'est plaint. 

这一次,GPT-3 引擎错过了coach指的是一个人,而不是一辆公共汽车的事实。相同的随机运行将提供不稳定的输出。

如果我们通过添加上下文来修改句子 2,我们将获得正确的翻译:

English: The coach of the football team was dissatisfied and everybody complained.
French: Le coach de l'équipe de football était insatisfait et tout le monde s'est plaint. 

现在翻译中包含了法语单词coach,表示与本句英语单词coach相同的含义。添加了更多上下文。

OpenAI 的解决方案,AI 总体上,尤其是Transformers模型,都在不断进步。此外,大多数工业 4.0 的 AI 驱动微决策不需要如此复杂的 NLP 或翻译任务,并且非常有效。

但是,在 Cloud AI API 级别的人为干预和发展仍然需要相当长的时间!

总结

Transformers模型被训练来解决词级别的一词多义消歧

低层、中层和高层的依赖关系。通过连接训练百万到万亿参数模型来实现这一过程。解释这些巨型模型的任务似乎令人生畏。然而,一些工具正在涌现。

我们首先安装了BertViz。我们学会了如何使用交互式界面解释注意头的计算。我们看到了每一层的单词是如何与其他单词互动的。

本章继续定义了探查任务和非探查任务的范围。诸如 NER 之类的探查任务提供了有关Transformers模型如何表示语言的见解。然而,非探查方法分析模型如何做出预测。例如,LIT 将 PCA 项目和 UMAP 表示插入 BERT Transformers模型的输出中。然后,我们可以分析输出的集群以查看它们如何组合在一起。

最后,我们通过词典学习运行了Transformers可视化。用户可以选择一个Transformers因子来分析并可视化其在Transformers的低层到高层的表示演变。该因子将逐渐从一词多义的消歧到句子上下文分析,最终到长期依赖。

本章的工具将随着其他技术的发展而不断发展。然而,本章的关键重点是Transformers模型的活动可以以用户友好的方式进行可视化和解释。在下一章中,我们将发现新的Transformers模型。我们还将通过风险管理方法选择Transformers模型项目的最佳实现。

问题

  1. BertViz 只显示了 BERT 模型最后一层的输出。(真/假)
  2. BertViz 显示了 BERT 模型每一层的注意头。(真/假)
  3. BertViz 展示了标记之间的关系。(真/假)
  4. LIT 显示了类似 BertViz 的注意头的内部工作。(真/假)
  5. 探查是算法预测语言表示的一种方式。(真/假)
  6. NER 是一个探查任务。(真/假)
  7. PCA 和 UMAP 都不是探查任务。(真/假)
  8. LIME 是与模型无关的。(真/假)
  9. Transformers 通过逐层深化令牌之间的关系。(True/False)
  10. 视觉 Transformer 模型解释为可解释的人工智能增添了一个新的维度。(True/False)

参考资料

加入我们书籍的 Discord 空间

加入本书的 Discord 工作空间,与作者进行每月的问我任何事会话:

www.packt.link/Transformers


第十五章:从 NLP 到任务不可知的Transformers模型

到目前为止,我们已经检查了原始Transformers模型的变体,具有编码器和解码器层,以及具有仅编码器或仅解码器层的其他模型。此外,层和参数的大小已经增加。然而,Transformers的基本结构保留了其原始结构,具有相同的层和注意头的计算并行化。

在本章中,我们将探索尊重原始Transformers基本结构但进行了一些重大变化的创新Transformers模型。许多Transformers模型会出现,就像一个乐高^© 件盒给出的许多可能性一样。你可以以数百种方式组装这些部件!Transformers模型子层和层是先进 AI 的乐高^© 部件。

我们将从众多提供中选择哪个Transformers模型,并选择我们将实施它们的生态系统开始。

然后,我们将发现 Reformer 模型中的局部敏感哈希LSH)桶和分块技术。然后我们将了解 DeBERTa 模型中解耦关注的含义。DeBERTa 还介绍了一种在解码器中管理位置的替代方法。DeBERTA 的高功率Transformers模型超越了人类基线。

我们的最后一步将是发现像 Vit、CLIP 和 DALL-E 这样的强大的计算机视觉Transformers。我们可以将 CLIP 和 DALL-E 添加到 OpenAI GPT-3 和 Google BERT(由 Google 训练)这个非常小的基础模型组中。

这些强大的基础模型证明了Transformers是任务不可知的。Transformers学习序列。这些序列包括视觉、声音以及任何以序列表示的数据类型。

图像包含类似语言的数据序列。我们将运行 ViT、CLIP 和 DALL-E 模型进行学习。我们将把视觉模型提升到创新水平。

在本章结束时,你将看到任务不可知Transformers的世界已经演变成了一个充满想象力和创造力的宇宙。

本章涵盖以下主题:

  • 选择Transformers模型
  • Reforme Transformers模型
  • 局部敏感哈希LSH
  • 桶和分块技术
  • DeBERTA Transformers模型
  • 解耦关注
  • 绝对位置
  • 具有 CLIP 的文本图像视觉Transformers
  • DALL-E,一个创意文本图像视觉Transformers

我们的第一步将是看看如何选择一个模型和一个生态系统。

选择一个模型和一个生态系统

我们认为通过下载转换器模型进行测试将需要机器和人力资源。而且,你可能会认为如果一个平台到这个时候还没有在线沙盒,那么进一步进行测试就会有风险,因为测试几个示例的工作量。

然而,像 Hugging Face 这样的网站会在实时自动下载预训练模型,正如我们将在The ReformerDeBERTa部分看到的那样!那么我们该怎么办?由于这个,我们可以在 Google Colab 上运行 Hugging Face 模型,而不需要在本机上安装任何东西。我们还可以在线测试 Hugging Face 模型。

思路是分析而无需任何“安装”。在 2022 年,“无需安装”可能意味着:

  • 在线运行一个Transformers任务
  • 在预安装的 Google Colaboratory 虚拟机上运行一个Transformers,它可以无缝地下载一个预训练模型以完成任务,我们可以用几行代码来运行。
  • 通过 API 运行一个Transformers

“安装”的定义在过去几年已经扩展了。 “在线”的定义也已经扩大。我们可以考虑使用几行代码来运行一个 API 作为元在线测试。

在本节中,我们将广义上谈到“无需安装”和“在线”。图 15.1显示了我们应该如何“在线”测试模型:


图 15.1:在线测试Transformers模型

正如下面展示的,这十年的测试变得灵活和高效:

  • Hugging Face 托管诸如 DeBERTa 和其他一些模型等 API 模型。此外,Hugging Face 还提供 AutoML 服务,用于在其生态系统中训练和部署Transformers模型。
  • OpenAI 的 GPT-3 引擎在在线游乐场上运行并提供 API。OpenAI 提供涵盖许多 NLP 任务的模型。这些模型无需训练。 GPT-3 的十亿参数零射引擎令人印象深刻。它显示出参数多的Transformers模型整体产生更好的结果。Microsoft Azure、Google Cloud AI、AllenNLP 和其他平台提供有趣的服务。
  • 如果值得的话,可以通过阅读一篇论文来进行在线模型分析。Google 的Fedus等人在 2021 年的一篇关于Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity的论文是一个很好的例子。Google 增加了我们在第八章中研究的基于 T5 的模型的规模,即应用于法律和金融文件的 AI 文本摘要。这篇论文证实了像 GTP-3 这样的大型在线模型的策略。

然而,最终,选择一种解决方案的风险还是在你自己。在选择一种解决方案后,你花在探索平台和模型上的时间将有助于你优化项目的实施。

可以通过三种不同的方式托管你的选择,如图 15.2所示:

  • 使用 API 在本地机器上。OpenAI、Google Cloud AI、Microsoft Azure AI、Hugging Face 和其他提供了良好的 API。一个应用程序可以在本地机器上而不是在云平台上,但可以通过 API 经过云服务。
  • 在像亚马逊网络服务(AWS)或 Google Cloud 这样的云平台上。您可以在这些平台上训练、微调、测试和运行模型。在这种情况下,没有应用在本地机器上。一切都在云上。
  • 可以从任何地方使用 API!在本地机器上,数据中心虚拟机上,或从任何地方。这意味着 API 将集成在一个物理系统中,比如风车、飞机、火箭或自动驾驶车辆。因此,系统可以通过 API 与另一个系统永久连接。


图 15.2: 为您的模型实现选项

最后,决定权在你手中。花点时间。测试、分析、计算成本,并团队合作听取不同的观点。你对转换器的工作方式了解得越多,你做出的选择就会越好

现在让我们来探索改革者,这是原始转换器模型的一个变种。

改革者

Kitaev等人(2020 年)设计改革者来解决注意力和内存问题,为原始转换器模型添加功能。

改革者首先用局部敏感哈希(LSH)桶和分块来解决注意力问题。

LSH 在数据集中搜索最近的邻居。哈希函数确定如果数据点q接近p,那么hash(q) == hash(p)。在这种情况下,数据点是Transformers模型头的键。

LSH 函数将键转换为 LSH 图 15.3 中的B1B4),这个过程称为 LSH 分桶,就像我们将彼此相似的对象放在同一个排序的桶中一样。

排序的桶被分成图 15.3 中的C1C4)进行并行化。最后,注意力仅在其块内和前一个块中的相同桶中应用:


图 15.3: LSH 注意力头

LSH 分桶和分块将复杂度从O(L²),即关注所有词对,减少到O(LlogL),即仅关注每个桶的内容。

改革者还解决了重新计算每一层输入而不是存储多层模型信息的内存问题。重新计算是按需实现的,而不是为一些大型多层模型消耗的千字节内存。

我们现在将使用在Fyodor Dostoevsky的*《罪与罚》*英文翻译上训练的一个改革者模型。

运行一个例子

让我们直接在托管的推理 API 上在线运行它。输入句子是:

这个学生贫困潦倒,不知所措。

在在线接口的链接中包含输入:

huggingface.co/google/reformer-crime-and-punishment?text=The+student+was+impoverished+and+did+not+know+what+to+do

托管推理 API 与输入句子一起显示。点击计算以获得推理,结果将直接显示在输入下方:


图 15.4:Reformer 的托管推理 API

由于算法是随机的,您可能会得到不同的响应。Reformer 经过了合理的训练,尽管没有像 OpenAI 的 GPT-3 那样拥有数十亿位信息的超级计算机。Reformer 的结果并不令人印象深刻。它需要更多的训练和微调才能获得更好的结果。

OpenAI 的 GPT-3 引擎对文本完成产生了以下结果:

学生生活贫困,不知所措。他找不到可以求助的人,也找不到住的地方。他从包里拿出一个记事本开始写。他写道:

“我的名字叫 XXXXXXXXXX。我是 XXXXXXX 的学生。我没有家人,没有朋友,没有钱。”

结果更具说服力。注册后,您可以访问 OpenAI 的游乐场:openai.com/

注意:OpenAI GPT-3,与其他Transformers模型和大多数深度学习模型一样,基于随机算法。结果可能会有所不同。

这表明,包含数十亿参数的高度训练有素的Transformers模型可以胜过一种创新的Transformers模型架构。

超级计算机驱动的云 AI 平台是否会逐渐胜过本地尝试甚至功能较弱的云平台?在投资于一种解决方案之前,您需要通过原型解决这些问题。

注意:Transformers模型的随机性可能导致在运行这些模型时产生不同的结果。此外,在线平台不断变化其界面。我们需要接受并适应这一点。

DeBERTa 引入了另一种创新的架构,我们现在将对其进行探讨。

DeBERTa

通过分解还可以找到Transformers的另一种新方法。在 AI 中,分解允许您分离表示特征,使训练过程更加灵活。Pengcheng HeXiaodong LiuJianfeng GaoWeizhu Chen设计了 DeBERTa,这是Transformers的分解版本,并在一篇有趣的文章中描述了该模型:DeBERTa: Decoding-enhanced BERT with Disentangled Attention: arxiv.org/abs/2006.03654

DeBERTa 实现的两个主要思想是:

  • 在Transformers模型中将内容和位置分离开来,分别训练这两个向量
  • 在预训练过程中使用解码器中的绝对位置来预测屏蔽的标记

作者在 GitHub 上提供了代码:github.com/microsoft/DeBERTa

DeBERTa 超越了 SuperGLUE 排行榜上的人类基准:


图 15.5:DeBERTa 在 SuperGLUE 排行榜上的表现

在“让我们在 Hugging Face 的云平台上运行一个示例”之前,去除任何空格。

运行一个示例

要在 Hugging Face 的云平台上运行示例,请单击以下链接:

huggingface.co/cross-encoder/nli-deberta-base

托管推理 API 将显示一个示例和可能的类名称输出:


图 15.6:DeBERTa 的托管推理 API

可能的类名称是mobilewebsitebillingaccount access

结果很有趣。让我们将其与 GPT-3 关键词任务进行比较。首先,在openai.com/上注册一下

输入Text作为输入,并输入Keywords以要求引擎找到关键词:

文本上周我升级了我的 iOS 版本,自那时起,每当我使用你们的应用时,我的手机就会过热。

关键词: app, overheating, phone

可能的关键词是appoverheatingphone

我们已经学习了 DeBERTa 和 GPT-3 Transformers。现在我们将将Transformers扩展到视觉模型。

从任务无关模型到视觉Transformers

基础模型,正如我们在第一章“什么是Transformers?”中所看到的,具有两个独特而独特的属性:

  • 涌现 - 符合基础模型标准的Transformers模型可以执行未经训练的任务。它们是在超级计算机上训练的大型模型。它们没有被训练来学习像许多其他模型那样的特定任务。基础模型学会了如何理解序列。
  • 同质化 - 相同的模型可以在许多领域中使用相同的基本架构。基础模型可以通过数据比其他任何模型更快更好地学习新技能。

GPT-3 和 Google BERT(仅 Google 训练的 BERT 模型)是任务不可知的基础模型。这些任务不可知的模型直接引导到 ViT、CLIP 和 DALL-E 模型。Transformers有着奇特的序列分析能力。

Transformers模型的抽象程度导致多模态神经元:

  • 多模态神经元可以处理可被标记为像素或图像片段的图像。然后它们可以在视觉Transformers中被处理为单词。一旦图像被编码,Transformers模型将标记视为任何单词标记,如图 15.7 所示:


图 15.7:图像可以编码为类似单词的标记

在本节中,我们将介绍以下内容:

  • ViT,将图像处理为单词片段的视觉Transformers
  • CLIP,将文本和图像编码的视觉Transformers
  • DALL-E,用文本构造图像的视觉Transformers

让我们开始探索 ViT,一个将图像处理为单词片段的视觉Transformers。

ViT - 视觉Transformers

Dosovitskiy等人(2021)在文章标题中总结了他们设计的视觉Transformers架构的精华:一张图片价值 16x16 个单词:大规模图像识别的Transformers

图像可以转换为 16x16 单词的片段。

在查看代码之前,让我们先看一下 ViT 的架构。

ViT 的基本架构

视觉变换器可以将图像作为“单词”补丁来处理。在本节中,我们将按照三个步骤进行处理:

  1. 将图像拆分成补丁
  2. 补丁的线性投影
  3. 混合输入嵌入子层

第一步是将图像拆分成相同尺寸的补丁。

第一步:将图像拆分成补丁

图像被分割成n个补丁,如图 15.8 所示。只要所有补丁的尺寸相同(例如 16x16),就没有规定补丁数量的规定:


图 15.8:将图像拆分成补丁

相等尺寸的补丁现在代表我们序列的“单词”。如何处理这些补丁仍然是个问题。我们将看到每种视觉变换器都有自己的方法。

图像引用:本节和随后的几节中使用的猫的图像由DocChewbacca拍摄:www.flickr.com/photos/st3f4n/,于 2006 年。它属于 Flickr 免费许可证,creativecommons.org/licenses/by-sa/2.0/。有关更多详情,请查看 Flickr 上DocChewbacca的图片:www.flickr.com/photos/st3f4n/210383891

在这种情况下,对于 ViT,第 2 步是对展平的图像进行线性投影。

第二步:对展平的图像进行线性投影

第 1 步将图像转换为尺寸相等的补丁。补丁的动机是避免逐像素处理图像,但问题在于找到处理补丁的方法。

Google Research 团队决定设计一个由图像的展平图像的线性投影和通过分割图像获得的补丁组成的线性投影,如图 15.9 所示:


图 15.9:图像的线性投影

思路是获得一个类似单词的补丁序列。剩下的问题是嵌入展平图像序列。

第三步:混合输入嵌入子层

类似单词的图像序列可以适应变换器。问题在于它们仍然是图像!

Google Research 决定使用混合输入模型,如图 15.10 所示:

  • 添加一个卷积网络以嵌入补丁的线性投影
  • 添加位置编码以保留原始图像的结构
  • 然后使用标准的原始 BERT 样式编码器处理嵌入的输入


图 15.10:混合输入子层和标准编码器

Google Research 找到了一种巧妙的方法将 NLP 变换器模型转换成视觉变换器。

现在,让我们在代码中实现一个 Hugging Face 视觉变换器示例。


Transformers 自然语言处理(五)(2)https://developer.aliyun.com/article/1514255

相关文章
|
2月前
|
存储 人工智能 自然语言处理
Transformers 自然语言处理(五)(2)
Transformers 自然语言处理(五)
49 0
|
2月前
|
存储 自然语言处理 算法
Transformers 自然语言处理(四)(3)
Transformers 自然语言处理(四)
52 0
|
2天前
|
自然语言处理 PyTorch API
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
7 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformers 自然语言处理(一)(2)
Transformers 自然语言处理(一)
45 3
|
2月前
|
存储 机器学习/深度学习 自然语言处理
Transformers 自然语言处理(一)(3)
Transformers 自然语言处理(一)
44 2
|
2月前
|
机器学习/深度学习 存储 自然语言处理
Transformers 自然语言处理(一)(1)
Transformers 自然语言处理(一)
42 2
|
2月前
|
人工智能 自然语言处理 数据可视化
Transformers 自然语言处理(四)(1)
Transformers 自然语言处理(四)
15 1
|
2月前
|
人工智能 自然语言处理 算法
Transformers 自然语言处理(四)(4)
Transformers 自然语言处理(四)
30 0
|
2月前
|
人工智能 自然语言处理 数据可视化
Transformers 自然语言处理(四)(2)
Transformers 自然语言处理(四)
15 0
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用与挑战
本文深入探讨了深度学习技术在自然语言处理(NLP)领域的应用现状及其面临的主要挑战。通过分析深度学习模型如循环神经网络(RNN)、长短时记忆网络(LSTM)和Transformer在语言建模、机器翻译、情感分析等任务中的表现,揭示了这些模型在理解和生成自然语言方面的潜力。同时,本文也指出了数据偏差、模型泛化、资源消耗以及伦理问题等挑战,为未来的研究方向提供了指引。
11 0