读懂Transformer(Attention Is All You Need)

Transformer 模型是一种自然语言处理模型,它通过在序列上进行转换来完成任务,例如翻译、问答、摘要、分类等。这类模型通常使用注意力机制来聚焦输入序列中的特定单词或短语,从而更好地理解和处理文本。

Transformer模型在《Attention is all you need》论文中提出这篇论文主要亮点在于:

  • 1、不同于以往主流机器翻译使用基于RNN的seq2seq模型框架,该论文用attention机制代替了RNN搭建了整个模型框架。
  • 2、提出了多头注意力(Multi-headed attention)机制方法,在编码器和解码器中大量的使用了多头自注意力机制(Multi-headed self-attention)。
  • 3、在WMT2014语料中的英德和英法任务上取得了先进结果,并且训练速度比主流模型更快。

我们先把Transformer想象成一个黑匣子,在机器翻译的领域中,这个黑匣子的功能就是输入一种语言然后将它翻译成其他语言。如下图:

实际上Transformer是由两部分构成分别是编码器和解码器,在整个模型中,编码器由6个block组成,解码器由6个block组成。编码器的输出则作为解码器的输入。

Transformer结构

Transformer的整体结构

Attention

Attention模型并不只是盲目地将输出的第一个单词与输入的第一个词对齐。Attention机制的本质来自于人类视觉注意力机制。人们在看东西的时候一般不会从到头看到尾全部都看,往往只会根据需求观察注意特定的一部分,就是一种权重参数的分配机制,目标是协助模型捕捉重要信息。即给定一组<key,value>,以及一个目标(查询)向量query,attention机制就是通过计算query与每一组key的相似性,得到每个key的权重系数,再通过对value加权求和,得到最终attention数值。

Self-Attention

Self-Attention,这是Transformer的核心内容,主要目的是计算query与Key之间的相似度,为每个输入的向量学习一个权重。具体流程如下图所示:

  1. 如上文,将输入单词转化成嵌入向量;

  2. 根据嵌入向量得到 q ,k,v 三个向量;

  3. 为每个向量计算一个score: score=q*k ;

  4. 为了梯度的稳定,Transformer使用了score归一化,即除以 sqrt(dk)=8 (论文中使用key向量的维度是64维,其平方根=8,这样可以使得训练过程中具有更稳定的梯度。);

  5. 对score施以softmax激活函数,使得最后的列表和为1;这个softmax的分数决定了当前单词在每个句子中每个单词位置的表示程度。很明显,当前单词对应句子中此单词所在位置的softmax的分数最高,但是,有时候attention机制也能关注到此单词外的其他单词,这很有用。

  6. softmax点乘Value值 v ,得到加权的每个输入向量的评分 v ;相当于保存对当前词的关注度不变的情况下,降低对不相关词的关注。

  7. 相加之后得到最终的输出结果;这会在此位置产生self-attention层的输出(对于第一个单词)。

A t t e n t i o n = s o f t m a x ( Q ∗ K / D k ½) ∗ V Attention = softmax(Q * K /Dk ½) * V Attention=softmax(Q∗K/Dk½)∗V

Muti-Attention

Multi-Head Attention相当于 h 个不同的self-attention的集成(ensemble)。结构如下图所示:

唯一需要注意的是,由于残差链接的特殊需要,这里的输出要保持与输入一样的维度,所以将每个Self-Attention得到的结果按列进行拼接,得到W0。最后进行一层全连接层,将其映射为最终的输出结果Z。

Positional Enconding

在Attention中,对于一个句子中各个词语的顺序不改变计算结果,具体来说,就是词语的顺序并不能影响Attention的计算结果,这与我们所理解的翻译不符,所以需要一个绝对的位置信息,来表示单词在句子中的位置,其具体计算公式如下:

...未完待续

相关推荐
INGNIGHT2 小时前
270 · 电话号码的字母组合II(Trie)
linux·算法
2401_839080542 小时前
C++常见八股
数据结构·c++·算法
青山是哪个青山3 小时前
LeetCode 188:买卖股票的最佳时机 IV
算法
mikuyyds3 小时前
geo-toolbox 插件算法解析:RUSLE 与 MUSLE 的工程化落地
算法·rust·gis
a187927218313 小时前
【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流
算法·leetcode·二叉树··bfs·算法讲解·树遍历
syagain_zsx3 小时前
算法基础篇 · 03 枚举(C++ 题解)
c++·算法·二进制·枚举
weixin_307779134 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
我是章汕呐5 小时前
地级市能源消耗量及消耗强度数据【2006-2023年】平衡面板
人工智能·经验分享·算法·回归
charliejohn5 小时前
计算机考研 408 数据结构 堆的插入与删除 堆排序
算法
老鱼说AI5 小时前
从点积到希尔伯特空间:向量内积的几何本质与大模型相似度度量
人工智能·深度学习·线性代数·算法·机器学习·数学建模