• 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)

  • 相关阅读:
    关于Redis Lettuce连接池的问题
    18_ue4进阶末日生存游戏开发[创建运行时UI]
    Prometheus Operator 自定义监控添加redis explorer
    系列二十六、idea安装javap -c
    TensorFlow搭建LSTM实现时间序列预测(负荷预测)
    多个PDF怎么合并?这几个方法你该知道
    [更新]ARCGIS之土地耕地占补平衡、进出平衡系统报备坐标txt格式批量导出工具(定制开发版)
    软考信息安全工程师案列分析
    如何用GPT高效地处理文本、文献查阅、PPT编辑、编程、绘图和论文写作?
    B站批量取消关注
  • 原文地址:https://blog.csdn.net/qq_39848541/article/details/127102561