五级偏黄视频网站建设,网站对比分析,网站必须做可信认证吗,做网站的 深圳Transformer 是 Google 在 2017 年底发表的论文 Attention Is All You Need 中所提出的 seq2seq 模型。Transformer 模型的核心是 Self-Attention 机制#xff0c;能够处理输入序列中的每个元素#xff0c;并能计算其与序列中其他元素的交互关系的方法#xff0c;从而能够更…Transformer 是 Google 在 2017 年底发表的论文 Attention Is All You Need 中所提出的 seq2seq 模型。Transformer 模型的核心是 Self-Attention 机制能够处理输入序列中的每个元素并能计算其与序列中其他元素的交互关系的方法从而能够更好地理解序列中的上下文关系。
Transformer 模型能够处理不同长度的序列捕捉长距离依赖关系并在大规模数据上进行高效训练。这使得它成为自然语言处理领域取得重大突破的关键模型之一逐渐取代了 CNN 和 RNN。 目录 一. 预备知识1. Attention 机制2. Self-Attention 机制3. Cross-Attention 机制4. Multi-Head Attention5. 位置编码 二. Transformer1. Input Block2. Encoder Block3. Decoder Block4. Output Block 一. 预备知识
1. Attention 机制
Attention 机制 1 也叫注意力机制是一种用于改善神经网络 对输入序列中不同部分的关注度 的机制。在传统的神经网络中所有输入信息都被平等对待无论其在序列中的位置或重要性。而 Attention 机制允许网络在处理输入序列时更加关注其中的特定部分使网络能够更灵活地学习输入之间的关系。
Attention 机制的基本思想是对于每个输出位置网络都动态地计算一个权重分布以指示输入序列中哪些位置更重要。这个权重分布是通过计算 Query即用户提出的问题与 Key即模型中的知识摘要之间的关联度然后 softmax 归一化取最大概率的结果最后查询得到 Value即与 Key 相关联的知识输出。
Attention 机制解决了先前 RNN 不能并行计算的问题节省了训练时间并且能够获取到局部的关键信息。但 Attention 机制也有一些缺点
只能在 Decoder 阶段实现并行运算Encoder 部分依旧采用的是 RNN、LSTM 等按照顺序编码的模型无法实现并行运算因为 Encoder 部分仍依赖 RNN所以中长距离之间的两个词相互之间的关系没有办法很好的获取
为了改进 Attention 机制的缺点出现了 Self-Attention。
2. Self-Attention 机制
Self-Attention自注意力机制是 Attention 的一种特殊形式它允许一个 序列中的不同位置之间进行交互而不是像 Attention 机制那样仅仅对输入序列的不同部分进行关注。在 Self-Attention 中对于序列中的每个元素都会计算该元素与序列中所有其他元素之间的关联度然后利用这些关联度为每个元素分配一个权重。这样每个元素都能够考虑到整个序列的信息能够与序列中的所有其他位置进行交互而不仅仅是局部信息从而更好地捕捉长距离依赖关系。
Self-Attention 最为突出的应用就是在 Transformer 模型中它允许模型在处理序列数据时不受到固定的感受野大小的限制而能够根据任务的需要自适应地捕捉不同位置的信息。这使得 Self-Attention 成为了处理序列数据的强大工具被广泛用于自然语言处理和其他领域的任务。 如图所示X 是嵌入了 Positional Encoding 的 Input Embedding每一行都是一个词向量WQ、WK、WV 分别是用于计算 Query、Keys、Values 的权值矩阵Q、K、V 分别是 Input Embedding 与权值矩阵计算所得的 Query、Keys、Values 向量用于计算 Attention 值。
3. Cross-Attention 机制
Cross-Attention交叉注意力机制是 Attention 机制的一种扩展它主要应用于 处理两个不同序列之间的关系使得模型能够对一个序列中的元素关注另一个序列中的相关部分从而更好地捕捉两个序列之间的关联信息。
Cross-Attention 机制的引入使得模型能够在处理两个序列时动态地关注源序列的不同部分从而更好地理解源序列与目标序列之间的关系。这在处理序列对之间的任务时非常有用比如在问答、机器翻译等任务中。
Transformer 的 Decoder 部分使用 Cross-Attention 机制来处理输入序列和输出序列之间的关系。具体来说Decoder 在生成目标序列的每个位置时能够动态地关注输入序列的不同部分更好地对应输入和输出之间的对应关系尤其在翻译等任务中效果显著。
4. Multi-Head Attention
Multi-Head Attention 是 Transformer 模型中的一种注意力机制它是对单一 Attention 头的扩展。通过使用多个独立的 Attention 头模型能够并行地学习不同的关注权重从而更好地捕捉序列中的不同关系。这有助于提高模型的表达能力和学习复杂关系的能力。
Multi-Head Attention 使用多个独立的 Attention 头对于每个Attention头学习三个线性变换分别用于生成各自的 Query、Key 和 Value然后使用每个头的 Query、Key 和 Value 并行计算关联度和权重再将多个头的输出拼接在一起以增加模型对不同关系和特征的表达能力最后将拼接后的输出通过线性变换生成最终的 Multi-Head Attention 的输出。
通过使用多个 Attention 头模型能够学习到数据不同方面的表示从而更全面地捕捉序列中的关系。这种多头机制在提高模型的性能、泛化能力和处理复杂任务方面都发挥了重要作用。
5. 位置编码
位置编码 (Positional Encoding) 2 是为了在 Transformer 等无法处理序列顺序信息的模型中引入位置信息而设计的一种技术。由于 Transformer 没有像循环神经网络 RNN 那样的内在顺序感知因此位置编码的目的是为模型提供有关输入序列中元素位置的信息。
位置编码的一种常见形式是通过将位置信息嵌入到输入向量中来实现这个向量的设计通常基于三角函数或正弦余弦函数以确保模型能够学到有关序列位置的有用信息。以正弦余弦函数为例对 Input Embedding 中每个位于 p o s pos pos 的字符和字符中的位置 i i i位置编码的计算方式如下 3 PE ( p o s , 2 i ) sin ( p o s 10000 2 i / d ) PE ( p o s , 2 i 1 ) cos ( p o s 10000 2 i / d ) \text{PE}(pos, 2i) \sin\left(\frac{pos}{{10000}^{2i/d}}\right)\\ \text{PE}(pos, 2i1) \cos\left(\frac{pos}{{10000}^{2i/d}}\right) PE(pos,2i)sin(100002i/dpos)PE(pos,2i1)cos(100002i/dpos) 其中 PE \text{PE} PE 是位置编码 p o s pos pos 是当前字符在输入文本中的位置 i i i 是当前字符编码某一位置的索引 d d d 是 Input Embedding 中每个字符编码的维度。这种位置编码的设计允许模型在不同位置和不同维度上学到有关位置的信息。
在训练过程中这些位置编码与输入嵌入相加从而将位置信息引入模型。位置编码的选择是可学习的因此模型可以根据任务学到最适合的位置表示。通过引入位置编码Transformer 能够更好地处理序列中元素的顺序关系从而更好地捕捉长距离的依赖关系。
二. Transformer
Transformer4 是一种神经网络架构引入了 Self-Attention 机制允许模型同时处理输入序列中的所有位置信息而无需使用循环神经网络或卷积神经网络。Transformer 的核心部分是 Encoder 和 Decoder 块编码器接收一段输入序列进行一系列的自注意力和全连接网络操作并输出一段连续的表示解码器部分接受编码器的输出以及之前解码器的输出生成新的输出。 1. Input Block
Transformer 将输入文本分词然后编码为词向量序列也就是 Input Embedding。词向量可以是 word2vec、GloVe、one-hot 等编码形式不同词向量都具有相同的维度。处理好 Input Embedding 后需要给每个词向量添加位置编码来保留输入文本内部的相对位置信息。以输入文本 “Tom chase Jerry” 为例Input Block 内部如下
Input Embedding 和 Output Embedding 都属于 Input Block只有在训练期间才会接收 Output Embedding 输入进行预测时 Output Embedding 不接受输入。
2. Encoder Block
Encoder Block 由多个 Encoder 堆叠而成每个 Encoder 内部包括 Multi-Head Attention 和 Feed Forward
Multi-Head Attention 就是在 Self-Attention 的基础上使用多组 WQ、WK、WV 得到多组 Query、Keys、Values然后每组分别计算得到一个 Z 矩阵最后进行拼接。
Feed Forward 是一个普通的全连接网络依次做线性、ReLU 非线性等变换。
Multi-Head Attention 和 Feed Forward 后面都加入了 Add 和 Normalize 层Add 层就是在 Z 的基础上添加残差块 X其实就是 Multi-Head Attention 的输入 X防止在深度神经网络训练中发生退化问题Normalize 层用于对输入数据 Normalize 归一化从而加快训练速度、提高训练的稳定性。
3. Decoder Block
Decoder 的输入分训练和预测两种训练时的输入就是已经准备好的 target 数据例如翻译任务中 Encoder 输入Tom chase JerryDecoder 输入 “汤姆追逐杰瑞”预测时的输入则是上一时刻 Transformer 的输出。
Decoder Block 相较于 Encoder Block 只增加了 Masked Multi-Head Attention Masked Multi-Head Attention 就是在 Multi-Head Attention 的基础上多加了一个 mask 码对部分值进行掩盖使其在参数更新时不产生效果。
4. Output Block
Output Block 结构简单先经过一次线性变换然后 Softmax 就可以得到输出的概率分布。 史上最小白之Attention详解 ↩︎ transformer学习笔记Positional Encoding位置编码 ↩︎ Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30. ↩︎ 史上最小白之Transformer详解 ↩︎