读懂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层的输出(对于第一个单词)。

<math xmlns="http://www.w3.org/1998/Math/MathML"> 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 </math>Attention=softmax(Q∗K/Dk½)∗V

Muti-Attention

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

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

Positional Enconding

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

...未完待续

相关推荐
丫头,冲鸭!!!1 分钟前
B树(B-Tree)和B+树(B+ Tree)
笔记·算法
Re.不晚6 分钟前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
为什么这亚子1 小时前
九、Go语言快速入门之map
运维·开发语言·后端·算法·云原生·golang·云计算
1 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
~yY…s<#>1 小时前
【刷题17】最小栈、栈的压入弹出、逆波兰表达式
c语言·数据结构·c++·算法·leetcode
幸运超级加倍~2 小时前
软件设计师-上午题-16 算法(4-5分)
笔记·算法
yannan201903132 小时前
【算法】(Python)动态规划
python·算法·动态规划
埃菲尔铁塔_CV算法2 小时前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR2 小时前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
linsa_pursuer2 小时前
快乐数算法
算法·leetcode·职场和发展