Transformer学习笔记

0.引言

        在深入学习Transformer之前,先来学习一下这个模型的开篇之作。

        Transformer模型最初是由Vaswani等人于2017年提出,主要应用于机器翻译任务。在机器翻译中,存在着长距离的依赖关系,即一个单词可能与句子中较远位置的单词存在关联。传统的循环神经网络(RNN)和长短时记忆网络(LSTM)在处理这种长距离依赖关系时可能遇到梯度消失或梯度爆炸的问题。

        由于Transformer中引入了自注意力机制,可以同时考虑输入序列中所有的位置信息,而无需依赖于顺序处理,使得其在捕捉长距离依赖关系时有较好的表现效果。故而在之后的发展中在NLP中大显身手。后续学者又将这一模型引入到CV领域中。

1.What is Transformer

        如上图所示为Transformer用于机器翻译时候的结构。可见,Transformer由6个Encoder(编码)和6个Decoder(解码)结构组成。

2.How it runs

输入转化

Transformer 中单词的输入表示 x由单词 Embedding 和位置 Embedding 相加得到。

        1.内容 Embedding

单词的 Embedding 有很多种方式可以获取,例如可以采用 Word2Vec、Glove 等算法预训练得到,也可以在 Transformer 中训练得到。

        2. 位置 Embedding

Transformer 不采用 RNN 的结构,而是使用全局信息,不能利用单词的顺序信息。Transformer 中使用位置 Embedding 保存单词在序列中的相对或绝对位置。位置 Embedding 用 PE表示,PE 的维度与单词 Embedding 是一样的。PE 可以通过训练得到,也可以使用某种公式计算得到。在 Transformer 中采用了后者,计算公式如下:

故而,我们现在可以表述出Transformer的输入形式如下图所示。

输入Encoder

将得到的单词表示向量矩阵传入 Encoder 中,经过 6 个 Encoder block 后可以得到句子所有单词的编码信息矩阵 C。单词向量矩阵用 X(n×d)表示, n 是句子中单词个数,d 是表示向量的维度 (论文中 d=512)。每一个 Encoder block 输出的矩阵维度与输入完全一致。

输入Decoder

将 Encoder 输出的编码信息矩阵 C传递到 Decoder 中,Decoder 依次会根据当前翻译过的单词 1~ i 翻译下一个单词 i+1,如下图所示。在使用的过程中,翻译到单词 i+1 的时候需要通过 Mask (掩盖) 操作遮盖住 i+1 之后的单词。

上Decoder 接收了 Encoder 的编码矩阵 C,然后首先输入一个翻译开始符 "<Begin>",预测第一个单词 "I";然后输入翻译开始符 "<Begin>" 和单词 "I",预测单词 "have",以此类推。

3.What does it contain

self—attention

1.在计算self—attention时候需要用到矩阵 Q(查询), K(键值), V(值)。在实际中,Self-Attention 接收的是输入(单词的表示向量 x组成的矩阵 X) 或者上一个 Encoder block 的输出。而 Q, K, V 正是通过 Self-Attention 的输入进行线性变换得到的。

2.Self-Attention 的输入用矩阵 X进行表示,则可以使用线性变阵矩阵 WQ, WK, WV 计算得到 Q, K, V。计算如下图所示,注意 X, Q, K, V 的每一行都表示一个单词。

3.得到矩阵 Q, K, V之后就可以计算出 Self-Attention 的输出了,计算的公式如下:

公式中计算Q乘以K的转置得到一个n*n的矩阵。表示单词之间的关系程度。

得到 QKT 之后,使用 Softmax 计算每一个单词对于其他单词的 attention 系数,公式中的 Softmax 是对矩阵的每一行进行 Softmax,即每一行的和都变为 1。得到 Softmax 矩阵之后可以和 V相乘,得到最终的输出 Z

Multi-Head Attention

多头自注意力机制其实就是多个self—attention组合而成,

从上图可以看到 Multi-Head Attention 包含多个 Self-Attention 层,首先将输入 X分别传递到 h 个不同的 Self-Attention 中,计算得到 h 个输出矩阵 Z。得到h和输出矩阵后,Multi-Head Attention将所有的Zconcat到一起,然后传入到一个linear层,得到最后的输出Z.

参考文献:

Transformer模型简介 - 知乎

https://zhuanlan.zhihu.com/p/681604237

Transformer模型 - 知乎

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值