Transformer


自注意力模型的问题:

  • 计算自注意力时,没有考虑输入的位置信息,因此无法对序列进行建模
  • 输入向量同时作为计算注意力权重时两个向量以及被加权的向量,导致其不容易学习
  • 只考虑两个输入序列单元之间的关系,无法建模多个输入序列单元之间更复杂的关系
  • 自注意力计算结果互斥,无法同时关注多个输入

就以上问题给出解决方案融合自注意力模型——Transformer

seq2seq

应用

在这里插入图片描述
在这里插入图片描述
各式各样nlp任务都可以用seq2seq来解
(特制化model求解可能效果更好)

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

结构

在这里插入图片描述最经典的模型:Transformer

Transformer

一个seq2seq的model

请添加图片描述

请添加图片描述
Transformer 就是一个 Seq2seq (Sequence-to-sequence) 的模型

原理:encoder+decoder

Attention Is All You Need

请添加图片描述

Encoder

Encoder 要做的事情就是给一排向量,输出一排向量,这可利用多种模型实现,如 CNN, RNN 等。Transformer 中的 Encoder 就是用的 Self-attention。

请添加图片描述

encoder里面分成很多个block,每个block都是输入一排向量输出一排向量
每个block里:vector1先做一次self-attention考虑整个seq的信息后输出一组vector2,然后将此组vector2作为输入投入一个全连接层,然后输出一组vector3,作为一个block的输出
PS:有一种network架构——residual connection将输出a再加上原始输入b作为新的vector a+b;然后再将其经过一个layer-norm得到的output才是全连接层的输入,同样也有residual架构(output+=input)+layer norm——residual network中一个block输出

注:Transformer 的Encoder架构不一定要这么设计,此处为原始论文中的架构设计。
还有其他实现方式在这里插入图片描述

Decoder

autoregressive

请添加图片描述下图中,Multi-head Attention其实就是多个Self-Attention结构的结合1。Decoder相比Encoder,在Multi-Head Attention上还加了一个 “Masked”(Masked Self-attention):decoder是一个一个按顺序产生的,只能考虑左边的信息请添加图片描述目前的Decoder的运行中,机器并不知道什么时候停下来,一直重复操作,如同“词语接龙”:机、器、学、习、惯、… 因此需要增加一个终止符号END来结束执行。请添加图片描述 非自回归 Non-autoregressive (NAT)
请添加图片描述NAT 只需要一次性输入就可以产生整个句子。

Q:如何确定NAT decoder的输出长度?
A1:另外学习出一个分类器,它输入Encoder的input,输出Encoder应该输出的长度
A2:输出一个很长的序列,忽略END标识后的token(如上图)

优点:并行处理,速度快;输出长度可控。
缺点:NAT的表现往往逊色于AT:多模态问题 Multi-modality.

encoder和decoder的连接

请添加图片描述

cross attention 连接encoder和decoder的桥梁,此处有两个输入来自encoder一个来自decoder,此模组运作过程如下图所示
请添加图片描述

训练模型
eg:语音辨识任务,人工标注label
在输入的时候会给Decoder正确答案,这种方式叫做"Teacher Forcing";使用交叉熵对模型进行评估(越小越好)。

请添加图片描述

测试的时候,Decoder会产生错误的输出,但是训练的时候是完全正确的,这种不一致的现象叫做 Exposure Bias4。可以在训练的时候类似“加入扰动”的方式来解决——scheduled sampling(定时采样),这种方式会影响Transformer的并行化。

beam search

在这里插入图片描述有唯一可能确切答案——beam search
需要创造力,不唯一答案——需要一定随机性
在这里插入图片描述

transformer优缺点

优点

  • transformer可以直接建模输入序列单元之间更长距离的依赖关系,对长序列建模能力更强
  • 可以利用GPU等多核计算设备并行计算transformer块内部的自注意力模型,具有更高的训练速度,而RNN需要逐个计算

缺点

  • 参数量过大:每个transformer块中包括了自注意力模型中输入向量的三个角色映射矩阵,多头机制导致相应参数倍增,引入非线性的多层感知器等,整个模型还需要堆叠多层transformer块,参数量成倍扩大

  • 巨大的参数量导致模型训练难度大,尤其是训练数据较小时

    因此为了降低模型训练难度,基于大规模数据的预训练模型应运而生,只有这样才能发挥transformer模型强大的表示能力——bert

模型表示

基于pytorch实现的

[Transformer.ipynb](http://localhost:8888/notebooks/pre-trained model approach NLP/Transformer.ipynb)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值