【技术总结】一文读懂Transformer

【技术总结】一文读懂Transformer

    • 0. 前言
    • 1. 从词袋模型到 Transformer
    • 2. Transformer 架构
      • 2.1 关键思想
      • 2.2 计算注意力
      • 2.3 编码器-解码器架构
      • 2.4 Transformer 架构
      • 2.5 模型训练
    • 3. Transformer 类别
      • 3.1 解码器(自回归)模型
      • 3.2 编码器(自编码)模型
      • 3.3 编码器-解码器模型
    • 4. 经典注意力机制
      • 4.1 稀疏注意力
      • 4.2 LSH 注意力
      • 4.3 局部注意力
    • 5. 预训练任务
    • 6. 多模态模型
    • 7. Transformer 模型发展展望
      • 7.1 模型记忆与查询工具之间的权衡
      • 7.2 模型的安全性与稳定性
      • 7.3 将 Transformer 模型视为通用智能体的核心组成
    • 小结

0. 前言

2017 年论文《Attention Is All You Need》发布后,Transformer 迅速引起了自然语言处理 (Natural Language Processing, NLP) 的广泛关注,基于 Transformer 的模型使用注意力机制来识别输入序列(如句子)中词元 (token) 之间的复杂关系。Transformer 摒弃了传统的循环神经网络 (Recurrent Neural Network, RNN) 和长短时记忆网络 (Long Short Term Memory, LSTM),转而依靠自注意力机制 (Self-Attention) 来处理输入序列,从而显著提高了效率和效果。基于 Transformer 的架构在 NLP 及其它领域中应用广泛,能够解决各种任务,例如:机器翻译、文本摘要、文本生成、实体识别、问答系统、文本分类、语言建模和阅读理解等。
Transformer 已经成为如 BERTT5GPT 等前沿模型的基础构建块,涵盖了从计算机视觉到语音识别、翻译或蛋白质和编码序列等领域。注意力机制还被应用于强化学习,例如,在 DeepMindAlphaStar 中,将玩家和对手的 StarCraft 游戏单位的状态通过自注意力机制处理。因此,斯坦福大学引入了基础模型 (foundation model),以定义基于大型预训练 Transformer 的大语言模型 (Large Language Model, LLM)。本文将回顾 Transformer 技术的发展历程、核心思想和研究进展等,探讨其在各个领域的应用创新,并展望未来可能的发展方向。

1. 从词袋模型到 Transformer

自然语言处理 (Natural Language Processing, NLP) 在过去数年间发生了突破性进展,近年来,NLP 的发展主要以 Transformer 架构为基础。Transformer 架构是从各种基于神经网络的 NLP 方法演变成了一种基于注意力的编码器-解码器架构,并且仍在不断发展。
多年来,传统的 NLP 方法如 n-gram 语言模型、基于 TF-IDF (Term Frequency-Inverse Document Frequency) 的模型、BM25 信息检索模型和独热编码的文档-词矩阵用于解决一系列 NLP 任务,包括序列分类、语言生成和机器翻译。然而,这些传统方法存在多种局限性,难以处理稀疏数据、稀有单词和长期依赖关系等。为了解决这些问题,提出了基于深度学习的方法,如循环神经网络 (Recurrent Neural Network, RNN)、卷积神经网络 (Convolutional Neural Network, CNN) 和前馈神经网络 (Feed-forward Neural Network, FFNN),以及若干变体。
随着语料库规模的增加,TF-IDF 模型的维度会迅速增加,导致维度灾难问题。2013 年,word2vec (由两层 FFNN 组成的词编码模型)通过生成紧凑且密集的词向量(即词嵌入)解决了维度灾难问题。word2vec 模型通过将无监督文本数据转化为有监督数据(自监督学习),即通过使用邻近的上下文词来预测目标词,能够快速且高效的创建静态词嵌入。而 GloVe 模型则认为,基于计数的模型在某些情况下优于神经网络模型,利用语料库的全局和局部统计信息,通过基于词与词之间的共现统计信息来学习词嵌入。
词嵌入在一些句法和语义任务中非常有效,如下图所示,图中展示了嵌入向量之间的距离如何用于基于向量的推理。例如,可以从 “Man” 和 “Woman” 之间的距离来推断出泛化的性别关系,即语义关系 (semantic relation)。然后,可以通过将演员 “Actor” 一词的向量与前述的距离量相加,得到女演员 “Actress” 的向量。同样,还可以学习到句法关系 (syntactic relation),比如单词的复数形式,例如给定 “Actor”、“Actors” 和 “Actress” 的向量,可以估算出 “Actresses” 的向量。

词嵌入

词嵌入逐渐成为深度学习模型的基本组成部分,使用 RNNCNN 架构作为序列到序列 (seq2seq) 问题中的编码器和解码器,其中每个词元 (token) 通过嵌入表示。早期模型面临的主要挑战是多义词(具有多个含义的词),由于每个词都具有一个固定的表示,因此词的多义性被忽略,这对句子语义而言是一个严重的问题。
神经网络模型,如通用语言模型微调 (Universal Language Model Fine-tuning, ULMFiT) 和基于语言模型的词嵌入 (Embeddings from Language Model, ELMo),能够编码句子级别的信息,并缓解了多义词问题,这不同于静态的词嵌入,而属于一个新概念——上下文词嵌入 (contextual word embedding)。
ULMFiTELMo 方法基于长短时记忆网络 (Long Short Term Memory, LSTM)网络,是 RNN 的一种变体。它们还利用了预训练和微调的概念,这种方法通过使用在一般任务和通用文本数据集上预训练的模型,并在目标任务上进行监督微调,实现了迁移学习 (Transfer Learning, TL),这是迁移学习首次应用于 NLP 领域。
与此同时,注意力机制在 NLP 领域产生了深远影响,并在序列到序列问题中取得了巨大成功。早期的方法会将从整个输入序列获得的最后状态(称为上下文向量或思维向量)传递给输出序列,而不进行关联,得益于注意力机制,输入的某些部分可以与输出的某些部分关联起来。
2017 年,提出了基于 Transformer 的编码器-解码器模型,因其创新性地使用注意力机制而取得成功。该模型基于 FFNN,摒弃了 RNN 的循环结构,仅使用注意力机制,克服了其他方法所面临的许多困难,并成为一种新的范式。

2. Transformer 架构

尽管经典的 Transformer 架构与循环神经网络 (Recurrent Neural Network, RNN) 的架构不同,但它起源于 RNN 的一些关键思想。目前,Transformer 几乎代表了与文本和任何可以表示为序列的数据相关的深度学习架构的研究方向。Transformer 最初在 2017 年的论文《Attention Is All You Need》中提出,原始的 Transformer 架构是编码器-解码器架构的一种变体,其中递归层被(自)注意力层所替代。
Transformer 架构之前,注意力机制已与 RNN 模型结合使用。注意力机制在 2014 年由 Bahdanau 等人首次提出,并在 2015 年由 Luong 等人应用于机器翻译任务,此后还出现了与其他类型模型结合的多种注意力机制应用。

2.1 关键思想

Transformer 模型的创新基于以下四个关键思想:

  • 位置编码 (Positional encoding)
  • 注意力机制 (Attention)
  • 自注意力机制 (Self-attention)
  • 多头(自)注意力机制 (Multi-head (self-)attention)
2.1.1 位置编码

RNN 通过顺序处理单词来保持单词的顺序。这种方法的优点是简单,但其缺点之一是使得并行化变得困难,如果希望有效地利用高度并行的架构,就需要一种替代的顺序表示方式。
Transformer 使用一种简单的顺序表示方法,称为位置编码,这种方法将每个单词与表示其在文本中位置的数字相关联起来:

[("Transformers", 1), ("took", 2), ("NLP", 3), ("by", 4), ("storm", 5)]

通过添加位置信息,Transformer 可以学习每个词元 (token) 位置的重要性。在原始 Transformer 中引入(绝对)位置编码后,还出现了其他变体,如相对位置编码以及旋转位置编码等。

2.1.2 注意力机制

Transformer 的另一个关键组成部分是注意力机制,注意力机制最早在 2014 年由 Bahdanau 等人引入。为了深入理解,我们考虑以下例子:

The agreement on the European Economic Area was signed in August 1992.

翻译为法语:

L’accord sur la zone économique européenne a été signé en août 1992.

上世纪 80 年代初,机器翻译基于逐字翻译,这种方法性能非常有限,因为文本结构在源语言和目标语言之间可能会发生许多变化。例如,在法语翻译中,一些单词的顺序可能会不同:在英语中,形容词通常位于名词之前,比如 European Economic Area,而在法语中,形容词可以位于名词之后,la zone économique européenne。此外,与英语不同,法语有性别词汇。例如,形容词 économiqueeuropéenne 必须使用女性形式,因为它们属于女性名词 la zone
注意力机制的关键思想是构建文本模型时,在将单词翻译成输出语言时“关注”源句子中的每一个单词。在原始 Transformer 论文中,作者指出这种方法的时间复杂度是平方级的,但在翻译准确性方面获得的提升相当可观。为了降低时间复杂度,Choromanski 等人提出了 Fast Attention Via positive Orthogonal Random (FAVOR+) 特征。回顾原始 Transformer 论文中的例子:

注意力机制示例

使用注意力机制,神经网络可以学习每个源语言英文单词与每个目标语言法文单词之间的热力图,这些关系不仅仅存在于对角线上,还可能遍布整个矩阵。例如,当模型输出法语单词 européenne 时,它会特别关注输入单词 EuropeanEconomic (在图中,对应于对角线和相邻单元格)。使用注意力机制能够在没有监督的情况下学习对齐并关注输入元素,将输入的英语句子翻译成法语。当然,训练集越大,基于注意力的模型可以学习到的相关性越多。
简而言之,注意力机制可以访问所有先前的单词,并根据学习到的相关性度量加以权衡。这样,注意力可以提供关于目标句子中远距离词元的相关信息。

2.1.3 自注意力

原始 Transformer 的第三个关键思想是在源语言同一句话中使用注意力,自注意力。通过这种机制,神经网络可以学习每个输入序列(如句子)中所有元素(如单词)之间的关系,而不考虑它们的位置,然后再专注于具体任务(如机器翻译)。观察以下示例:

“Server, can I have the check?”
“Looks like I just crashed the server.”

单词 server 在以上两个句子中有着不同的含义,而自注意力能够在考虑周围单词的上下文时理解每个单词。需要注意的是,注意力机制可以访问所有先前的单词,并根据学到的相关性度量对它们进行加权,自注意力提供了关于源句子中远距离词元的相关信息。

2.1.4 多头(自)注意力

原始 Transformer 执行了多次(自)注意力操作,一组权重矩阵就是一个注意力头。当有多组这样的权重矩阵集合时,就形成了多个注意力头。多头(自)注意力层通常具有几个并行的(自)注意力层。值得注意的是,引入多个头使我们能够定义哪些单词彼此“相关”。此外,这些相关性可以通过硬件加速器并行计算,从而加快计算速度。

2.2 计算注意力

在原始 Transformer 中,自注意力函数是通过缩放点积单元计算的,称为缩放点积注意力 (Scaled Dot-Product Attention),两个向量之间的点积可以很好地反映出这两个向量的“接近”程度。
每个输入的词元序列(例如句子)嵌入传入 Transformer (编码器或解码器)后,生成注意力权重,这些权重在每个序列元素(如单词)之间同时计算。输出结果是为每个词元生成的嵌入,包含词元本身以及所有相关词元,按照其相对注意力权重进行加权。
注意力层将输入向量转换为查询 (Query)、键 (Key) 和值 (Value) 矩阵,然后将它们拆分为多个注意力头(因此称为多头注意力):

  • 查询可以理解为正在计算注意力函数的词
  • 键和值是所关注的词

点积反映了词之间的相似度。如果两个词向量的对齐结果更高,则注意力分数将更高。Tansformer 以如下方式学习权重,如果句子中的两个词彼此相关,则它们的词向量就会对齐。
每个注意力层学习三个权重矩阵:

  • 查询权重 W Q W_Q WQ
  • 键权重 W K W_K WK
  • 值权重 W V W_V WV

对于每个单词 i i i,计算输入词嵌入 x i x_i xi ,得到:

  • 查询向量 q i = x i W Q q_i = x_i W_Q qi=xiWQ
  • 键向量 k i = x i W K k_i = x_i W_K ki=xiWK
  • 值向量 v i = x i W V v_i = x_i W_V vi=xiWV

给定查询向量和对应的键向量,注意力权重计算如下:
a i , j = q i ⋅ k j a_{i,j}=q_i\cdot k_j ai,j=qikj
其中: a i , j a_{i,j} ai,j 是从词 i i i 到词 j j j 的注意力;点积 ⋅ \cdot (dot-product) 是查询与键的点积,反映向量的“接近”程度。
i i i 的注意力是所有词的值向量的加权和,权重由 a i , j a_{i,j} ai,j 决定,即词 i i i 到词 j j j$ 的注意力。
为了在训练过程中稳定梯度,注意力权重会被键向量维度的平方根 d k \sqrt {d_k} dk 进行除法处理。然后,将结果通过 softmax 函数进行归一化。需要注意的是,词 i i i 到词 j j j 的注意力函数与词 j j j 到词 i i i 的注意力函数值并不相同。
现代深度学习加速器在处理矩阵计算时表现良好,因此可以使用大矩阵来计算所有词的注意力。将 q i q_i qi k i k_i ki v i v_i vi (其中 i i i 是第 i i i 行)定义为矩阵 Q Q Q K K K V V V,可以将注意力函数总结为一个注意力矩阵:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac {QK^T}{\sqrt {d_k}})V Attention(Q,K,V)=softmax(dk QKT)V

2.3 编码器-解码器架构

类似于 seq2seq 模型,原始 Transformer 模型也使用了编码器-解码器架构:

  • 编码器接收输入(源)序列的嵌入,并将其转换为一个新的固定长度的嵌入向量
  • 解码器接收来自编码器的嵌入向量,并将其转换为输出嵌入序列
  • 编码器和解码器都由多个堆叠的网络层组成,每个编码器和解码器层都使用注意力机制

Transformer 架构引入以来,变体网络可以只使用编码器或解码器组件,或两者同时使用。
同时,基于 Transformer 的网络会重用其他现有的机器学习方法,如残差和归一化。

2.4 Transformer 架构

我们已经了解了 Transformer 的一些关键概念,接下来我们深入探讨 Transformer 架构。需要注意的是,基于 Transformer 的模型通常通过利用各种注意力机制来构建,而不是使用循环神经网络 (Recurrent Neural Network, RNN),这是因为注意力机制本身能够替代并超越带有注意力的 RNN 编码器-解码器模型。下图对比了具有注意力机制的 seq2seq 网络与 Transformer 网络。

架构对比

Transformer 与具有注意力机制的 seq2seq 模型具有以下相似性:

  • 都处理源(输入)和目标(输出)序列
  • 都使用编码器-解码器架构
  • 编码器最后一个模块的输出用作上下文向量,以计算解码器中的注意力函数
  • 目标(输出)序列的嵌入被输入到全连接模块中,全连接块将输出嵌入转换为最终的整数序列

两种架构的不同之处在于:

  • seq2seq 网络在编码器中使用循环层和注意力层,而在解码器中使用循环层;TransformerTransformer 块( N 个相同的层堆叠)替代了这些层
    • 在编码器中,Transformer 块由一系列子层组成:一个多头(自)注意力层和一个逐位置前馈层 (position-wise feedforward layer),这两个层都使用残差连接和归一化层
    • 在解码器中,Transformer 块包含一种带有掩码的多头(自)注意力层(掩码多头自注意力层),以及一个类似于编码器中的前馈层(同样具有残差连接和归一化层),掩码可以防止位置对未来的关注,此外,解码器中的第二个多头(自)注意力层计算对编码器 Transformer 块输出的注意力
  • 在带有注意力机制的 seq2seq 网络中,编码器状态会传递到第一个循环层时间步中;在 Transformer 中,编码器的状态被传递给解码器中的每一个 Transformer 块,这使得 Transformer 网络能够在时间步之间并行计算,不像 seq2seq 网络那样存在时间依赖性
  • 为了并行计算,Transformer 添加了一个编码层,以提供位置信息区分 Transformer 网络序列中每个元素的位置(位置编码层),这样,编码器将输入序列的位置信息和嵌入作为输入,从而能够考虑位置信息

接下来,逐步介绍数据在 Transformer 网络中的流动过程:

  1. 数据预处理,将输入和输出分词化并转换为嵌入

  2. 接下来,将位置编码应用于输入和输出嵌入,以获得关于序列中词元相对位置的信息。在编码器部分:

    • 编码器包含一个嵌入层和一个位置编码层,随后是 6 个相同的 Transformer 块,每个编码器中的 Transformer 块由一个多头(自)注意力层和一个逐位置前馈层组成

    自注意力是关注同一序列中某些部分的过程,处理一个句子时,我们可能希望知道哪些单词与当前单词最为相关

    • 多头注意力层由多个(本节中为 8 个)并行的自注意力层组成。自注意力通过从输入嵌入构建三个向量 Q Q Q (查询)、 K K K (键)和 V V V (值)来实现,这些向量是通过将输入嵌入与三个可训练的权重矩阵 W Q W_Q WQ W K W_K WK W V W_V WV 相乘创建的。输出向量 Z 是通过在每个自注意力层中使用以下公式结合 K K K Q Q Q V V V 创建的,其中 d K d_K dK 表示 K K K Q Q Q V V V 向量的维度(本节中为 64):
      z = s o f t m a x ( Q K T d k ) V z=softmax(\frac {QK^T}{\sqrt {d_k}})V z=softmax(dk QKT)V
    • 多头注意力层会为 Z 创建多个值(基于每个自注意力层中的多个可训练权重矩阵 W Q W_Q WQ W K W_K WK W V W_V WV),然后将这些值连接起来,作为逐位置前馈层的输入
    • 逐位置前馈层的输入由序列中不同元素(如句子中的单词)的嵌入组成,这些嵌入通过多头注意力层中的自注意力进行处理。每个词元在内部由一个固定长度的嵌入向量表示(在本节中为 512),每个向量并行通过前馈层处理。前馈网络的输出作为下一个 Transformer 块中的多头注意力层的输入。在编码器的最后一个 Transformer 块中,输出是传递给解码器的上下文向量
    • 多头注意力层和逐位置前馈层不仅将前一层的信号传递给下一层,还将其输入的残差信号传递给输出。输出和残差输入经过一个层归一化
    • 由于编码器中整个序列是并行处理的,各个元素的位置相关信息会丢失。为弥补这一点,输入嵌入通过位置编码处理,位置编码实现为无学习参数的正弦函数,位置编码会加到输入嵌入上
  3. 接下来,了解数据在解码器中的流动过程:

    • 编码器的输出生成一对注意力向量 K K K V V V,这些向量并行地传送到解码器中的所有 Transformer 块。解码器中的 Transformer 块类似于编码器中的 Transformer 块,不同之处在于它具有一个额外的多头注意力层,用于处理来自编码器的注意力向量。这个额外的多头注意力层的工作方式与编码器中的层类似,但它结合了来自下层的 Q Q Q 向量和来自编码器状态的 K K K V V V 向量
    • seq2seq 网络类似,输出序列一次生成一个词元,使用来自前一时间步的输入。与编码器的输入类似,解码器的输入也会用位置编码进行处理。不同于编码器,解码器中的自注意力过程只能关注先前时间点的词元,这是通过屏蔽未来时间步的词元实现的
    • 解码器中最后一个 Transformer 块的输出是一个低维嵌入序列(本节中为 512)。这个嵌入序列会传递到全连接层,转换成目标词汇表中的概率分布序列,据此可以通过贪心算法或更复杂的技术(如束搜索)生成最可能的单词

Tranformer 整体架构如下图所示:

Transformer

2.5 模型训练

Transformer 通常通过半监督学习进行训练,分为以下两个步骤:

  • 首先是无监督的预训练,通常在一个非常大的语料库上进行
  • 然后是在一个较小的标注数据集上进行有监督的微调

无论是预训练还是微调,都可能需要大量的资源,特别是,考虑到大语言模型 (large language model, LLM) 参数数量的不断增加,这种情况更为明显。
第二个步骤中的标注数据集通常规模较小,这也称为少样本学习 (few-shot learning),指的是在样本数量有限的情况下进行预测。

3. Transformer 类别

3.1 解码器(自回归)模型

一个典型的例子是 GPT (Generative Pre-Trained) 模型,自回归模型仅使用原始 Transformer 模型的解码器,其注意力头只能看到文本中之前的内容,而无法看到之后的内容,并在完整句子上使用掩码机制。自回归模型通过观察所有先前的词元来推测下一个词元。通常,自回归模型用于文本生成任务。其他经典的自回归模型包括 GPT-2Transformer-XLReformerXLNet

3.2 编码器(自编码)模型

一个典型的例子是 BERT (Bidirectional Encoder Representations from Transformers),自编码器对应于原始 Transformer 模型中的编码器,能够访问完整的输入词元。自编码模型通过掩码/更改输入词元,然后尝试重建原始句子来进行预训练。通常,这些模型建立了完整句子的双向表示。需要注意的是,自编码器和自回归模型之间唯一的区别在于预训练阶段,因此相同的架构可以以两种方式使用。自编码器可以用于自然语言生成,以及分类和其它 NLP 任务。除了 BERT,其他经典的自编码模型包括 ALBERTRoBERTaELECTRA

3.3 编码器-解码器模型

典型的例子包括 T5 (Text-to-Text Transfer Transformer)、多任务统一模型 (Multitask Unified Model, MUM) 和原始 Transformer。编码器-解码器模型使用原始 Transformer 架构中的编码器和解码器,可以微调用于多种任务,如翻译、摘要和问答等。

4. 经典注意力机制

注意力机制有多种类型,例如自注意力、局部/硬注意力和全局/软注意力等。接下来,我们重点介绍一些经典注意力机制。

4.1 稀疏注意力

原始 Transformer 论文中的(缩放)点积注意力通常是在一个完整的平方矩阵 ( O ( L 2 ) O(L^2) O(L2)) 上计算,其中 L L L 是最大考虑的序列长度。BigBird Transformer 引入了稀疏注意力的思想,通过利用稀疏矩阵来实现。

4.2 LSH 注意力

Reformer 引入了通过哈希减少注意力机制复杂度的思想,称之为局部敏感哈希 (locality-sensitive hashing, LSH) 注意力。该方法基于在计算 $softmax(QKT) 时仅使用最大元素的思想,换句话说,对于每个查询 q ∈ Q q\in Q qQ,仅计算与 q q q 接近的键 k ∈ K k\in K kK。为了计算接近度,根据局部敏感哈希技术计算多个哈希函数。

4.3 局部注意力

一些 Transformer 采用了仅使用局部上下文窗口的思想(例如,右侧几个词元和左侧几个词元)。核心思想在于,使用较少的参数可以考虑更长的序列,但注意力的范围有限。因此,局部注意力的受欢迎程度较低。

5. 预训练任务

预训练任务可以分成以下类别:

  • 语言建模 (Language Modeling, LM):对于单向语言模型,任务是预测下一个词元。对于双向语言模型,任务是预测前后词元
  • 掩码语言建模 (Masked Language Modeling, MLM):关键思想是将输入句子中的某些词元进行掩码处理,模型在给定非掩码词元的情况下训练以预测被掩码的词元
  • 排列语言建模 (Permuted Language Modeling, PLM):与语言建模类似,但对输入序列进行随机排列。然后选择一部分词元作为目标,模型训练预测这些目标
  • 去噪自编码器 (Denoising Autoencoder, DAE):输入数据集中部分数据被破坏。例如,随机抽取输入词元并用特殊的 [MASK] 元素替换它们,或者随机删除输入词元,或者随机打乱句子的顺序。模型的任务是恢复未被破坏的原始输入
  • 对比学习 (Contrastive Learning, CTL):通过假设某些观察到的文本对比随机采样的文本对更具语义相似性,为文本对学习评分函数,常用方法包括:
    • 深度信息最大化 (Deep InfoMax, DIM):最大化输入图像表示与同一图像的各种局部区域之间的互信息
    • 替换词元检测 (Replaced Token Detection, RTD):预测给定上下文的输入词元是否被替换
    • 下一句子预测 (Next Sentence Prediction, NSP):模型训练用于区分两个输入句子在训练语料库中是否是连续的
    • 句子顺序预测 (Sentence Order Prediction, SOP):与 NSP 的思想相同,但增加了附加信号:两个连续的句子作为正样本,而两个顺序颠倒的句子作为负样本

6. 多模态模型

多模态学习在人工智能中是指数据涉及多个模态,而不是仅仅依赖单一模态(如仅图像、仅文本等)。例如,输入或输出包含图像和文本两种信息,或者跨模态问题,其输入和输出的模态不同。
在深入探讨使用 Transformer 的多模态学习之前,首先有必要介绍它们如何用于图像。Transformer 接收的输入是一个序列,但与文本不同,图像并不是一维序列,一种方法是将图像转换为多个图块 (patch)。每个图块会被线性映射为一个向量,并应用位置编码。下图展示了视觉 Transformer (Vision Transformer, ViT) 的架构及其工作原理:

ViT

可以应用分类头来处理图像分类等任务,同时,这种方法也可以用于其它输入类型的应用。
单独使用 Transformer 处理图像或文本可以创建一个能够理解文本或图像的模型。但如果我们希望拥有一个能够同时理解文本和图像,并且在它们之间建立联系的模型,那么就需要在训练过程中加入约束。对比语言-图像预训练 (Contrastive Language-Image Pre-training, CLIP) 是一个能够理解图像和文本的模型,可以用于语义搜索,其中输入可以是文本/图像,输出也可以是文本/图像。下图展示了 CLIP 模型如何通过使用双编码器进行训练:

CLIP

CLIP 架构中可以明显看出,它对于文本和图像模态的零样本预测非常有用。DALL-E 和基于扩散的模型(如 Stable Diffusion )也属于多模态模型。Stable Diffusion 的工作流程如下图所示:

Stable Diffusion

多模态学习不仅能够使用不同的模态来处理始终与图像-文本相关的任务,还可以与其他模态结合使用,如语音、数值数据和图数据等。

7. Transformer 模型发展展望

7.1 模型记忆与查询工具之间的权衡

当前大模型可以通过访问互联网或其它外部工具,使得模型能够在实时获取和应用最新数据、执行复杂的推理任务以及与多种工具和服务交互时更为高效,但也因此面临着将信息存储在模型权重中和利用外部工具间的抉择。某些情况下显然需要外部工具,例如计算 202 4 2025 2024^{2025} 20242025 ,但也有许多常识性的信息无需借助外部工具,如江苏的省会是南京,唐朝的开国皇帝是李渊。Transformer 模型是否可以足够灵活,以决定何时使用外部工具,以及是否可以将使用外部工具的权衡集成到损失函数中,让 Transformer 模型学会如何做出决策,将是进一步研究的重点问题。

7.2 模型的安全性与稳定性

随着 Transformer 模型在实际生产环境中的广泛应用,如何保障其安全性、稳定性,以及抵抗对抗性攻击 (adversarial attacks) 将成为一个重要方向,需要开发出更加鲁棒和稳定的 Transformer 架构,以防止潜在的安全威胁。

7.3 将 Transformer 模型视为通用智能体的核心组成

通用智能体能够以自然语言进行推理并与外部工具互动,例如,Wang 等人使用 Transformer 模型作为一个集中规划器,用来生成解决 Minecraft 游戏任务的目标序列。通过反馈循环和对子目标执行的中间检查,Transformer 模型能够解释目标执行者的错误并优化其原始计划。但基于 Transformer 模型的控制器并非通用智能体的唯一可行方法,在对 Diplomacy 游戏的研究中,考虑到该游戏复杂的规划和推理动态,采用了通过自我对弈和强化学习训练的临时规划模型,其中 Transformer 模型用来与其他玩家互动,因此作为一个外部通信模块,基于当前游戏状态进行交流。Transformer 模型将在下一代强大交互式系统中发挥核心作用,作为模块化系统的集中式控制器,或作为需要与协调器互动的模块。

小结

Transformer 不仅推动了 NLP 的快速发展,也成为了许多先进模型的基础。以 GPTBERTT5 等为代表的大语言模型,均基于 Transformer 架构。此外,Transformer 还被成功应用于计算机视觉领域、推荐系统等领域,为深度学习带来了前所未有的效率与表现。随着研究的深入,Transformer 架构正在不断优化和拓展,不仅提升了模型的性能,也让人工智能技术更贴近实际应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28320.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vector 面试点总结

ps&#xff1a;部分内容使用“AI”查询 一、入门 1、什么是vector 动态数组容器&#xff0c;支持自动扩容、随机访问和连续内存存储。 2、怎么创建-初始化vector std::vector<int> v; // 创建空vectorstd::vector<int> v {1, 2, 3}; // 直接初始化std::vec…

2024年中国城市统计年鉴(PDF+excel)

2024年中国城市统计年鉴&#xff08;PDFexcel&#xff09; 说明&#xff1a;包括地级县级市 格式&#xff1a;PDFEXCEL 《中国城市统计年鉴》是一部全面反映中国城市发展状况的官方统计出版物&#xff0c;包括各级城市的详细统计数据。这部年鉴自1985年开始出版&#xff0c;…

SSL证书和HTTPS:全面解析它们的功能与重要性

每当我们在互联网上输入个人信息、进行在线交易时&#xff0c;背后是否有一个安全的保障&#xff1f;这时&#xff0c;SSL证书和HTTPS便扮演了至关重要的角色。本文将全面分析SSL证书和HTTPS的含义、功能、重要性以及它们在网络安全中的作用。 一、SSL证书的定义与基本概念 S…

辉视融合服务器方案:为小酒店行业铺垫未来智能化布局

在数字化浪潮席卷全球的今天&#xff0c;酒店行业正面临着前所未有的机遇与挑战。辉视融合服务器方案以其经济高效、智能运维和灵活扩展的独特优势&#xff0c;为小酒店行业提供了一站式的数字化解决方案&#xff0c;助力其在激烈的市场竞争中脱颖而出。通过重塑高效运维模式&a…

[vue] 缩放比适配问题

在开发前端页面的时候经常会发生不同用户存在不同缩放比的问题. 解决方案为 第一步, 在html标签中添加缩放锚点,及隐藏对应的滑块 项目刚开始 对于lang是没有设置的 , 这里我们设置成zh-CN,后续的最关键内容为transform-origin: 0 0;这样就保证了在缩放的时候不会乱跑. <…

通过多线程分别获取高分辨率和低分辨率的H264码流

目录 一.RV1126 VI采集摄像头数据并同时获取高分辨率码流和低分辨率码流流程 ​编辑 1.1初始化VI模块&#xff1a; 1.2初始化RGA模块&#xff1a; 1.3初始化高分辨率VENC编码器、 低分辨率VENC编码器&#xff1a; 1.4 VI绑定高分辨率VENC编码器&#xff0c;VI绑定RGA模块…

postman请求后端接受List集合对象

后端集合 post请求&#xff0c;即前端请求方式

TMS320F28P550SJ9学习笔记1:CCS导入工程以及测试连接单片机仿真器

学习记录如何用 CCS导入工程以及测试连接单片机仿真器 以下为我的CCS 以及驱动库C2000ware 的版本 CCS版本&#xff1a; Code Composer Studio 12.8.1 C2000ware &#xff1a;C2000Ware_5_04_00_00 目录 CCS导入工程&#xff1a; 创建工程&#xff1a; 添加工程&#xff1a; C…

MySQL——DQL、多表设计

目录 一、DQL 1.基本查询 2.条件查询 3.分组查询 4.排序查询 5.分页查询 二、多表设计 1.一对多 2.一对一 3.多对多 一、DQL 1.基本查询 注意&#xff1a; *号代表查询所有字段&#xff0c;在实际开发中尽量少用&#xff08;不直观、影响效率&#xff09; 2.条件查询…

千里科技亮相吉利AI智能科技发布会,共启“AI+车”新纪元

今天&#xff0c;在三亚举行的吉利AI智能科技发布会上&#xff0c;千里科技董事长印奇发表了主题为《从“车AI”到“AI车”》的演讲。印奇重点分享了对于“AI车”未来趋势的判断&#xff0c;并重点介绍了在吉利AI科技生态体系下&#xff0c;围绕智驾、智舱等领域的创新合作。基…

rust学习笔记11-集合349. 两个数组的交集

rust除了结构体&#xff0c;还有集合类型&#xff0c;同样也很重要&#xff0c;常见的有数组&#xff08;Array&#xff09;、向量&#xff08;Vector&#xff09;、哈希表&#xff08;HashMap&#xff09; 和 集合&#xff08;HashSet&#xff09;字符串等&#xff0c;好意外呀…

.net8 使用 license 证书授权案例解析

创建 webapi 项目 使用 .NET CLI 创建一个 ASP.NET Core Web API 应用&#xff0c;并添加指定的 NuGet 包&#xff0c;可以按照以下步骤操作&#xff1a; 创建 ASP.NET Core Web API 项目&#xff1a; dotnet new webapi -n WebAppLicense cd WebAppLicense添加 Standard.Li…

QT-自定义参数设计框架软件

QT-自定义参数设计框架软件 Chapter1 QT-自定义参数设计框架软件前言一、演示效果二、使用步骤1.应用进行参数注册2.数据库操作单例对象3.参数操作单例对象 三、下载链接 Chapter2 Qt中管理配置参数&#xff08;QSettings、单例模式&#xff09;1 前言2 QSettings类ini文件写in…

vue实例

// vue应用通过createApp函数创建一个新的应用实例&#xff0c;相当于根组件 import { createApp } from vue import App from ./App.vue // 在一个vue项目当中&#xff0c;有且只有一个vue的实例对象 const appcreateApp(App) // App:根组件 // 实例必须调用了.mount&am…

数据库设计理论与实践

设计理论 数据库范式 与反范式 ER模型 最小值 与最大值 | | &#xff1a;最小一个&#xff0c;最多一个 设计数据库我们只需要关心&#xff1a;一对一&#xff0c;一对多&#xff0c;多对多 。** 多的最小值 可以 不关注** ** 多对多 &#xff1a;我们可以 建立第三张表&am…

不用写代码,批量下载今日头条文章导出excel和pdf

前几天有人问我怎么批量抓取今日头条某个号的所有文章数据&#xff0c;需要文章链接&#xff0c;标题和时间&#xff0c;但是不会写代码&#xff0c;于是我写了个简单的教程 这里以渤海小吏为例 首先用edge浏览器安装web-scraper浏览器扩展 然后打开浏览器控制台&#xff0c;找…

FakeApp 技术浅析(二):生成对抗网络

生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;简称 GANs&#xff09;是 FakeApp 等深度伪造&#xff08;deepfake&#xff09;应用的核心技术。GANs 由 生成器&#xff08;Generator&#xff09; 和 判别器&#xff08;Discriminator&#xff09; 两个…

DeepSeek本地接口调用(Ollama)

前言 上篇博文&#xff0c;我们通过Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便开发人员&#xff0c;如何通过代码或工具&#xff0c;通过API接口调用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不仅…

JavaWeb后端基础(4)

这一篇就开始是做一个项目了&#xff0c;在项目里学习&#xff0c;我主要记录在学习过程中遇到的问题&#xff0c;以及一些知识点 Restful风格 一种软件架构风格 在REST风格的URL中&#xff0c;通过四种请求方式&#xff0c;来操作数据的增删改查。 GET &#xff1a; 查询 …

deepseek本地部署:deepseek-r1-distill-llama-70b应用实践

DeepSeek本地部署之deepseek-r1-distill-llama-70b 本地部署与 AI 应用实践 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;的快速发展为企业数字化带来了前所未有的机遇。然而&#xff0c;中小企业在使用诸如 GPT-4 这类云端大模型服务时&#xff0c;往往面临数…