精华内容
下载资源
问答
  • BERT 缺点: 优点: 1、考虑双向信息(上下文信息) 2、Long term dependency 缺点: 1、测试数据没有masked,训练和测试数据不匹配 2、缺乏生成能力 3、针对每个mask预测时,没有考虑相关性。类似朴素贝叶斯 ...

    BERT 的优缺点:

    优点:

    • 1、考虑双向信息(上下文信息)
    • 2、Long term dependency
      缺点:
    • 1、测试数据没有masked,训练和测试数据不匹配
    • 2、缺乏生成能力
    • 3、针对每个mask预测时,没有考虑相关性。类似朴素贝叶斯

    Auto-regressive LM 的优缺点:经典的Language mode

    从左到右的语言模型
    优点:

    • 1、具备生成能力
    • 2、考虑了词之间的相关性
    • 3、无监督学习
    • 4、严格的数据表达式
      缺点:
    • 1、单向的
    • 2、离得近的单词未必有关系
    • 3、看不到很远的单词

    ELMO

    单向 LSTM x2

    XLNet的改进思路:

    根据bert和lm的缺点,改进的点

    • 具备生成能力
    • 双向学习能力
    • 不出现discrepancy

    LM+NADE:使得语言模型具备双向的能力
    Transformer-XL:使得模型具备对于不固定长度的seq学习的能力

    LM的目标函数

    在这里插入图片描述
    对于第t个单词,使用前t-1个单词去预测第t个单词产生的概率

    使用了softmax

    BERT的目标函数

    给定unmasked词,预测masked部分的词

    在这里插入图片描述

    Question: LM 如何改造成考虑到上下文(左边/右边)

    引入 permutation language model

    不关心变量的顺序,对每个变量做排列组合,统计所有单词可能产生的语序。

    当考虑了所有可能性考虑的时候,相当于考虑到了w3之外的所有单词

    把w3放在不同位置,再对每一个情况,把w1、w2和w4排列组合:
    考虑了4!=24个语言模型

    在这里插入图片描述

    使用permutation 的 LM 的目标函数:
    在这里插入图片描述
    取得是所有排列组合集合的期望。

    对于每一种情况的w的位置t,每一次也只考虑t前面的单词。

    对于在一个seq的某个位置预测一个词,目标:找到一个词,使得它在seq中经过所有排列组合后的概率的期望值最大。

    • 因为n!的模型数量太多,所以需要采样
    • predict last few tokens

    在这里插入图片描述
    在这里插入图片描述
    输入的顺序不变,通过mask矩阵实现n!的language model 类型

    Transformer-XL

    对于时序类模型优缺点的分析:

    1)Transformer的缺点?

    没有考虑语序:通过加入position embedding 解决
    计算量大,参数量大,每一个encoder都需要保存q,k,v计算的矩阵信息。在bp中还需要使用这些参数。out of memory error

    如何解决?:

    把很长的文本的内容拆成多个模块,很多segments。
    在这里插入图片描述
    step 1: 将长的sequence拆分成很多小的sequence
    step 2: 循环输入这些segements

    问题:分割后的segment无法拼在一起

    解决:将每个segment作为RNN每个时刻的输入,每个RNNcell 都是一个处理segment的transformer

    在这里插入图片描述
    但是,与传统RNN不同的是,对于memory的传递并非是参与乘以一个memory的weight,而是直接使用concatenation

    在这里插入图片描述
    在这里插入图片描述

    Scoring matrix,单词与其他词之间的相关性。

    在这里插入图片描述

    如何让t+1时刻获得t-1时刻的信息?

    concate more segments for inputs of each RNNCell

    在这里插入图片描述

    a:i和j单词之间的相关性
    b:i和j位置之间的相关性
    c:i单词和j位置之间的相关性,根据第i个单词的embedding和j单词的位置信息。
    d:i位置和j单词的相关性。

    如何将position encoding从绝对的位置关系,转变为相对位置关系

    即,不在乎具体的位置,只考虑位置之间的关系。

    改造后:使用相对位置信息,并对k进行改造。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    加入一个对于当前单词位置的参数ztz_t

    展开全文
  • Transformer

    万次阅读 2018-06-30 09:47:19
    强烈推荐:...对Transformerself-attention(multi-head), positional encoding这些concepts有一个基本认识。 缺点:具体细节仍需要进一步阅读其他资料。 更进一步: 未完…...

    强烈推荐:https://jalammar.github.io/illustrated-transformer/
    特点: 简单明了,清晰易懂。对Transformer里的self-attention(multi-head), positional encoding这些concepts有一个基本的认识。
    缺点:具体细节仍需要进一步阅读其他资料。

    不喜欢阅读英文的同学,可以看下这个很棒的中文资料:https://kexue.fm/archives/4765
    优点: 有写者自己更多的思考、分析。可以帮助读者对Transformer里的模块有更深刻的认识。我要为写者点赞!

    https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/
    此链接对seq2seq模型里的注意力进行了可视化解释

    Transformer由encoding component和decoding component组成,encoding component由6个堆叠的Encoder组成,decoding component是6个堆叠的Decoder组成。
    每一个Encoder有两个部分:self-attention + feed forward neural network
    每一个Decoder有三个部分:self-attention + encoder-decoder attention + feed forward

    关键的一点是,同RNN的输出一样,每个时刻都会输出一个向量表示。因此对每一个位置,都会进行self-attention以及feed forward nn。上面提到6个堆叠的Encoder,同样和堆叠RNN一样,把上一层每个时刻的输出作为当层每一时刻的输入。

    在self-attention中,每个位置有其对应的Query vector, Key vector, Value vector。三个向量是通过矩阵运算得到的。
    x1×WQ=q1 x_1 × W_Q = q_1
    x1×WK=k1 x_1 × W_K = k_1
    x1×WV=v1 x_1 × W_V = v_1
    接下来,使用q1q_1分别和k1,k2,k3....k_1,k_2, k_3....计算得分, 分数除以8,然后softmax,最后对v1,v2,v3...v_1,v_2,v_3...加权求和得到第一个位置的输出。

    多头自注意力就是使用多个不同的WK,WQ,WVW_K, W_Q, W_V矩阵。将结果拼接起来,再经过矩阵变换。

    上述的模型没有考虑单词的顺序信息,而在NLP任务中,顺序是很重要的信息。因此谷歌提出了position embedding并将其作用在输入端。

    在Decoder部分,不同于Encoder的是加了Encoder-Decoder-Attention部分,这里将最顶层Encoder部分的输出作为Key, Value,Decoder部分作为Query。具体计算方式不变。

    展开全文
  • NLP中的Transformer 简介

    2020-07-24 20:58:58
    作者|Renu Khandelwal 编译|VK 来源|Towards Data Science 在这篇文章中,我们将讨论以下有关Transformer的问题 为什么我们需要Transformer,Sequence2Sequence模型...Sequence2Sequence (Seq2Seq)的缺点 顺序计算:

    作者|Renu Khandelwal 编译|VK 来源|Towards Data Science

    在这篇文章中,我们将讨论以下有关Transformer的问题

    • 为什么我们需要Transformer,Sequence2Sequence模型的挑战是什么?
    • 详细介绍了Transformer及其架构
    • 深入研究Transformer中使用的术语,如位置编码、自注意力、多头注意力、掩码多头注意力
    • 可以使用Transformer的NLP任务

    Sequence2Sequence (Seq2Seq)的缺点

    • 顺序计算:在Seq2Seq中,我们以顺序的方式在每个步骤中向编码器输入一个单词,以便在解码器中每次生成一个单词的输出。在Seq2Seq架构中我们做不到通过并行化操作来提高计算效率。

    • 长期依赖关系:长期依赖关系是Seq2Seq的一个问题,这是由于需要为长句执行大量操作造成的,如下所示。

    这里的“it”指的是“Coronavirus”还是“countries”?。

    让我们深入了解Transformer的体系结构和Transformer的关键概念,以了解Transformer如何应对这些挑战

    Transformer架构

    Transformer有6个编码器和6个解码器,不像Seq2Seq,该编码器包含两个子层:多头自注意层和一个全连接层。

    该解码器包含三个子层,一个多头自注意层,一个能够执行编码器输出的多头自注意的附加层,以及一个全连接层。

    编码器和解码器中的每个子层都有一个残差连接,然后进行layer normalization(层标准化)。

    编码器和解码器的输入

    所有编码器/解码器的输入和输出标记都使用学习过的嵌入转换成向量。然后将这些输入嵌入传入进行位置编码。

    位置编码

    Transformer的架构不包含任何递归或卷积,因此没有词序的概念。输入序列中的所有单词都被输入到网络中,没有特殊的顺序或位置,因为它们都同时流经编码器和解码器堆栈。

    要理解一个句子的意思,理解单词的位置和顺序是很重要的。

    位置编码被添加到模型中,以帮助注入关于句子中单词的相对或绝对位置的信息

    位置编码与输入嵌入具有相同的维数,因此可以将二者相加。

    自注意(self attention)

    注意力是为了更好地理解句子中单词的含义和上下文。

    自注意,有时也称为内注意,是一种将单个序列的不同位置联系起来以计算序列表示的注意力机制

    一个自注意层用一个常数数量的连续执行的操作连接所有的位置,因此比重复的层更快

    Transformer中的注意函数被描述为将查询和一组键值对映射到输出。查询、键和值都是向量。注意力权值是通过计算句子中每个单词的点积注意力来计算的。最后的分数是这些值的加权和。

    让我们用一句话来理解:“I enjoy nature.。”

    输入是查询、键和值。向量的维数是64,因为这导致了更稳定的梯度。

    步骤1:点积

    取查询和句子中每个单词的键的点积。点积决定了谁更关注输入句子中的其他单词。

    步骤2:缩放

    通过除以键向量维数的平方根来缩放点积。大小是64;因此,我们将点积除以8。

    步骤3:使用softmax

    Softmax使比例值归一。应用Softmax后,所有值均为正,加起来为1

    步骤4:计算各值的加权和

    我们应用归一后的分数和值向量之间的点积,然后计算总和

    自注意的完整公式

    对句子中的每个单词重复这些步骤。

    多头注意

    Transformer使用多个注意力头,而不是单一的注意力函数,即由实际的单词本身来控制注意力。

    每个注意头都有一个不同的线性变换应用于相同的输入表示。该Transformer使用8个不同的注意头,这些注意头是并行独立计算的。有了8个不同的注意头,我们就有了8个不同的查询、键和值集,还有8个编码器和解码器集,每个集都是随机初始化的

    “多头注意力允许模型在不同的位置共同关注来自不同表示子空间的信息。”

    在一个多头注意头中,输入表示的每一部分都与输入表示的其他部分进行交互,以获得更好的含义和上下文。当多头注意力在不同的位置观察不同的表示子空间时,它也有助于学习长期的依赖关系。

    利用多头注意,我们得知上面句子中的“it”指的是“Coronavirus”。

    掩码多头注意

    解码器对多头注意力进行掩码,在此掩蔽或阻止了解码器对未来步骤的输入。在训练过程中,解码器的多头注意力隐藏了未来的解码器输入。

    在机器翻译任务中,使用Transformer将一个句子“I enjoy nature”从英语翻译成印地语,解码器将考虑所有输入的单词“I, enjoy, nature”来预测第一个单词。

    下表显示了解码器将如何阻止来自未来步骤的输入

    编码器和解码器中的每个子层都有一个残差连接,然后进行层标准化。

    残差连接和层标准化

    残差连接是“跳过连接”,允许梯度通过网络而不通过非线性激活函数。残差连接有助于避免消失或爆炸的梯度问题。为了使剩余的连接起作用,模型中每个子层的输出应该是相同的。Transformer中的所有子层,产生维度大小512的输出。

    层标准化:对每个特征的输入进层标准化,并且与其他示例无关,如下所示。层标准化减少了前馈神经网络的训练时间。在层标准化中,我们在一个单一的训练案例中,计算所有层神经元的累加输入的平均值和方差。

    全连接层

    Transformer中的编码器和解码器都有一个全连接网络,它有两个线性变换,其中包含一个ReLU激活。

    线性和softmax的解码器

    译码器的最后一层利用线性变换和softmax函数对译码器输出进行转换,预测输出的概率

    Transformer的特点

    利用Transformer解决了seq2seq模型的不足

    • 并行计算:Transformer的体系结构去掉了Seq2Seq模型中使用的自回归模型,完全依赖于自注意来理解输入和输出之间的全局依赖关系。自注意极大地帮助并行化计算

    • 减少操作次数:Transformer的操作次数是恒定的,因为在多头注意中,注意权值是平均的

    • 长依赖关系:影响远程依赖学习的因素是基于信号必须在网络中通过的前向和后向路径的长度。输入和输出序列中任意位置组合之间的路径越短,就越容易学习长期依赖关系。自注意层通过一系列连续执行的操作连接所有位置,学习长期依赖关系。

    由Transformer处理的NLP任务

    • 文本摘要
    • 机器翻译

    结论:

    Transformer有一个简单的网络结构,基于自注意机制,不依赖于递归和卷积完全。计算是并行执行的,使Transformer效率高,需要更少的训练时间

    原文链接:https://towardsdatascience.com/simple-explanation-of-transformers-in-nlp-da1adfc5d64f

    欢迎关注磐创AI博客站: http://panchuang.net/

    sklearn机器学习中文官方文档: http://sklearn123.com/

    欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/

    展开全文
  • Transformer的个人笔记

    2020-08-09 19:58:42
    无论是知乎还是博客上都有很多生动具体的见解,我这里会结合自己阅读论文以及代码实现,对Transformer的一些个人理解和个人思考。 先来看一下这篇论文的摘要 传统的Seq2seq RNN网络存在很明显的缺点: 首先很难像...

    0. 引言

    Google的论文《Attention is all you need》一提出,为nlp的很多任务翻开了新的一页。无论是知乎还是博客上都有很多生动具体的见解,我这里会结合自己阅读论文以及代码实现,对Transformer的一些个人理解和个人思考。

    先来看一下这篇论文的摘要:

    首先在性能上来看,他的提升真的很给力,进行了大幅度的提升,主要提升是在机器翻译任务上。
    最明显的特点是区分CNN/RNN,在前向传播上只使用了Attetion机制来模拟语言模型的一种结构。

    1. 传统的Seq2seq缺点

    RNN网络存在很明显的缺点:

    1. 首先很难像CNN一样并行化处理,这样无法捕捉并行化特征。
    2. 其次很难想CNN一样做的很深,像CNN一样做很多层在RNN中实现效果不好
    3. 长距离依赖问题一直没有得到很好的解决,很难建立指代信息。

    2. Transformer的优点

    我们首先开门见山,说一下Transfomer的优势:

    1. 高度并行化网络,训练速度提升
    2. 层次化信息的捕捉,编码段端或者解码端都可以做到六层,可以做到比较深。(残差网络)
    3. 上下文信息的丰富和引入(self-attention)

    Transformer本质上还是一个seq2seq的模型,由encoder和decoder组成。encoder和decoder都是基于自注意力机制构成的结构(非RNN)。编码器和解码器都是一组编码组件和一组解码组件,原论文中所提出的具体数目是6个

    3. Transformer的流程

    3.1 word embedding + position embedding

    将每个输入的词汇转化成向量,也称为词嵌入/词向量(word embedding),嵌入仅发生在最底部的编码器中。Transformer抛弃了RNN,而RNN最大的优点就是在时间序列上对数据的抽象,所以文章中作者提出两种Positional Encoding的方法,将encoding后的数据与embedding数据求和,加入了相对位置信息。

    3.2 Encoder (Multi-head self-attention + Feed Forward Neural Network)

    对于每个编码器来说,他们的结构均相同(但它们不共享权重)。
    每一层都分为两个子层:
     编码器的输入首先流经自注意力层,该层可以编码出同一个句子中不同词语之间的关系。
     自注意力层的输出之后便是一个简单的全连接神经网络

    Transformer的关键属性:每个位置的单词都流经编码器中自己的路径(计算无先后关系)。所以,运算速度比一般的循环神经网络(RNN)要快很多。

    如何计算自注意力?对于每个单词,创建一个查询向量、键向量和一个值向量,称为QKVQKV

    如何计算自注意力?通过将q向量与各个单词的k向量的乘积来计算分数。分数越高,说明关系越密切。将分数缩小,然后通过softmaxsoftmax计算对应概率。将每个VV向量乘以概率值加权求和,生成向量前馈到神经网络。

    (实际运算中,以矩阵形式运行,加快运算速度)。

    多头机制:论文通过添加一种称为“多头”注意力的机制,进一步完善了自注意力层。扩展了模型专注于不同层面的能力。提供了多个“表示子空间”。在多头机制下,有多组查询/键/值权重矩阵(Transformer使用八个头,因此每个编码器/解码器最终得到八组)。

    3.3 Decoder (Masked Multi-head attention + Encoder-decoder attention + Feed Forward Neural Network)

    解码器:还有encoder和decoder之间的注意力层,来帮助解码器将注意力放在输入语句的相关部分上(类似于seq2seq模型中的注意力)。

    为什么要加masked?因为transformer模型训练的时候,直接把ground truth整个序列作为decoder端的输入。

    编码器,解码器如何协同工作?
    编码器首先处理输入序列。顶部编码器的输出转换为注意力向量K和V的集合。每个解码器将在其“编码器-解码器注意”层中使用它们,这有助于解码器将注意力集中在输入序列中的适当位置。(解码器结构:自注意力+编码器-解码器注意+前馈层)

    在这里插入图片描述

    解码器中的自注意力层与编码器中的自注意力层的不同:掩码:在解码器中,仅允许自注意力层参与输出序列中的较早位置;“编码器-解码器注意”层的工作方式与多头自注意力类似,不同之处在于它从编码器的输出中获取键和值矩阵(context)

    3.4 Linear & SoftMax

    在这里插入图片描述

    最终的线性层和Softmax层(词典大小的多分类)。

    4 Self-ATT常见问题和BERT 常见问题

    以后面试的时候会整理(WX收藏夹)

    展开全文
  • 之前讲Transformer的时候,也提到过它的通用性的缺点。相比于RNN,Transformer不是图灵完备的,虽然大多数任务都是吊打RNN,但在某些看起来极为简单的任务上,却表现很差,比如字符串拷贝等。这个问题其实也不算大,...
  • 有助于保持模型深层的稳定性 位置编码 缺陷及优点 缺陷 计算量太大,self.attention的复杂度是n的2次方,解决办法:set transformer的的attention因式分解,先投影到低维空间,由低维空间和自己算attention,然后再...
  • 图解transformer

    2020-06-03 22:22:33
    一、什么是transformer transformer是目前最流行特征抽取...而transformer很好弥补了这两个缺点transformer并行速度极快,而且transformer每个词之间词间距都是1。 因此奠定了transformer是目前最流行
  • Transformer介绍

    千次阅读 2020-02-18 23:31:44
    而BERT取得成功的一个关键因素是Transformer的强大作用。Transformer模型最早的介绍来自谷歌的paper——《Attention is all you need》,最早是用于机器翻译任务,当时达到了STOA效果。Transformer改进了RNN最被人诟...
  • Transformer理解

    2019-07-07 12:13:38
    Transformer,是google, 2017年提出的一个特征提取模型,最近大火的Bert就是构建在Transformer的基础 上的,所以我们有必要深入学习一下。下面是我通过阅读原论文、博客资料,得到的一些理解 背景 在Transformer未...
  • Transformer 模型

    2020-12-01 21:13:20
    转载:BERT大火却不懂Transformer?读这一篇就够了 大数据文摘与百度NLP联合出品 编译:张驰、毅航、Conrad、龙心尘 ...Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Tr.
  • 本文来自于segmentfault,文章介绍了Transformer的整体结构、attention计算过程等相关内容。上图是经典的双向RNN模型,我们知道该模型是通过递归的方式运行,虽然适合对序列数据建模,但是缺点也很明显“它无法并行...
  • Transformer结构

    2019-02-21 19:17:26
    Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。在本文中,我们将研究Transformer模型,把...
  • Transformer笔记

    2018-11-23 17:28:25
    强烈推荐:...对Transformerself-attention(multi-head), positional encoding这些concepts有一个基本认识。 缺点:具体细节仍需要进一步阅读其他资料。 Transformer由encoding compo...
  • Transformer学习

    2020-04-06 13:21:58
    本课程根据李宏毅2020课程中的Transformer章节进行学习 对视频学习过程进行记录 ...a为输入层,b为输出层,但是这种使用RNN的结构有一个很大的缺点,就是不能够平行化(所谓的平行化就是,RNN在处...
  • transformer模型详解

    2021-02-24 12:33:54
    综合分析了现有主流nlp翻译模型即基于CNN可并行对其文本翻译和基于RNNLSTM门控长短期记忆时序翻译模型,总结了两个模型缺点并在此基础上提出了基于自注意力机制翻译模型transformertransformer...
  • BERTand transformer.pptx

    2020-04-13 21:40:15
    台湾大学李宏毅老师的bert...Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。 ppt的23页是视频
  • NLP - Transformer

    2021-04-07 14:39:26
    文章目录Transformer传统网络的缺点Transformer 结构Self-attention如何计算 self-attentionattention 整体计算流程multi-headed 多头机制multi-headed 结果堆叠多层位置信息表达残差连接归一化Decoder 端mask 机制...
  • Transformer讲解以及在CV领域应用

    千次阅读 多人点赞 2021-01-10 14:47:24
    文章目录Transformer一、思想和框图二、实现细节2.1 Encoder2.2 Decoder2.3 Self-Attention2.4 Multi-Headed Attention2.5 Positional Encoding2.6 Layer normalization三、应用任务和结果3.1 NLP领域3.2 CV领域...
  • 讲了近些年来,端到端语音识别性能方面取得了重大改进,但缺点是不适应与边缘设备上嵌入式使用。在本文中,我们在基于简化和压缩的Transformer模型上进行语音识别,本文通过调查抛弃特定模块影响来引入更加紧凑...
  • 为什么要有Transformer1.1 传统RNN-Based Model的缺点(1)不支持并行,效率低(2) 记忆能力有限1.2 Attention方法的出现2.Transformer的原理与结构Transformer的Attention——Self-Attention 1.为什么要有Transformer ...
  • RoI Transformer 精读

    千次阅读 2020-08-02 10:06:23
    这种通过生成大量旋转框的方法最主要的缺点是冗余计算导致检测速度很慢。 本文主要内容 本文提出RoI Transformer来解决此问题。RoI Transformer 是一个三阶段检测模型,主要由RRoI Leaner和RRoI Wraping两部分组成,...
  • transformer笔记

    2020-03-09 21:05:31
    来自李宏毅老师课程笔记,...RNN: 优点:可以获取全局信息 缺点:不能并行计算 CNN: 优点:GPU并行计算 缺点:bigram仅能观察到本地信息 self-attention层: x1: input sequence item a1: item embedding q1...
  • 主要缺点是训练时间长,这是由于其不平行性质。 但是我认为我可以将其构建为对该工作线进一步探索和研究。 我还随意添加了一些增强功能,包括预规范化,GLU门控前馈以及简化T5相对位置嵌入。 安装 $ pip ...
  • Transformer模型总结

    2019-03-28 15:01:00
    Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。 它是由编码组件、解码组件和它们之间的连接组成。 编码组件部分由一堆编码器(6个 encoder)构成。解码组件部分也是由...
  • transformer、bert网络

    2019-09-17 11:21:59
    1、传统缺点:seq2seq使用循环网络固有顺序特性阻碍样本训练并行化,这在更长序列长度上变得至关重要,因为有限内 存限制样本批次大小;传统seq2seq 处理时刻数 0-50,bert可以处理 几百个时刻长度...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 129
精华内容 51
关键字:

transformer的缺点