Attention is all your need


Source:https://arxiv.org/pdf/1706.03762.pdf

Expanding knowledge

1.RNN(Recurrent Neural Network)循环神经网络:为了能更好的处理前后相关的sequence信息提出了RNN。假设该网络在输入为xt,隐藏层为st,输出为ot,前提下,st的值不仅取决于xt,还取决于st-1

提出RNN的原因是CNN和人工翻译都假设输入输出的相互独立的,但RNN可以解决输入输出不独立的情况,将神经网络加入记忆。再使用激活函数进行非线性映射过滤无用的信息,只记住重要的信息,使用softmax来进行预测下一个词出现的概率,预测时要带权重矩阵。

[^与CNN相同,RNN每个cell都共享(U,V,W),极大降低计算量]:

双向RNN是在RNN的基础上预测当前状态需要考虑前后的信息。

2.CNN(Conventional Neural Network)卷积神经网络

3.LSTM长短时记忆(Long Short Time Memory):

1.处理和预测时间序列中间隔和延迟相对较长的重要事件(在词汇预测中如果关联词相差较远,RNN就会出现“梯度消失”的问题

2.三种门:遗忘门(丢弃的信息)、输入门(新加入的信息)、输出门(输出的信息)

attention机制

与RNN,CNN不同,完全采用的是attention机制,具有更强的的并行性、节约了训练的时间

Abstract

seq翻译模型主要基于复杂的recurrent or convolution 神经网络,它包括一个解码器一个编码器,表现最好的模型也通过注意力机制连接了解码编码器。

S:Transformer仅仅基于注意力机制,与CNN,RNN均无关,发现Transformer具有更好的并行性,使用了更少的时间去训练。

C:28.4BLEU on WMT2014 English-to-German translation task,我们发现Transformer也可很好的推广到其他任务,like English constituency parsing both with large and limited training data.

Introduction

Recurrent model通常沿着输入输出的标记位置进行计算,将position与当前时间对齐生成隐藏状态ht,作为ht-1的函数以及position t的输入,对于长序列的处理至关重要,因为内存有限制,最近通过factorization tricks and conditional computation提高了计算效率,后者提高了模型的表现,但顺序计算的限制依旧存在。

Background

基础是Extended Neural GPU,ByteNet,ConvS2S,它们中两个词汇之间的依赖关系与两者之间的距离反相关,这样如果两个词汇的距离太远它们的依赖性就很难体现。Transformer模型针对这种缺陷提出了Multi-Head Attention,Transformer模型没有使用RNN,CNN,它全部使用了attention机制对整个机制进行监控。

Model Architecture

image-20200716234419464

Encoder: 6 identical layers,Each layer has 2 sub-layers.One is Multi-Head Attenion,The other is a feed-forward network.Between the two sub-layers,there is a residual connection followed by layer normalization(dmodel=512).output is **
$$
LayerNorm(x+Sublater(x))
$$
**Decoder:compared with encoder,the decoder has 3 sub-layers,the 3rd layer perform multi-head attention over the output of the encoder stack.The attention ensures the prediction for position i depend only on the pre-position.

basic knowledge

  1. Embedding:引用one-hot方法词向量会很高维而且稀疏,使用Emedding更能找出词向量的相似性,这样就可以进行降维操作。计算嵌入矩阵前首先确定潜在因子,将个别单词用潜在因子组成的向量进行表示,其他单词可以用矩阵中向量的索引表示,探索具有相似性的词语,利用降维技术对词语进行相似性可视化。

  2. positional encoding

    对位置不敏感的模型(模型的输出不随着文本数据顺序的改变而改变)分为两类,Sinusoidal Positional Encoding(相对)和Learned Positional Encoding.(绝对)

    [^绝对是对不同位置随机初始化一个position embedding,相对位置向量:用正余弦函数分别表示绝对位置,然后用乘积表示绝对位置,complex embedding使用复数域上连续函数来编码词在不同位置的表示]:

  3. AR模型(Auto-regressive)and MA(Moving-average)模型

    • AR自回归模型

    [^本身前面的数据影响后面的数据(自相关),ut表示白噪声,在时间序列中数值随机波动,θ自回归系数]:

    • MA移动平均模型

      image-20201008110842915

    [^对时间序列的白噪声序列进行加权和,得到移动平均方程]:

Attention

the output is computed as a weighted sum of th values,where the weight assigned to each value is computed by a function of query with the corrsponding key.

1 Transformer 模型直观认识

首先来说一下transformer和LSTM的最大区别, 就是LSTM的训练是迭代的, 是一个接一个字的来, 当前这个字过完LSTM单元, 才可以进下一个字, 而transformer的训练是并行的, 就是所有字是全部同时训练的, 这样就大大加快了计算效率, transformer使用了位置嵌入 (𝑝𝑜𝑠𝑖𝑡𝑖𝑜𝑛𝑎𝑙 𝑒𝑛𝑐𝑜𝑑𝑖𝑛𝑔) 来理解语言的顺序, 使用自注意力机制和全连接层来进行计算, 这些后面都会详细讲解.

transformer模型主要分为两大部分, 分别是编码器和解码器, 编码器负责把自然语言序列映射成为隐藏层(下图中第2步用九宫格比喻的部分), 含有自然语言序列的数学表达. 然后解码器把隐藏层再映射为自然语言序列, 从而使我们可以解决各种问题, 如情感分类, 命名实体识别, 语义关系抽取, 摘要生成, 机器翻译等等, 下面我们以机器翻译为例简单说一下下图的每一步都做了什么:

  1. 输入自然语言序列到编码器: Why do we work?(为什么要工作);
  2. 编码器输出到隐藏层, 再输入到解码器;
  3. 输入 <𝑠𝑡𝑎𝑟𝑡> (起始)符号到解码器;
  4. 得到第一个字”为”;
  5. 将得到的第一个字”为”落下来再输入到解码器;
  6. 得到第二个字”什”;
  7. 将得到的第二字再落下来, 直到解码器输出 <𝑒𝑛𝑑> (终止符), 即序列生成完成

2 Transformer Block结构图

在这里插入图片描述
编码器的输入X是一个自然语言序列,它的维度是[batch size,sequence length],batch size是一次训练句子的个数,sequence length是句子的长度。它通过查阅字向量表或者其他方式得到每个字embedding dimension维的嵌入向量。

上面是一个transformer block,实际网络中可以堆叠多个block。

我们通过编码器输出的X h i d d e n X_{hidden}X*hidde*n就是隐藏层,下面详细介绍每个模块。

2.1 𝑝𝑜𝑠𝑖𝑡𝑖𝑜𝑛𝑎𝑙 𝑒𝑛𝑐𝑜𝑑𝑖𝑛𝑔

加position encoding是因为trandformer与LSTM不同,不是循环生成的

由于transformer模型没有循环神经网络的迭代操作, 所以我们必须提供每个字的位置信息给transformer, 才能识别出语言中的顺序关系.

注意, 我们一般以字为单位训练transformer模型, 数的线性变换来提供给模型位置信息:
位置嵌入在e m b e d d i n g d i m e n s i o n embedding \ dimension*e\m*b*e*d*d*i*n*g\ *d*i*m*e*n*s*i*o*n*维度上随着维度序号增大, 周期变化会越来越慢**, .
在这里插入图片描述
在这里插入图片描述

2.2 𝑠𝑒𝑙𝑓 𝑎𝑡𝑡𝑒𝑛𝑡𝑖𝑜𝑛 𝑚𝑒𝑐ℎ𝑎𝑛𝑖𝑠𝑚

image-20201026162217543

Attention Mask

自己总结的图

BERT

BERT(Bidirectional Encoder Representations from Transformers)

Reference

1.https://blog.csdn.net/FrankieHello/article/details/80883147?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

2.

https://blog.csdn.net/qq_39521554/article/details/79337929?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

3.https://blog.csdn.net/qq_35799003/article/details/84780289

4.https://blog.csdn.net/qq_39422642/article/details/78676567

5.https://www.bilibili.com/video/BV1Mt411J734
https://github.com/aespresso/a_journey_into_math_of_ml


Author: Weiruohe
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Weiruohe !
 Previous
pytorch official code pytorch official code
1.numpy[^numpy提供n维数组对象,是科学计算的通用框架,不涉及图,深度学习、梯度。但可借助网络手动实现向前向后传递。]: # -*- coding: utf-8 -*- import numpy as np # N is b
2020-07-20
Next 
MRC for NER MRC for NER
titleA Unified MRC Framework for Named Entity Recognition Abstract:The task of named entity recognition (NER) is normal
  TOC