Transformer 总结(self-attention, multi-head attention)

Transformer模型通过自注意力机制解决了RNN的训练速度问题,允许并行计算。它包含编码器和解码器,其中编码器使用自注意力层来捕捉输入序列的上下文信息。自注意力通过查询、键、值向量计算注意力得分并进行加权求和。多头注意力则扩展了模型的关注范围,提供多个表示子空间。此外,位置编码用于表示序列顺序,残差连接和层归一化则增强了模型的训练效果。

《Attention Is All You Need》:[1706.03762] Attention Is All You Need (arxiv.org)

注:本文只是个人简单的概括知识点以便于本人日后查看,详细请参考:http://t.csdn.cn/dz2TH

Transformer

优点:

改进了RNN训练慢的缺点,利用self-attention机制实现快速并行。

可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。

整体框架图:

 

 所有的编码器在结构上都是相同的,但它们没有共享参数。解码器中还有一个注意力层,用来关注输入句子的相关部分(和seq2seq模型的注意力作用相似)。

编码器流程:

1、输入首先会经过一个自注意力(self-attention)层。

这层帮助编码器在对每个单词编码时关注输入句子的其他单词。

2、自注意力层的输出会传递到前馈(feed-forward)神经网络中。

每个位置的单词对应的前馈神经网络都完全一样(译注:另一种解读就是一层窗口为一个单词的一维卷积神经网络)。

自注意力

查询向量(Query)、键向量(Key)、值向量(Value)。

计算步骤:

1、生成三个向量QKV

对于每个输入Xi,通过词嵌入与三个权重矩阵相乘创建三个向量:一个查询向量、一个键向量和一个值向量。

2、计算得分

为每个输入Xi计算自注意力向量,利用其它输入X对当前Xi打分,这些分数决定了在编码Xi的过程中有多重视输入的其它部分。

3、稳定梯度

将分数除以8(默认值),8是论文中使用的键向量的维数64的平方根,这会让梯度更稳定,也可以使用其它值。

4、归一化

通过softmax传递结果,其作用是使所有X的分数归一化,得到的分数都是正值且和为1。

5、每个值向量乘以softmax分数

为之后将它们求和做准备,达到关注语义上的相关,并弱化其不相关(乘以非常小的小数)。

6、对加权值向量求和

含义:在编码某个Xi时,将所有其它X的表示(值向量)进行加权求和,其权重是通过Xi的表示(键向量)与被编码Xi表示(查询向量)的点积并通过softmax得到。即得到自注意力层在该位置的输出。

利用输入生成三个向量QKV

自注意力计算

多头注意力

多头注意力(multi-head attention)机制进一步完善了自注意力层。

优点:

1、扩展了模型专注于不同位置的能力。

在上面的结构中,虽然每个编码都在z1中有或多或少的体现,但是它可能被实际的单词本身所支配。如果我们翻译一个句子,比如“The animal didn’t cross the street because it was too tired”,我们会想知道“it”指的是哪个词,这时模型的“多头”注意机制会起到作用。

2、给出了注意力层的多个“表示子空间”(representation subspaces)。

对于“多头”注意机制,有多个查询/键/值权重矩阵集(Transformer使用八个注意力头,因此对于每个编码器/解码器有八个矩阵集合)。这些集合中的每一个都是随机初始化的,在训练之后,每个集合都被用来将输入词嵌入(或来自较低编码器/解码器的向量)投影到不同的表示子空间中。

挑战与方法:

与上述相同的自注意力计算,只需八次不同的权重矩阵运算就会得到八个不同的Z矩阵。但是,前馈层不需要8个矩阵,它只需要一个矩阵(由每一个单词的表示向量组成)。所以需要把这八个矩阵压缩成一个矩阵,可以直接把这些矩阵拼接在一起,然后用一个附加的权重矩阵WO与它们相乘。

位置编码

使用位置编码表示序列的顺序。

Transformer为每个输入的Xi嵌入添加了一个向量。有助于确定每个单词的位置,或序列中不同单词之间的距离。将位置向量添加到Xi嵌入中使得它们在运算中,能够更好地表达词与词之间的距离。

 每一行对应一个词向量的位置编码,即第一行对应着输入序列的第一个词。每行包含512个值,每个值介于1和-1之间。

20字(行)的位置编码实例,词嵌入大小为512(列)。你可以看到它从中间分裂成两半。左半部分的值由一个函数(正弦)生成,右半部分由另一个函数(余弦)生成。将它们拼在一起得到每一个位置编码向量。

这种方法的优点:能够扩展到未知的序列长度。

残差

在每个编码器中的每个子层(自注意力、前馈网络)的周围都有一个残差连接,并且都跟随着一个“层-归一化”步骤。

 层-归一化步骤:https://arxiv.org/abs/1607.06450

<think>嗯,用户这次想深入理解TransformerSelf-Attention的关系,之前已经确认过Transformer是神经网络结构,现在需要更聚焦两者的关联性。用户提供的引用资料很全面,特别是引用[2][3][4]直接讨论了这个问题。 用户可能正在学习NLP模型架构,需要厘清核心概念。从引用[2]看,用户已经注意到"Self-AttentionTransformer的核心机制"这个关键点,但需要系统化的解释。引用[4]里QKV模型的数学描述很有价值,可以强化技术解释的严谨性。 需要特别注意三点:一是数学表达规范(按系统指令用$...$包裹变量),二是区分广义AttentionSelf-Attention的特殊性,三是强调Transformer如何通过Self-Attention解决RNN的缺陷——这点在引用[3]提到长距离依赖时很重要。 用户似乎偏好技术细节,上次回答中关于CNN/RNN对比的表格收到良好效果,这次可以用结构图辅助说明。不过要避免直接贴代码,重点放在机制原理上。引用[4]的Encoder-Decoder结构图没显示出来很可惜,需要用文字精确描述层间关系。 最后生成的问题要引导用户深入机制实现(如多头注意力的并行计算)和演进脉络(如Transformer如何催生BERT/GPT),这比单纯问定义更有价值。毕竟用户引用中已经包含基础定义,下一步应该是理解创新点和行业影响。 </think> TransformerSelf-Attention 是**整体架构与核心组件**的关系:**Self-AttentionTransformer 的核心机制**,而 Transformer 是基于 Self-Attention 构建的完整神经网络架构。具体关系如下: --- ### 一、核心关系图解 ```mermaid graph LR A[Transformer] --> B[Encoder] A --> C[Decoder] B --> D[Self-Attention Layer] C --> D D --> E[多头注意力机制] D --> F[残差连接+层归一化] D --> G[前馈神经网络] ``` --- ### 二、详细关系分析 1. **Self-Attention 的本质作用** Self-Attention(自注意力)是 Transformer 的**基础运算单元**,其功能是通过计算输入序列中所有元素间的相关性,动态分配注意力权重: $$ \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$ 其中 $Q$(Query)、$K$(Key)、$V$(Value)均由同一输入序列线性变换得到[^4]。这种机制使模型能直接捕获任意两个元素的长程依赖[^3]。 2. **TransformerSelf-Attention 的扩展与应用** | 组件 | 作用 | 与 Self-Attention 的关联 | |---------------------|----------------------------------------------------------------------|---------------------------------------------| | **多头注意力** | 并行运行多个 Self-Attention 层,捕捉不同子空间的语义信息[^2] | Self-Attention 的并行化扩展 | | **位置编码** | 为输入序列注入位置信息(因 Self-Attention 本身不包含时序感知能力) | 弥补 Self-Attention 的结构缺陷 | | **Encoder-Decoder Attention** | Decoder 通过 Self-Attention 融合 Encoder 的输出(交叉注意力) | Self-Attention 的跨序列应用 | 3. **Transformer 的架构整合** - **Encoder 层**: 输入 → Self-Attention → 残差连接+层归一化 → 前馈网络 → 输出[^4] - **Decoder 层**: 在 Encoder 结构基础上增加 **Encoder-Decoder Attention 层**(本质是 Self-Attention 的变体),使解码能关注编码器输出[^4]。 --- ### 三、关键区别 | **维度** | Self-Attention | Transformer | |-------------------|------------------------------------|---------------------------------| | **定位** | 单一机制 | 完整神经网络架构 | | **功能范围** | 计算元素间权重 | 包含嵌入、位置编码、多层网络等 | | **时序处理** | 无内置位置感知 | 通过位置编码显式引入位置信息 | | **工业应用** | 需整合进其他模型使用 | 可直接作为独立模型(如 BERT) | > 💡 **示例说明**: > 在机器翻译中,Transformer 的 Encoder 通过 Self-Attention 分析源语言句子的全局关系(如"it"指代的对象),Decoder 则利用 Self-Attention 结合已生成词和 Encoder 信息预测下一个词[^2]。 --- ### 四、总结 - **Self-Attention**:是 Transformer 的**发动机**,提供全局信息建模能力[^3]; - **Transformer**:是搭载该发动机的**整车**,通过多层堆叠、残差设计等实现端到端学习[^1]。 二者共同解决了 RNN 的长程依赖和并行化难题,成为大语言模型(如 GPT)的基石[^2]。 --- ### 相关问题 1. Transformer 的位置编码为何必须与 Self-Attention 配合使用?数学原理是什么? 2. 多头注意力(Multi-Head Attention)如何增强单头 Self-Attention 的性能? 3. 在 Encoder-Decoder Attention 中,$Q$、$K$、$V$ 矩阵分别来自哪里? 4. Self-Attention 的复杂度 $O(n^2)$ 问题有哪些优化方案?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值