蒙帕视角|Transformer:AI大模型的基石(二)

1、 引言

在上一期的内容中,我们一起探索了Transformer算法结构的基本组成,了解了它如何成为现代AI大模型的基石之一。今天,我们将深入探讨这一架构中的两个核心概念:自注意力机制(Self-Attention Mechanism)与多头注意力机制(Multi-Head Attention Mechanism)。

这两个组件不仅赋予了Transformer处理序列数据时无与伦比的能力,还极大地提高了其在各种自然语言处理任务上的表现。让我们一起揭开它们神秘的面纱,看看这些技术是如何工作的,并理解为什么它们对于构建高效、强大的人工智能系统至关重要。

2、 自注意力机制

Transformer由编码器和解码器组成,编码器的输入首先经过一个自注意力层------这个层帮助编码器在编码特定词时关注输入句子中的其他词。我们将在本文稍后深入探讨自注意力。自注意力层的输出被送入一个前馈神经网络。相同的前馈网络独立地应用于每个位置。

解码器也有这两个层,但它们之间有一个注意力层,帮助解码器关注输入句子中相关的部分(类似于序列到序列模型中的注意力机制)。如下图1所示。

图1. 编码器和解码器

图2. 每个词被嵌入到一个大小为512的向量中,方框表示向量

如图2所示,首先通过Word2Vec等词嵌入方法将输入语料转化成特征向量,论文中使用的词嵌入的维度为d_{\text{model}} = 512。在最底层的块(block)中,这些特征向量将直接作为Transformer的输入,而在其他层中,输入则是上一个块的输出。为了便于图示,我们将使用更简单的例子来表示接下来的过程,如图3所示:

图3. 每个位置的词都会经过自注意力机制处理。然后,各自通过一个前馈神经网络(feed-forward neural network)进行处理。

Self-Attention是Transformer最核心的内容,简单解释为输入向量的每个单词学习一个权重,例如在下面的例子中我们判断''它''代指的内容,在句子"我有一只小猫,我很喜欢它胖乎乎的肚皮"中,为了理解代词"它",模型需要从句子中的其他词(如"小猫")获取信息。这种情况下,自注意力机制(Self-Attention Mechanism)能够捕捉到句子内部的依赖关系。

自注意力机制的核心思想是:为了获得关于某方面信息的查询Q ,可以通过关注某些信息K 来得到相应的值V 。在自然语言处理中,任何一段文本都暗含了许多潜在的Q-K-V关联。 Q 就是 query 检索/查询,K-V 分别是 key、value。例如,在百度搜索 Q = "NLP书籍",得到了一本叫《自然语言处理实战》的电子书。书名就是 key,这本电子书就是 value。

自注意力机制的公式可以表示为:

其中,X是输入序列,经过自注意力计算后,得到的Z向量包含了丰富的内部依赖信息。具体来说,Z向量中的每个元素zi都与 X的所有元素有某种关联,而不是只与xi有关联。

3、 Q-K-V是怎么计算的?

在self-attention中,每个单词有3个不同的向量,它们分别是Query向量Q,Key向量K和Value向量V,长度均是64。它们是通过3个不同的权值矩阵由嵌入向量E乘以三个不同的权值矩阵WQ,WK,WV得到,其中三个矩阵的尺寸也是相同的,均为dmodel×k,这里d×k = 64。具体公式如下:

其中 WQ,WK,WV均是在网络中学习可得到的权值矩阵。

图4. Q,K,V的计算示例图

图5. Self-Attention计算示例图

在自注意力机制中,计算 Query、Key 和 Value 矩阵的过程是通过将输入的嵌入(embeddings)组织成一个矩阵X,然后与训练好的权重矩阵 WQ,WK,WV相乘来实现的。下面是这个过程的详细解释:

图6. Q,V,K的矩阵表示

图7. Self-Attention的矩阵表示

4、 多头注意力机制

《Attention Is All You Need》论文进一步完善了自注意力层,加入了一种称为"多头"注意力的机制。这提升了注意力层的性能,主要体现在两个方面:

  1. 扩展模型对不同位置的关注能力:在上述例子中,输出向量 z1 包含了其他编码的一些信息,但可能会被实际单词本身所主导。例如,在翻译句子"这只动物没有过马路,因为它太累了"时,了解"它"指代哪个单词是非常重要的。

  2. 提供多个"表示子空间":正如我们将要看到的,通过多头注意力机制,我们不仅拥有一组 Query / Key / Value 权重矩阵,而是多个组(在 Transformer 中,使用了八个注意力头,因此每个编码器/解码器会有八组)。这些权重矩阵是随机初始化的。经过训练后,每组会将输入嵌入(或来自较低层编码器/解码器的向量)投影到不同的表示子空间中。

这种多头注意力机制使得模型能够更灵活地捕捉不同语义信息,从而提升了对复杂语言结构的理解和生成能力。

图8. 多头注意力机制矩阵计算演示

在多头注意力机制中,我们为每个注意力头维护独立的 Query、Key 和 Value 权重矩阵,这样可以生成不同的 Q、K 和 V 矩阵。如果使用不同的权重矩阵进行相同的自注意力计算八次,我们将得到八个不同的输出矩阵Z,如图9所示。

图9. 多头注意力机制矩阵计算

图10. 多个输出矩阵合并

通过这种方式,有效地将多个注意力头的输出整合到一起,并为后续的计算做好准备。这种拼接和线性变换的过程使得模型能够充分利用多头注意力机制的优势,同时保持输入输出的维度一致性。

下图11为简化的多头自注意力机制的可视化过程:

图11. 多头自注意力机制的可视化

现在看一个例子,具体分析在编码句子中"it"这个词时,各个注意力头的关注点。假设我们有一个句子,例如:"The animal didn't cross the street because it was too tired." 在这个句子中,我们想要关注"it"这个词的上下文。

在多头自注意力机制中,每个注意力头可以学习到不同的上下文信息,因此它们可能会关注句子中的不同部分。以下是一些可能的注意力头及其关注点的示例:

注意力头 1:可能关注"it"之前的词"the",因为它与"it"有直接的指代关系。

注意力头 2:可能关注"animal",因为"it"可能指代"the animal",特别是在上下文中。

注意力头 3: 可能关注"street",因为它提供了位置,可能与"it"相关联。

注意力头 4:可能关注"cross",因为它提供了关于"it"的动作的上下文。

注意力头 5:可能关注"tired",因为它提供了"it"的状态或情感上下文。

注意力头 6:可能关注"cross",因为它与动作有关,可能影响"it"的理解。

注意力头 7:可能关注"because",因为它连接了句子的不同部分,帮助理解"it"在句子中的整体结构。

注意力头 8:可能关注整个句子的上下文,综合考虑多个信息点,形成对"it"的更全面的理解。

通过这种方式,每个注意力头都能从不同的角度分析"it"这个词,从而增强模型对上下文的理解能力。最终,这些不同的关注点会被拼接和线性变换,形成对"it"的综合表示,供后续的前馈层使用。这种机制使得模型能够在复杂的句子结构中有效地捕捉长距离依赖关系,从而提升自然语言处理任务的性能。

图12. 注意力可视化效果

在编码器需要强调的最后一点是其采用了残差网络中的short-cut结构,目的是解决深度学习中的随网络深度增加导致梯度退化问题,最终编码器结构如图13。

图13. 编码器结构

那么可视化与自注意力相关的向量和层归一化操作,它的样子如下图14:

图14. 自注意力相关的向量和层归一化

这同样适用于解码器的子层,下图展示一个包含两个堆叠编码器和解码器的变换器,它的结构大致如下:

图15. 编解码器展示

5、 总结

在当前的人工智能领域,Transformer架构已经成为了推动技术进步的核心动力。它不仅为自然语言处理(NLP)带来了革命性的变化,还催生了一系列具有里程碑意义的模型,如BERT、GPT以及当前大火的DeepSeek等。这些模型在各自的领域内取得了显著的成就,极大地推动了语言理解、生成和推理能力的发展。

GPT(Generative Pre-trained Transformer)系列模型利用Transformer的解码器部分,通过自回归的方式生成文本,展现了强大的语言生成能力。BERT(Bidirectional Encoder Representations from Transformers)则利用了Transformer的编码器部分,通过双向上下文理解,显著提升了语言理解任务的性能。而DeepSeek等模型则在特定领域或任务上,结合Transformer的优势,进一步优化和扩展了其应用范围。

这些模型之间的关系和各自的创新点,将在下篇中进行详细探讨。通过对它们的深入分析,我们可以更好地理解Transformer架构如何在不同场景下被灵活应用,以及它们如何共同推动了人工智能技术的边界。

关于蒙帕

上海蒙帕智能科技股份有限公司聚焦IT运维领域20余年,服务客户超过400多家。

2015年组建研发团队,专注于"智能巡检机器人" 及"智能运维综合管控平台" 的研发,目前已获得"智能运维类"软件著作权40余项,产品发明专利30余项。

在北京、西安、重庆、深圳、广州、沈阳、大连、郑州、武汉、成都、无锡等地均设有分公司及办事处。

相关推荐
圣保罗的大教堂1 小时前
《算法笔记》9.3小节——数据结构专题(2)->树的遍历 问题 A: 树查找
算法
乌云暮年3 小时前
算法刷题整理合集(四)
java·开发语言·算法·dfs·bfs
Luo_LA4 小时前
【排序算法对比】快速排序、归并排序、堆排序
java·算法·排序算法
AI技术控4 小时前
机器学习算法实战——天气数据分析(主页有源码)
算法·机器学习·数据分析
oioihoii4 小时前
C++20 中的同步输出流:`std::basic_osyncstream` 深入解析与应用实践
c++·算法·c++20
猪猪成4 小时前
【图论】FLOYD弗洛伊德算法-最短路径
学习·算法·图论
HR Zhou4 小时前
群体智能优化算法-粒子群优化算法(Particle Swarm Optimization, PSO,含Matlab源代码)
算法·matlab·优化·智能优化算法
SylviaW084 小时前
python-leetcode 48.括号生成
算法·leetcode·职场和发展
飞奔的马里奥5 小时前
力扣算法Hot100——75. 颜色分类
java·算法·leetcode
Chen--Xing6 小时前
洛谷 P3986 斐波那契数列
python·算法