14. GPU共享内存

核心内容摘要

MySQL 8.0大事务避坑指南:为什么你的commit突然变慢了?
星际工厂模块化设计探索指南

Retinaface+CurricularFace在金融领域的应用:身份认证系统实战

目的为避免一学就会、一用就废这里做下笔记说明本文内容紧承前文-Transformer架构1-整体介绍和注意力机制欲渐进请循序本文重点介绍Transformer架构中的自注意力机制Self-Attention该机制在Transformer架构的Encoder Block和Decoder Block中都有使用

是什么自注意力机制是一种特殊的注意力机制它的核心特征是让序列中的每个元素与同一序列中的所有其他元素建立动态关注关系。

与传统的注意力机制不同自注意力不涉及两个不同的序列而是专注于单个序列内部的关系挖掘与信息整合。

示意如下自注意力的本质特征核心区别注意力 vs 自注意力传统注意力交叉注意力发生在两个不同序列之间如机器翻译中源语言序列与目标语言序列的对应关系编码器输出作为键(K)和值(V)解码器状态作为查询(Q)自注意力自我关注发生在同一序列内部如一个句子中各个单词之间的相互关注查询(Q)、键(K)、值(V)全部来自同一个输入序列数学本质给定一个序列X [ x 1 , x 2 , . . . , x n ] X [x_1, x_2, ..., x_n]X[x1​,x2​,...,xn​]自注意力为每个位置i ii计算输出z i z_izi​z i ∑ j 1 n α i j v j z_i \sum_{j1}^{n} \alpha_{ij} v_jzi​j1∑n​αij​vj​其中v j v_jvj​是位置j jj的值表示α i j \alpha_{ij}αij​是位置i ii对位置j jj的注意力权重通过 softmax 归一化权重α i j \alpha_{ij}αij​基于查询q i q_iqi​与键k j k_jkj​的相似度计算而q i q_iqi​、k j k_jkj​、v j v_jvj​都来自同一输入X XX的不同线性变换自注意力的独特属性

完全上下文感知自注意力独有每个位置的输出表示都包含了整个序列的信息因为每个位置都能直接看到序列中的所有其他位置。

这使得自注意力能够捕获长距离依赖关系不受距离限制。

传统注意力确实提供了一定程度的上下文感知但其上下文是跨序列的、有限的、单向的。

自注意力提供的是序列内部的、全面的、双向的上下文感知

排列等变性自注意力独有但这并非优点只是特性自注意力机制对输入序列的顺序是等变的如果打乱输入序列的顺序输出也会以相同的方式被打乱。

这意味着自注意力本身不包含位置信息需要额外添加位置编码两者配合一起工作。

动态权重分配所有注意力机制都有注意力权重不是固定的而是根据序列内容动态计算的。

同一元素在不同序列中会有不同的注意力模式。

直观示例理解考虑句子“The cat sat on the mat because it was tired.”自注意力机制会让序列中的每个词计算与所有其他词的关注度对于it高度关注cat指代关系中等关注tired属性关系较低关注其他词对于tired高度关注cat和it描述对象关注was语法关系较低关注其他词这样每个词最终的表示都融入了整个句子的上下文信息而不仅仅是局部信息。

在Transformer架构中的位置在标准Transformer中自注意力以两种形式存在编码器自注意力双向自注意力每个位置可以看到前后所有位置用于深度理解输入序列。

解码器自注意力掩码因果自注意力每个位置只能看到当前及之前的位置用于自回归生成。

为什么解决传统序列建模的根本缺陷传统RNN/LSTM的固有问题循环神经网络虽然能够处理序列但存在几个根本性限制顺序计算瓶颈RNN必须按时间步顺序处理序列无法并行化计算。

在处理长序列时这种顺序依赖性严重限制了训练速度。

信息传递衰减信息需要通过多个时间步传递远距离依赖容易因梯度消失或爆炸而难以学习。

早期信息在传递过程中可能被稀释或丢失。

固定信息流向传统RNN通常采用固定的信息流动方向如从左到右或双向缺乏根据内容动态调整信息流动的能力。

CNN在序列处理中的局限卷积神经网络虽然可以并行计算但存在局部感受野限制CNN的卷积核只能捕获局部模式需要堆叠多层才能获得全局视野这增加了模型深度和训练难度。

位置不变性假设CNN的平移不变性假设在处理序列时可能不合适因为序列中的位置信息通常很重要。

自注意力的革命性优势

完全并行计算能力自注意力将序列处理从时间维度转化为空间维度所有位置的计算可以同时进行。

这使得自注意力能够充分利用现代硬件的并行计算能力特别是在GPU上训练速度相比RNN可以提升一个数量级。

传统注意力本身也是并行的但传统注意力会收到RNN按时间步顺序计算的严重限制。

自注意力没有此限制

任意距离的直接连接在自注意力中序列中任意两个位置都可以直接交互无论它们相距多远。

这种全连接特性使得模型能够轻松捕获长距离依赖关系无需担心信息在传递过程中的衰减。

动态上下文建模自注意力的权重是动态计算的基于序列的实际内容。

这意味着内容相关性相关的内容获得更高的注意力权重上下文敏感同一元素在不同上下文中会有不同的关注模式自适应聚焦模型可以根据需要关注不同粒度的信息

统一的序列处理框架自注意力为各种序列任务提供了统一的处理框架自然语言处理词语之间的语法和语义关系计算机视觉图像块之间的空间和语义关系语音处理音频帧之间的时序关系图数据处理节点之间的连接关系实际性能突破自注意力机制带来了显著的性能提升在机器翻译任务上Transformer基于自注意力在WMT 2014英德翻译任务上取得了

2

4的分数比之前最好的基于RNN的模型提高了2个点同时训练速度快了5倍以上。

在语言理解任务上基于自注意力的BERT模型在GLUE基准测试中取得了突破性的成绩多个任务达到了人类水平。

在长序列建模上自注意力能够有效处理长达数千个位置的序列而传统RNN在处理几百个位置后就可能出现性能下降。

自注意力 vs 传统注意力的独特价值深度理解 vs 表面对齐传统注意力主要关注两个序列之间的对齐关系如机器翻译中的源语言词与目标语言词的对应。

自注意力首先在序列内部建立深度理解然后基于这种理解进行跨序列交互。

这种先理解再交互的模式更符合人类的认知过程。

内部表示的质量提升通过自注意力序列中的每个元素都获得了丰富的上下文信息这种增强的表示随后用于各种下游任务。

相比直接从原始输入学习表示这种经过自注意力加工的表示包含了更多的结构化信息。

多层级信息整合在深层Transformer模型中不同层的自注意力捕获不同层级的信息浅层局部语法和表面特征中层句法结构和语义关系深层篇章级信息和抽象概念这种层级化的信息整合能力是传统注意力难以实现的。

怎么办基本计算流程自注意力的计算可以分解为三个核心步骤每个步骤都有明确的物理意义和数学表达。

第一步生成三种角色表示对于输入序列中的每个元素自注意力机制为其创建三种不同的表示分别扮演不同的角色查询Query当前元素想要了解其他元素的问题或兴趣点。

它代表当前位置希望从序列中获取什么样的信息。

键Key每个元素的身份标识或特征摘要。

其他元素通过比较查询与键的相似度来决定关注程度。

值Value每个元素实际携带的内容信息或知识。

注意力权重确定后这些值将被加权组合。

这三种表示都来自同一个输入序列通过不同的线性变换获得。

这种设计允许模型学习如何从同一数据中提取不同类型的信息。

第二步计算注意力权重这是自注意力的核心环节决定了每个元素应该关注其他元素的多少。

计算过程如下相似度计算对于位置i的查询和位置j的键计算它们的相似度得分。

通常使用点积操作因为它计算高效且几何意义明确。

缩放处理将相似度得分除以一个缩放因子通常是键向量维度的平方根。

这一步是为了防止点积值过大导致softmax函数进入饱和区从而避免梯度消失问题。

归一化使用softmax函数将相似度得分转换为概率分布。

对于每个位置i所有位置的权重之和为1这确保了注意力权重的归一化。

最终得到的注意力权重矩阵是一个方阵其中第i行第j列的值表示位置i对位置j的关注程度。

第三步信息聚合与输出基于计算出的注意力权重每个位置将其对序列中所有位置的关注程度应用于对应的值向量每个输出位置 ∑(所有位置的注意力权重 × 对应位置的值向量)这种加权求和操作具有明确的物理意义每个位置的最终表示是序列中所有位置信息的加权组合权重由该位置与各位置的相关性决定。

多头自注意力机制单一的自注意力机制可能无法充分捕获复杂的关系模式因此实践中通常使用多头自注意力多头设计原理维度分割将模型的维度分割成多个头每个头负责学习一种特定的注意力模式。

并行计算每个头独立计算自注意力专注于捕获不同类型的关系。

信息融合所有头的输出被拼接起来然后通过一个线性变换整合信息。

多头的优势多样化模式学习不同头可以学习关注不同类型的关系如语法关系、语义关系、指代关系等。

增强表示能力多头机制提供了更丰富的表示空间增强了模型的表达能力。

提高鲁棒性即使某些头的学习效果不佳其他头仍然可以提供有用的信息。

典型配置在标准的Transformer模型中通常使用8个或16个注意力头。

每个头关注输入的不同方面共同构建全面的序列理解。

掩码自注意力在某些场景下需要限制自注意力的关注范围这时使用掩码自注意力因果掩码解码器使用在生成任务中为了避免信息泄露即未来的信息影响当前的生成使用因果掩码确保每个位置只能关注当前位置及之前的位置。

填充掩码在处理变长序列时为了批量处理通常需要填充到相同长度。

填充掩码确保模型忽略这些填充位置。

自定义掩码根据任务需求可以设计特定的掩码模式如只关注局部窗口、跳过特定位置等。

位置编码的配合由于自注意力本身是排列等变的不包含位置信息需要额外添加位置编码来为模型提供顺序信息绝对位置编码为每个位置分配一个唯一的编码向量通常使用正弦余弦函数或可学习的嵌入。

相对位置编码编码相对距离而非绝对位置更符合语言的内在特性。

旋转位置编码通过旋转操作将位置信息融入注意力计算具有良好的外推性。

自注意力的计算复杂度与优化复杂度分析标准自注意力的计算复杂度为O(n²d)其中n是序列长度d是模型维度。

这对于长序列可能成为计算瓶颈。

优化技术稀疏注意力只计算部分位置对的注意力如局部注意力、块状注意力等。

线性注意力通过核方法近似将复杂度降低到O(nd²)。

内存高效注意力使用分块计算等技术减少内存占用。

低秩近似将注意力矩阵分解为低秩矩阵的乘积。

自注意力在不同领域的应用自然语言处理在NLP中自注意力能够捕获词语之间的语法和语义关系。

例如在指代消解任务中自注意力能够帮助模型识别代词所指代的先行词在情感分析中自注意力能够帮助模型识别哪些词语对情感判断最重要。

计算机视觉在视觉任务中自注意力被用于捕获图像块之间的空间关系和语义关系。

Vision Transformer将图像分割成小块然后使用自注意力处理这些块序列在许多视觉任务上取得了优异性能。

语音处理在语音识别和语音合成中自注意力能够捕获音频帧之间的长距离依赖关系提高了对连续语音的理解和生成能力。

多模态学习在多模态任务中自注意力可以同时处理来自不同模态的输入并学习模态内部和模态之间的关系。

自注意力的局限性尽管自注意力具有许多优势但也存在一些局限性计算复杂度问题对于极长序列O(n²)的复杂度可能不可行需要采用各种优化技术。

位置信息依赖自注意力本身不包含位置信息需要额外的位置编码。

设计有效的位置编码方案仍然是一个活跃的研究领域。

局部模式捕获在某些任务中局部模式可能比全局关系更重要而自注意力平等对待所有位置可能无法有效聚焦于局部细节。

训练数据需求自注意力模型通常需要大量的训练数据才能充分发挥其能力在小数据场景下可能表现不佳。

唐人社区视频-唐人社区视频应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123